SQL复习资料.docx

上传人:b****8 文档编号:10287089 上传时间:2023-02-09 格式:DOCX 页数:16 大小:198.73KB
下载 相关 举报
SQL复习资料.docx_第1页
第1页 / 共16页
SQL复习资料.docx_第2页
第2页 / 共16页
SQL复习资料.docx_第3页
第3页 / 共16页
SQL复习资料.docx_第4页
第4页 / 共16页
SQL复习资料.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

SQL复习资料.docx

《SQL复习资料.docx》由会员分享,可在线阅读,更多相关《SQL复习资料.docx(16页珍藏版)》请在冰豆网上搜索。

SQL复习资料.docx

SQL复习资料

SQL Server复习

1.数据冗余:

在数据库中存在副本现象。

通常由数据库设计引起,通过分类存储,可以减少冗余,但增加查找复杂性。

2.数据完整性:

指数据库中数据的准确性。

3.系统数据库

●Master

●Tempdb

●Model

●Msdb

4.数据库

一个数据库至少包含一个数据文件(*.mdf)一个日志文件(*.ldf)

5.数据完整性四类约束

●实体完整性

表中每一行数据都反映不同的实体,不能存在相同行。

●域完整性

指给定列的输入有效性。

●引用完整性

在输入或删除数据行时,引用实体完整性用来保持表之间定义的关系。

通过主外键之间的引用关系实现。

●用户自定义完整性

6.主键

表中有一列或多列组合的值能用来唯一地标识表中的每一行这样的一列或多列的组合叫主键。

主键是用来确保表中不存在重复的数据行。

一个表只能有一个主键,也可以不要主键,任意类型都可以作主键。

主键选取原则:

✧最少性和稳定性

✧主键列值可以更新但不能为重复值

7.外键

相对主键而言的,子表中对应主表的列。

一个表中可以有多个外键。

8.数据类型

分类

备注和说明

数据类型

说明

二进制数据类型

存储非子符和文本的数据

Image

可用来存储图像

文本数据类型

字符数据包括任意字母、符号或数字字符的组合

Char

固定长度的非Unicode字符数据

Varchar

可变长度非Unicode数据

Nchar

固定长度的Unicode数据

Nvarchar

可变长度Unicode数据

Text

存储长文本信息

Ntext

存储可变长度的长文本

日期和时间

日期和时间在单引号内输入

Datetime

日期和时间

数字数据

该数据仅包含数字,包括正数、负数以及分数

int

smallint

整数

float

real

数字

货币数据类型

用于十进制货币值

Money

 

Bit数据类型

表示是/否的数据

Bit

存储布尔数据类型

9.标识列

数据自动生成,不能在该列上输入数据,也不能修改。

10.运算符

运算符

含义

=

等于

>

大于

<

小于

>=

大于或等于

<=

小于或等于

<>

不等于

!

11.通配符

通配符

解释

示例

‘_’

一个字符

ALike'C_'

%

任意长度的字符串

BLike'CO_%'

[]

括号中所指定范围内的一个字符

CLike'9W0[1-2]'

[^]

不在括号中所指定范围内的一个字符

DLike‘%[A-D][^1-2]'

12.逻辑运算符

逻辑表达式

说明

示例

AND

逻辑与

1AND1=;1AND0=0;0AND0=0;

OR

逻辑或

1OR1=1;1OR0=1;0OR0=0;

NOT

逻辑非

NOT1=0;NOT0=1;

13.插入语句

●INSERT[INTO]<表名>[列名]VALUES<值列表>

例如:

INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)

VALUES('张青裁','上海松江',6,'ZQC@S',0)

注意事项1:

每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;

注意事项2:

每个数据值的数据类型、精度和小数位数必须与相应的列匹配;

注意事项3:

不能为标识列指定值,因为它的数字是自动增长的;

注意事项4:

如果在设计表的时候就指定了某列不允许为空,则必须插入数据;

注意事项5:

插入的数据项,要求符合检查约束的要求

注意事项6:

具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值

●插入多行数据1

INSERTINTO<表名>(列名)

SELECT<列名>

FROM<源表名>

例如:

INSERTINTOTongXunLu('姓名','地址','电子邮件')

SELECTSName,SAddress,SEmail

FROMStudents

●插入多行数据2

SELECT(列名)

INTO<表名>

FROM<源表名>

例如:

SELECTStudents.SName,Students.SAddress,Students.SEmail

INTOTongXunLu

FROMStudents

●SELECTINTO插入多行数据的时候,插入新的标识列

SELECTIDENTITY(数据类型,标识种子,标识增长量)AS列名

INTO新表

FROM原始表

例如:

SELECTStudents.SName,Students.SAddress,Students.SEmail,IDENTITY(int,1,1)AsStudentID

INTOTongXunLuEX

FROMStudents

●插入多行数据4

INSERTINTO<表名>(列名)

