第5章表中数据的操作本章学习目标掌握如何在SQLServer管理控制台中操作表中的数据掌握使用SELECT语句查询数据的方法掌握使用INSERT语句插入数据的方法掌握使用UPDATE语句更新数据的方法掌握使用DELETE语句删除数据的方法5.1在SQLServer管理控制台中操作表中的数据表中数据的操作包括数据的查询、插入、修改和删除。可以在SQLServer管理控制台中非常方便地对数据执行各种操作,也可以利用Transact-SQL中的命令完成相应的功能。在SQLServer管理控制台中,打开指定的数据库并展开“表”对象,右击要操作的数据表,并从弹出的快捷菜单中选择“打开表”选项,就会看到数据表数据显示结果窗口。5.1在SQLServer管理控制台中操作表中的数据将光标定位到最后一条记录后面,输入新的记录就可以完成插入操作;将光标定位到某条记录,改变某个数据的值就可以完成更新操作;右击某条记录,从弹出的快捷菜单中选择“删除”选项就可以完成记录的删除操作。5.2查询数据SELECT语句可以根据实际需要从一个或多个表中选择一个或多个行或列。1)语法格式:SELECTselect_list[INTOnew_table]FROMtable_source[WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]]汉语语法:SELECT[ALL|DISTICT]字段表达式1[,字段表达式2[,…n]][INTO新表]FROM表名1[,表名2[,…n]][WHERE筛选条件表达式][GROUPBY分组表达式[HAVING分组条件表达式]][ORDERBY字段[ASC|DESC]]5.2查询数据ALL:指定显示所有记录,包括重复行。ALL是默认设置。DISTINCT:指定显示所有记录,但不包括重复行。TOPn[PERCENT]:指定从查询结果中返回前n行。select_list:指定返回结果中的列。如果有多个列,用逗号分隔。5.2查询数据*:表示所有列。column_name:指定是要返回的列名。expression:是列名、常量、函数以及由运算符连接的列名、常量和函数的任意组合,或者是子查询。2)语句说明(1)SELECT语句的基本格式是由SELECT子句、FROM子句和WHERE子句组成的查询块。(2)整个SELECT语句的含义是:根据WHERE子句的筛选条件表达式,从FROM子句制定的表中找出满足条件记录,再按SELECT语句中制定的字段次序,筛选出记录中的字段值构造一个显示结构表。(3)如果有GROUPBY子句,则将结果按分组表达式的值进行分组,该值相等的记录为一个组。(4)如果GROUPBY子句带HAVING短语,则只有满足制定条件的组才会显示输出。说明:SELECT语句操作的是记录集合,而不是单独的一条记录。语句返回的也是记录集合,即结果表。3)基于单表的简单查询1)选择部分列并指定它们的显示次序例:显示STUDENT_INFO表中学生的姓名、性别以及班级SELECTname,sex,classFROMstudent_info2)通配符“*”的使用。例:列出student_info表所有的字段Select*fromstudent_info4)使用单引号加入字符串SELECT语句中,可以在一个字段的前面加上一个单引号字符串,对后面的字段起说明作用。例:显示student_info表中学生的姓名和家庭住址Selectname,’家庭住址’,addressfromstudent_info5.2查询数据在SELECT语句中至少要包含两个子句:SELECT和FROM。SELECT指定查询的某些选项,FROM指定查询的表。例如:查询T_STUDENT表中所有的数据,可以写为:SELECT*FROMT_STUDENT5.2查询数据在显示结果时,可以制定以别名代替原来的字段名称,共有3种方法:(1)采用“字段名AS别名”的格式。(2)采用“字段名别名”的格式。(3)采用“别名=字段名”的格式。例:显示student_info表中学生的姓名和家庭住址,并在标题栏中显示“姓名”和“家庭住址”字样,而不是显示name和address。SELECTnameas姓名,addressas住址fromstudent_info显示表达式的值在SELECT语句后面可以是字段表达式,字段表达式不仅可以是算术表达式,还可以是字符串常量和函数等。例:显示student_info表中所有学生姓名和年龄。Selectname,year(getdate())-year(born_date)as年龄Fromstudent-info使用DISTICT短语消除重复的记录例:查询所有学生所属班级的班号。Selectdistictclass_nofromstudent_info5.2查询数据例5-2-1:(1)查询表中的所有记录(2)查询前3条记录的S_NUMBER、S_NAME和BIRTHDAY字段(3)查询所有记录的SEX字段,并去掉重复值(4)查询所有记录的S_NUMBER(别名为学号)、S_NAME(别名为姓名)和BIRTHDAY(别名为出生日期)字段5.2查询数据(6)统计男同学的人数5.2.2INTO子句INTO子句用于创建新表并将查询结果插入新表中,其语法为:[INTOnew_table]其中的参数new_table用于指定新表的名称。例5-2-2:使用INTO子句创建一个新表(T_STUDENT1)。