1、第05章 表中数据的操作例题解答第5章 表中数据的操作例题解答例5-2-1:假设T_STUDENT表中的数据如表5-2-2所示。表5-2-2 T_STUDENT表中的数据S_NUMBERS_NAMESEXBIRTHDAYPOLITYB0451101张小航男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党员B
2、0451109李海男1984-2-16团员B0451110常江宁男1984-3-21群众(1)查询表中的所有记录程序如下:SELECT * FROM T_STUDENT(2)查询前3条记录的S_NUMBER、S_NAME和BIRTHDAY字段程序如下:SELECT TOP 3 S_NUMBER,S_NAME,BIRTHDAY FROM T_STUDENT(3)查询所有记录的SEX字段,并去掉重复值程序如下:SELECT DISTINCT SEX FROM T_STUDENT(4)查询所有记录的S_NUMBER(别名为学号)、S_NAME(别名为姓名)和BIRTHDAY(别名为出生日期)字段程序
3、如下:SELECT 学号=S_NUMBER,S_NAME AS 姓名,BIRTHDAY 出生日期 FROM T_STUDENT说明:在上例中使用了别名的三种定义方法,分别为: 列别名=列名 列名 AS 列别名 列名 列别名注意:列别名的使用范围:列别名只在定义的语句中有效。(5)查询得到每个学生的年龄程序如下:SELECT S_NAME,YEAR(GETDATE()-YEAR(BIRTHDAY) AS 年龄 FROM T_STUDENT说明:上面的SELECT语句中使用到了两个系统函数,一个是YEAR()函数,它完成的功能是求一个日期型数据的年份,另一个是GETDATE()函数,它完成的功能是
4、获取当前的系统日期。(6)统计男同学的人数程序如下:SELECT count(*) FROM T_STUDENT WHERE SEX=男例5-2-2:使用INTO子句创建一个新表(T_STUDENT1)。程序如下:USE STUDENTGOSELECT TOP 20 PERCENT S_NUMBER,S_NAME,POLITY INTO T_STUDENT1 FROM T_STUDENTSELECT * FROM T_STUDENT1例5-2-3:假设T_SCORE表中的数据如表5-2-3所示。表5-2-3 T_SCORE表中的数据 C_NUMBERSCOREB0451101100102188
5、2B04511021001021875B04511031001021893B04511041001021881B04511051001021868B04511061001021877B04511071001021852B04511081001021885B04511091001021873B04511101001021887B04511013002021577B04511023002021584B04511033002021556(1)查询表T_SCORE和表T_STUDENT中的数据,满足条件:T_STUDENT.S_NUMBER=T_SCORE.S_NUMBER程序如下:USE STUDE
6、NTgoSELECT T_STUDENT.S_NUMBER,S_NAME,C_NUMBER,SCORE from T_STUDENT,T_SCORE where T_STUDENT.S_NUMBER=T_SCORE.S_NUMBER说明:在进行多表查询时,为了明确指定表中的列,可以使用如下格式:表名.列名当两个或多个数据表中有相同名称的字段时,必须要在字段的前面加上“表名.”作为此字段的前缀,否则由于系统不清楚应该使用哪个数据表中的同名字段,因此无法执行此查询,会提示错误信息。(2)上述查询也可以用以下方法实现:联合查询表T_SCORE和表T_STUDENT中的数据。use STUDENTgo
7、select T_STUDENT.S_NUMBER,S_NAME,C_NUMBER,SCORE from T_STUDENT inner join T_SCORE on T_STUDENT.S_NUMBER=T_SCORE.S_NUMBER例5-2-4:从表T_SCORE中查询不及格学生的信息。程序如下:USE STUDENT GOSELECT * FROM T_SCORE WHERE SCORE=2例5-2-11:在表T_SCORE中查询选修了“10010218”课程的学生成绩,并按成绩的降序进行排序。程序如下:USE STUDENT GOSELECT * FROM T_SCORE WHER
8、E C_NUMBER=10010218ORDER BY SCORE DESC例5-2-12:假设表T_STUDENT1中的数据如表5-2-4所示。对表T_STUDENT1和表T_STUDENT进行联合查询。表5-2-4 T_STUDENT1中的数据S_NUMBERS_NAMESEXBIRTHDAYPOLITY0554101刘洋男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
9、-7-12群众0554108马帅男1984-5-22团员0554109唐芸女1985-8-25群众0554110王华男1984-1-20团员程序如下:USE STUDENT GOSELECT * FROM T_STUDENT1UNION SELECT * FROM T_STUDENT例5-2-13:查询选修了两门及以上课程的学生的基本信息。程序如下:USE STUDENT GOSELECT * FROM T_STUDENT WHERE S_NUMBER=ANY (SELECT S_NUMBER FROM T_SCOREGROUP BY S_NUMBERHAVING COUNT(C_NUMBER
10、)=2)例5-3-1:利用INSERT语句向表T_STUDENT中插入一行数据,只包含S_NUMBER、S_NAME和BIRTHDAY三列。程序清单如下:USE STUDENTGOINSERT INTO T_STUDENT(S_NUMBER,S_NAME,BIRTHDAY)VALUES(B0451111,张宇天,85-10-20)例5-3-2:利用INSERT语句向表T_STUDENT中插入一行数据,所有的字段都要给出相应的值。程序清单如下:USE STUDENTGOINSERT T_STUDENT VALUES(B0451112,赵源,男,84-5-16,团员)说明:如果向一个表中的所有字段
11、都插入数据值,则既可以列出所有字段的名称,也可以省略不写,如上题所示,此时要求给出的值的顺序要与数据表的结构相对应。例5-3-3:利用INSERT语句向表T_STUDENT中插入一批数据,数据来源于另一个已有的数据表。程序清单如下:USE STUDENTGOINSERT INTO T_STUDENT(S_NUMBER,S_NAME,SEX,BIRTHDAY,POLITY)SELECT S_NUMBER,S_NAME,SEX,BIRTHDAY,POLITY FROM T_STUDENT1例5-4-1:一个带有WHERE条件的修改语句。程序清单如下:USE STUDENTGOUPDATE T_ST
12、UDENTSET S_NUMBER = G9823117, POLITY = 党员 WHERE S_NAME = 张宇天例5-4-2:一个简单的修改语句。程序清单如下:USE STUDENTGOUPDATE T_STUDENT1SET POLITY = 党员说明:如果没有WHERE子句,则UPDATE将会修改表中的每一行数据。例5-5-1:一个简单的删除语句。程序如下:USE STUDENTGODELETE FROM T_STUDENT1 WHERE S_NAME = 王华例5-5-2:一个没有WHERE条件的删除语句。程序如下:USE STUDENTGODELETE FROM T_STUDENT1说明:当不指定WHERE子句时,将删除表中的所有行的数据。要清除表中的所有数据,只留下数据表的定义还可以使用TRUNCATE语句。与DELETE语句相比,通常TRUNCATE执行的速度快,因为TRUNCATE是不记录日志的删除表中全部数据的操作。例5-5-3:使用TRUNCATE语句清空表T_STUDENT1中的数据。程序如下:USE STUDENTGOTRUNCATE TABLE T_STUDENT1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1