SELECT<列名>UNION

SELECT<列名>UNION

……

例如:

INSERTSTUDENTS(SName,SGrade,SSex)

SELECT'测试女生1',7,0UNION

SELECT'测试女生2',7,0UNION

SELECT'测试女生3',7,0UNION

SELECT'测试女生4',7,0UNION

SELECT'测试女生1',7,0UNION

SELECT'测试男生2',7,1UNION

SELECT'测试男生3',7,1UNION

SELECT'测试男生4',7,1UNION

SELECT'测试男生5',7,1

不能插入相同的信息。

14.更新数据行

UPDATE<表名>SET<列名=更新值>[WHERE<更新条件>]

例如:

UPDATEStudents

SETSAddress='北京女子职业技术学校家政班'

WHERESAddress='北京女子职业技术学校刺绣班'

15.删除数据行

●DELETEFROM<表名>[WHERE<删除条件>]

●TRUNCATETABLE<表名>

TRUNCATETABLEStudents相当于DELETEFROMStudents的作用。

16.查询

SELECT<列名>

FROM<表名>

[WHERE<查询条件表达式>]

[GROUPBY<列名>]

[HAVING<条件>]

[ORDERBY<排序的列名>[ASC或DESC]]

●查询全部的行和列

例如:

SELECT*FROMStudents

●使用AS来命名列

例如:

SELECTFirstName+'.'+LastNameAS'姓名'

FROMEmployees

●使用=来命名列

例如:

SELECT'姓名'=FirstName+'.'+LastName

FROMEmployees

●查询空行

例如:

SELECTSNameFROMStudentsWHERESEmailISNULL

●使用常量列

例如:

SELECT姓名=SName,地址=SAddress,'河北新龙'AS学校名称

FROMStudents

●限制固定行数

例如:

SELECTTOP5SName,SAddressFROMStudentsWHERESSex=0

●返回百分之多少行

例如:

SELECTTOP20PERCENTSName,SAddressFROMStudentsWHERESSex=0

●升序排列

例如:

SELECTStudentIDAs学员编号,(Score*0.9+5)As综合成绩FROMScoreWHERE(Score*0.9+5)>60ORDERBYScore

●降序排列

例如:

SELECTAu_Lname+'.'+Au_fNameASEMPFromAuthorsUnionSELECTfName+'.'+LNameASEMPFromEmployeeORDERBYEMPDESC

●按多列排序

例如:

SELECTStudentIDAs学员编号,ScoreAs成绩

FROMScore

WHEREScore>60

ORDERBYScore,CourseID

17.SQLServer函数

●字符串函数

●日期函数

●数学函数

●系统函数

18.BETWEEN

把某一字段中内容在特定范围内的记录查询出来。

例如:

SELECTStudentID,ScoreFROMSCoreWHEREScoreBETWEEN60AND80

19.IN

例如:

把某一字段中内容与所列出的查询内容列表匹配的记录查询出来。

20.聚合函数

●SUM求和

例如:

SELECTSUM(ytd_sales)FROMtitlesWHEREtype='business'

只用于数字类型列。

●AVG求平均值

例如:

SELECTAVG(SCore)AS平均成绩FromScoreWHEREScore>=60

●MAX、MIN求最大最小

例如:

SELECTAVG(SCore)AS平均成绩,MAX(Score)AS最高分,MIN(Score)AS最低分FromScoreWHEREScore>=60

●COUNT求总记录数

例如:

SELECTCOUNT(*)AS及格人数FromScoreWHEREScore>=60

SELECTCOUNT(id)AS及格人数FromScoreWHEREScore>=60

限定id了将忽略为空的记录,不计算到数目里。

21.GROUPBY分组

例如:

SELECTStudentIDAS学员编号,CourseIDAS科目编号,AVG(Score)AS平均成绩

FROMScore

GROUPBYStudentID,CourseID

GROUPBY子句搜集数据行到各个组中,统计函数为各个组计算统计值。

22.HAVING分组筛选

例如:

SELECTStudentIDAS学员编号,CourseIDAS内部测试,AVG(Score)AS内部测试平均成绩

FROMScore

GROUPBYStudentID,CourseID

HAVINGCOUNT(Score)>1

HAVING子句去掉不符合其组搜索条件的各组数据行。

23.多表连接查询

●内联结(INNERJOIN)

●外联结

——左外联结(LEFTJOIN)

——右外联结(RIGHTJOIN)

——完整外联结(FULLJOIN)

●交叉联结(CROSSJOIN)

练习

1.MicrosoftSQLServer2005中属于用户数据库包括()(选择两项)

A.Pubs

B.Master

C.Model

D.Msdb

E.NorthWind

2.下面对于域完整性理解正确的是()(选择两项)

A.域的完整性和实体完整性都强调了数据的唯一性

B.可以指定列值的有效数据

