第05章 表中数据的操作例题解答.docx
- 文档编号:29420076
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:15
- 大小:230.22KB
第05章 表中数据的操作例题解答.docx
《第05章 表中数据的操作例题解答.docx》由会员分享,可在线阅读,更多相关《第05章 表中数据的操作例题解答.docx(15页珍藏版)》请在冰豆网上搜索。
第05章表中数据的操作例题解答
第5章表中数据的操作——例题解答
例5-2-1:
假设T_STUDENT表中的数据如表5-2-2所示。
表5-2-2T_STUDENT表中的数据
S_NUMBER
S_NAME
SEX
BIRTHDAY
POLITY
B0451101
张小航
男
1984-12-20
党员
B0451102
王文广
男
1985-5-16
团员
B0451103
李艳红
女
1984-6-12
群众
B0451104
张丽霞
女
1984-7-22
群众
B0451105
王强
男
1984-11-26
党员
B0451106
张保田
男
1984-7-5
群众
B0451107
李博文
男
1984-8-9
团员
B0451108
刘芳芳
女
1985-4-14
党员
B0451109
李海
男
1984-2-16
团员
B0451110
常江宁
男
1984-3-21
群众
(1)查询表中的所有记录
程序如下:
SELECT*FROMT_STUDENT
(2)查询前3条记录的S_NUMBER、S_NAME和BIRTHDAY字段
程序如下:
SELECTTOP3S_NUMBER,S_NAME,BIRTHDAYFROMT_STUDENT
(3)查询所有记录的SEX字段,并去掉重复值
程序如下:
SELECTDISTINCTSEXFROMT_STUDENT
(4)查询所有记录的S_NUMBER(别名为学号)、S_NAME(别名为姓名)和BIRTHDAY(别名为出生日期)字段
程序如下:
SELECT学号=S_NUMBER,S_NAMEAS姓名,BIRTHDAY出生日期FROMT_STUDENT
说明:
在上例中使用了别名的三种定义方法,分别为:
●列别名=列名
●列名AS列别名
●列名列别名
注意:
列别名的使用范围:
列别名只在定义的语句中有效。
(5)查询得到每个学生的年龄
程序如下:
SELECTS_NAME,YEAR(GETDATE())-YEAR(BIRTHDAY)AS年龄FROMT_STUDENT
说明:
上面的SELECT语句中使用到了两个系统函数,一个是YEAR()函数,它完成的功能是求一个日期型数据的年份,另一个是GETDATE()函数,它完成的功能是获取当前的系统日期。
(6)统计男同学的人数
程序如下:
SELECTcount(*)FROMT_STUDENTWHERESEX='男'
例5-2-2:
使用INTO子句创建一个新表(T_STUDENT1)。
程序如下:
USESTUDENT
GO
SELECTTOP20PERCENTS_NUMBER,S_NAME,POLITYINTOT_STUDENT1FROMT_STUDENT
SELECT*FROMT_STUDENT1
例5-2-3:
假设T_SCORE表中的数据如表5-2-3所示。
表5-2-3T_SCORE表中的数据
C_NUMBER
SCORE
B0451101
10010218
82
B0451102
10010218
75
B0451103
10010218
93
B0451104
10010218
81
B0451105
10010218
68
B0451106
10010218
77
B0451107
10010218
52
B0451108
10010218
85
B0451109
10010218
73
B0451110
10010218
87
B0451101
30020215
77
B0451102
30020215
84
B0451103
30020215
56
(1)查询表T_SCORE和表T_STUDENT中的数据,满足条件:
T_STUDENT.S_NUMBER=T_SCORE.S_NUMBER
程序如下:
USESTUDENT
go
SELECTT_STUDENT.S_NUMBER,S_NAME,C_NUMBER,SCOREfromT_STUDENT,T_SCORE
whereT_STUDENT.S_NUMBER=T_SCORE.S_NUMBER
说明:
在进行多表查询时,为了明确指定表中的列,可以使用如下格式:
表名.列名
当两个或多个数据表中有相同名称的字段时,必须要在字段的前面加上“表名.”作为此字段的前缀,否则由于系统不清楚应该使用哪个数据表中的同名字段,因此无法执行此查询,会提示错误信息。
(2)上述查询也可以用以下方法实现:
联合查询表T_SCORE和表T_STUDENT中的数据。
useSTUDENT
go
selectT_STUDENT.S_NUMBER,S_NAME,C_NUMBER,SCORE
fromT_STUDENTinnerjoinT_SCORE
onT_STUDENT.S_NUMBER=T_SCORE.S_NUMBER
例5-2-4:
从表T_SCORE中查询不及格学生的信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_SCOREWHERESCORE<60
例5-2-5:
从表T_STUDENT中查询是党员的男学生的信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_STUDENTWHEREPOLITY='党员'ANDSEX='男'
例5-2-6:
从表T_SCORE中查询成绩在80~90分的学生的信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_SCOREWHERESCOREBETWEEN80AND90
例5-2-7:
从表T_STUDENT中查询所有非党员的学生信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_STUDENTWHEREPOLITYin('团员','群众')
例5-2-8:
从表T_STUDENT中查询所有姓张的学生信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_STUDENTWHERES_NAMElike'张%'
例5-2-9:
对表T_STUDENT中的记录按性别进行分组,查询相应的人数。
程序如下:
USESTUDENT
GO
SELECTSEX,count(SEX)人数FROMT_STUDENTGROUPBYSEX
例5-2-10:
在表T_SCORE中求选修了两门及以上课程的学生学号。
程序如下:
USESTUDENT
GO
SELECTS_NUMBER,COUNT(C_NUMBER)选修课程数FROMT_SCORE
GROUPBYS_NUMBER
HAVINGCOUNT(C_NUMBER)>=2
例5-2-11:
在表T_SCORE中查询选修了“10010218”课程的学生成绩,并按成绩的降序进行排序。
程序如下:
USESTUDENT
GO
SELECT*FROMT_SCORE
WHEREC_NUMBER='10010218'
ORDERBYSCOREDESC
例5-2-12:
假设表T_STUDENT1中的数据如表5-2-4所示。
对表T_STUDENT1和表T_STUDENT进行联合查询。
表5-2-4T_STUDENT1中的数据
S_NUMBER
S_NAME
SEX
BIRTHDAY
POLITY
0554101
刘洋
男
1984-10-14
党员
0554102
李志娟
女
1984-11-12
团员
0554103
赵雪梅
女
1984-6-25
团员
0554104
王华
女
1984-9-11
团员
0554105
张金辉
男
1985-5-16
群众
0554106
贾波
男
1984-10-3
党员
0554107
周萍
女
1984-7-12
群众
0554108
马帅
男
1984-5-22
团员
0554109
唐芸
女
1985-8-25
群众
0554110
王华
男
1984-1-20
团员
程序如下:
USESTUDENT
GO
SELECT*FROMT_STUDENT1
UNION
SELECT*FROMT_STUDENT
例5-2-13:
查询选修了两门及以上课程的学生的基本信息。
程序如下:
USESTUDENT
GO
SELECT*FROMT_STUDENTWHERES_NUMBER=ANY
(SELECTS_NUMBERFROMT_SCORE
GROUPBYS_NUMBER
HAVINGCOUNT(C_NUMBER)>=2
)
例5-3-1:
利用INSERT语句向表T_STUDENT中插入一行数据,只包含S_NUMBER、S_NAME和BIRTHDAY三列。
程序清单如下:
USESTUDENT
GO
INSERTINTOT_STUDENT
(S_NUMBER,S_NAME,BIRTHDAY)
VALUES('B0451111','张宇天','85-10-20')
例5-3-2:
利用INSERT语句向表T_STUDENT中插入一行数据,所有的字段都要给出相应的值。
程序清单如下:
USESTUDENT
GO
INSERTT_STUDENT
VALUES('B0451112','赵源','男','84-5-16','团员')
说明:
如果向一个表中的所有字段都插入数据值,则既可以列出所有字段的名称,也可以省略不写,如上题所示,此时要求给出的值的顺序要与数据表的结构相对应。
例5-3-3:
利用INSERT语句向表T_STUDENT中插入一批数据,数据来源于另一个已有的数据表。
程序清单如下:
USESTUDENT
GO
INSERTINTOT_STUDENT
(S_NUMBER,S_NAME,SEX,BIRTHDAY,POLITY)
SELECTS_NUMBER,S_NAME,SEX,BIRTHDAY,POLITYFROMT_STUDENT1
例5-4-1:
一个带有WHERE条件的修改语句。
程序清单如下:
USESTUDENT
GO
UPDATET_STUDENT
SETS_NUMBER='G9823117',POLITY='党员'
WHERES_NAME='张宇天'
例5-4-2:
一个简单的修改语句。
程序清单如下:
USESTUDENT
GO
UPDATET_STUDENT1
SETPOLITY='党员'
说明:
如果没有WHERE子句,则UPDATE将会修改表中的每一行数据。
例5-5-1:
一个简单的删除语句。
程序如下:
USESTUDENT
GO
DELETEFROMT_STUDENT1
WHERES_NAME='王华'
例5-5-2:
一个没有WHERE条件的删除语句。
程序如下:
USESTUDENT
GO
DELETEFROMT_STUDENT1
说明:
当不指定WHERE子句时,将删除表中的所有行的数据。
要清除表中的所有数据,只留下数据表的定义还可以使用TRUNCATE语句。
与DELETE语句相比,通常TRUNCATE执行的速度快,因为TRUNCATE是不记录日志的删除表中全部数据的操作。
例5-5-3:
使用TRUNCATE语句清空表T_STUDENT1中的数据。
程序如下:
USESTUDENT
GO
TRUNCATETABLET_STUDENT1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第05章 表中数据的操作例题解答 05 数据 操作 例题 解答