第05章 表中数据的操作例题解答.docx

上传人:b****5 文档编号:29420076 上传时间:2023-07-23 格式:DOCX 页数:15 大小:230.22KB
下载 相关 举报
第05章 表中数据的操作例题解答.docx_第1页
第1页 / 共15页
第05章 表中数据的操作例题解答.docx_第2页
第2页 / 共15页
第05章 表中数据的操作例题解答.docx_第3页
第3页 / 共15页
第05章 表中数据的操作例题解答.docx_第4页
第4页 / 共15页
第05章 表中数据的操作例题解答.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第05章 表中数据的操作例题解答.docx

《第05章 表中数据的操作例题解答.docx》由会员分享,可在线阅读,更多相关《第05章 表中数据的操作例题解答.docx(15页珍藏版)》请在冰豆网上搜索。

第05章 表中数据的操作例题解答.docx

第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

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

当前位置:首页 > 经管营销 > 经济市场

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

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