C.列的数据类型增强了域的完整性

D.存储过程可用来定义域的完整性

3.查找authors表中所有电话号码的首位为4,第二位为0或1的电话号码()

A.SelectphoneFromauthorswherephonelike‘4[10]%’

B.SelectphoneFromauthorswherephonelike‘4[^10]%’

C.SelectphoneFromauthorswherephonelike‘4_[1,0]%’

D.SelectphoneFromauthorswherephonebetween‘41%’and‘40%’

4.从货物定单数据表(order)中查询出其中定单金额(order_price)在1000和5000之间的定单的详细信息,并按照定单金额(order_pice)升序排列。

正确的语句是()

A.Select*fromorderwhereorder_pricebetween1000and5000orderbyorder_priceASC

B.Select*fromorderwhereorder_pricebetween1000and5000orderbyorder_priceDESC

C.Select*fromorderwhere1000

D.Select*fromorderwhere1000

5.在SQLServer中,若职工表的表结构为:

职工(职工号char(5),姓名char(8)出生日期Datetime),则该表的记录长度为()个字节

A.30

B.23

C.15

D.21

(Date占用三个字节的存储空间,Datetime占用8个字节的存储空间)

6.SQLServer2005是基于()的数据库

A.关系型

B.文件系统

C.层次型

D.网络型

7.关于主键的说法错误的是()

A.主键字段输入的数据不允许重复

B.主键字段的数据,为自动增长数据类型,不允许输入

C.若主键由多个键组合而成,则某个主键字段可能存在重复值

D.主键字段可以是字符数据类型

8.OrderBy的作用是()

A.查询输出分组

B.设置查询条件

C.对记录排序

D.限制查询返回的数据行

9.SQLServer2005数据库有三类文件()(选择三项)

A.主要数据文件

B.次要数据文件

C.备份文件

D.日志文件

10.在SQL一个语句中同时使用了以下运算符时,其中优先级最高的是()

A.AND

B.OR

C.NOT

11.用于删除表中所有数据行的命令是()

A.DeleteTable

B.TruncateTable

C.DropTable

D.AlterTable

12.()完整性是指必须能够标识数据库中的每个实体

A.实体

B.域

C.引用

D.用户定义

13.以下的T-SQL:

Selectcuty,state,Count(*)FromauthorsGroupBycity,stateOrderByCount(*)DESC

在查询分析器中运行后将()

A.提示错误信息,不能Count(*)Desc进行排序

B.提示错误信息,不能按照多个列进行排序

C.运行失败,GroupBy和OrderBy的排序字段应保持一致

D.运行成功,将首先按照统计数进行排序

14.有一个商品信息表(表名:

ProInfo),表的字段为:

PorID(商品编号),ProCatg(商品类别),ProName(商品名称),ProPrice(商品价格),请问下列那条SQL 语句可以查询每一类商品的平均价格?

A.SelectProCatg,AVG(ProPrice)FromProInfo

B.SelectProCatg,AVG(ProPrice)FromProInfoGroupByProCatg

C.SelectProCatg,ProName,AVG(ProPrice)FromProInfoGroupByProCatg

D.SelectProCatg,AVG(ProPrice)FromProInfoOrderbyProID

15.关于聚合函数描述不正确的是:

()

A.Count(*)返回组中项目的数量,这些项目不包括Null值和副本

B.Max忽略任何空值,对于字符列,Max查找排序序列的最大值

C.Min忽略任何空值。

对于字符列,Min查找排序列的最低值

D.Sum返回表达式中所有值的和,或只返回DISTINCT值,Sum只能用于数字列,空值将被忽略

16.建立一个职员表(employee),表中包含职员编号(employeeid)、所属部门(department)、工资(salary)等字段,编写SQL函数要求显示不同部门的职员人数。

以下()是正确语法。

A.Selectemployeeid,department,count(*)ascountfromemployeeGroupBydepartment

B.Selectdepartment,Sum(*)ascountfromemployeeGroupBydepartment

C.Selectdepartment,count(*)ascountfromemployeeGroupBydepartment

17.下列关于主键约束正确的是()

A.如果设置一个字段为主键,那么这个字段可以有重复值

B.主键可以加快大型表中检索的速度

C.主键只能在一个字段上实施

D.一个表可以设置多个主键

18.现有学生信息表Student_info,其中包括姓名(stu_name),学号(stu_id),成绩(stu_grade)。

我们需要查询成绩为80分的学生姓名,要求结果按照学号降序排列。

下面查询语句正确的是()

A.Selectstu_namefromstudent_infowherestu_grade=80orderbystu_idasc

B.Selectstu_namefromstudent_infowherestu_grade=80orderbystu_iddesc

C.Selectstu_id,stu_namefromstudent_infowherestu_grade=80orderbystu_idasc

D.Selectstu_namefromstudent_infowherestu_gradelike80orderbystu_idasc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1