SQLServer2008数据库项目案例教程数据插入、删除、修改和查询项目4Page2技能目标及知识目标√熟悉数据增加、删除、修改的SQL语法;√掌握数据增加、删除、的方法√掌握简单查询,条件查询、连接查询、嵌套查询的方法;√掌握聚合函数的用法;√掌握分组筛选,计算汇总的方法;Page3项目导引创建数据库和表的目的在于存储数据,系统开发过程中,更多的时候是对表的数据进行管理,包括数据的插入、修改(更新)、删除、查询。通常这些操作都是通过SQL语句来完成的,所以本项目需要重点掌握应用SQL语句来进行数据的管理。数据查询是数据库的重要技术,是数据库的主要应用目的;熟练掌握各种查询为数据库应用系统的开发奠定基础;因此,本项目用三个任务详细学习各种查询。Page4任务1插入、修改、删除表数据一、任务背景表数据操作。DML、DDL、DCL的概念。Page5任务1插入、修改、删除表数据二、任务需求1.使用INSERT语句向Product表添加两条记录;2.使用省略INSERT子句列表方法向Product表添加两条数据;3.建立Product备用表格Producr1,然后使用INSERT…SELECT语句的方法插入数据;4.使用SELECT…INTO语句完成新建“飞毛腿商品”表格的同时插入数据;5.将Product表格中所有Catcode为“A01”的商品的Price降低5元;6.使用DELETE语句删除Product表格中价格小于100的商品;7.使用TRUNCATETABLE语句删除Product1表格中的剩余数据。Page6任务1插入、修改、删除表数据三、任务分析此任务的需求主要是进行表数据的管理,主要包括表数据的插入、修改和删除。通常,表和视图数据管理可使用SQLServer2008管理平台和Transact-SQL语言两种方法来完成。使用SQLserver2008管理平台管理表数据的方法是:启动SQLServer2008管理平台,在“对象资源管理器”中逐级展开其中的树形目录,在GoodsDB数据库下右击要数据管理的具体表格(如Product表、Account表),从弹出的快捷菜单中选择“打开表(O)”命令,而后即可进行表数据的添加、更新与删除。后文中将会具体介绍使用Transact-SQL语言进行数据库管理的操作。Page7任务1插入、修改、删除表数据四、知识要点(一)数据插入Transact-SQL语言中主要使用INSERT语句向表或视图中插入新的数据行。用于查询的SELECT语句也可用于向表中插入数据。表数据的插入的语法格式如下:INSERT[INTO]{table_name|view_name}{(column_name[,...n]){VALUES({DEFAULT|NULL|expression}[,...n])|derived_table}}Page8任务1插入、修改、删除表数据四、知识要点(一)数据插入命令说明:(1)INSERT[INTO]:指定要向表中插入数据,INTO可以省略。(2){table_name|view_name}:表示要插入数据的表或视图的名称。(3)(column_name[,...n]):表示要插入数据的表或视图的列名清单。(4)VALUES:该关键字指定要插入数据的列表清单。(5){DEFAULT|NULL|expression}[,...n]:该数据列表清单中包括默认值、空值和表达式的数量、次序和数据类型必须与列清单中指定列的定义相匹配。如果在VALUES清单中按表中定义的列的顺序提供每列的值,则可以省略列清单。(6)derived_table:这是一个导入表中数据的SELECT子句。通常INSERT命令一次只能在表中插入一行数据,但可以采用SELECT子句替代VALUES子句,将一张表中的多行数据导入到要插入数据的表中。Page9任务1插入、修改、删除表数据四、知识要点(二)数据更新Transact-SQL语言中的UPDATE语句用于更新修改表中的数据,该语句可以用于一次修改表中一行或多行数据,其语法格式如下:UPDATEtable_nameSET{column_name={expression|DEFAULT|NULL}|@variable=expression|@variable=column_name=expression}[,...n][FROM{table_source}[,...n]][WHEREsearch_condition]Page10任务1插入、修改、删除表数据四、知识要点命令说明:(1)UPDATEtable_name:指定需要更新的表的名称为table_name所表示的名称。(2)SET:该子句表示对指定的列或变量名称赋予新值。(3)column_name={expression|DEFAULT|NULL}:将变量、字符、表达式的值,或默认值,或空值替换column_name所指定列的现有值。不能修改标识列数据。(4)@variable=expression:指定将变量、字符、表达式的值赋予一个已经声明的局部变量。(局部变量见项目5“T-SQL语言编程”任务)(5)@variable=column_name=expression:指定将变量、字符、表达式的值同时赋予一列和一个变量。(6)FROM{table_source:表示要依据一个表(可以是本表或其他表)中的数据进行更新操作。(7)WHEREsearch_condition:指定修改数据的条件,如果省略此选项,则修改每一行中的该列数据。有WHERE子句时,仅修改符合WHERE条件的行。(8)在一个UPDATE中,可以一次修改多列的数据,只要在SET后面写入多个列名及其表达式,每个用逗号隔开。(9)UPDATE不能修改具有IDENTITY属性的列值。Page11任务1插入、修改、删除表数据四、知识要点(三)数据删除Transact-SQL语言中删除表中数据的方法有两种,在指定的表或视图中删除满足给定条件的数据可以使用DELETE语句;如果要清除表中全部数据,则还可以使用TRUNCATETABLE语句。DELETE语句的语法如下:DELETE[FROM]{table_name|view_name}[FROM{table_source}][WHEREsearch_condition]命令说明:(1)DELETE语句中的语法项目含义与UPDATE语句相同。(2)WHERE子句给出删除数据所必须满足的条件,省略WHERE子句时将删除所有数据。Page12任务1插入、修改、删除表数据四、知识要点(3)删除数据TRUNCATETABLE语句的语法格式如下:TRUNCATETABLE[{database_name.[schema_name].|schema_name.}]table_name[;]其中,table_name表示要删除数据的表的名称。TRUNCATETABLE语句的语法说明如下:(1)TRUNCATETABLE语句可删除指定表中的所有数据行,表结构及其所有索引继续保留,为该表所定义的约束、规则、默认值和触发器仍然有效。(2)与DELETE语句相比,TRUNCATETABLE语句删除速度更快。因为DELETE语句在每删除一行时都要把删除操作记录到日志中,而TRUNCATETABLE语句则是通过释放表数据页面的方法来删除表中数据,它只在释放页面后做一次事务日志。(3)使用TRUNCATETABLE语句删除数据后,这些行时不可恢复的,而DELETE操作则可回滚,能够恢复原来数据。(4)TRUNCATETABLE语句不能操作日志,它不能激活触发器,所有TRUNCATETABLE语句不能删除一个被其他表通过FOREIGNKEY约束所参照的表。Page13任务1插入、修改、删除表数据五、任务实施1.基本格式插入实例要求:使用INSERT语句向Product表添加两条记录。程序代码如下:insertintoproduct(ProCode,CatCode,ProName,Price,StockNum,Description)Values('A0103','A01','金士顿16G',200,100,'略')Insertintoproduct(ProCode,CatCode,ProName,Price,StockNum,Description)Values('A0208','A02','品胜充电器',154,100,'略')Page14任务1插入、修改、删除表数据五、任务实施2.省略INSERT子句列表要求:使用省略INSERT子句列表方法插入两条数据。从表数据的插入的语法格式中可以看出,INSERTINTO子句后可以不带列名,但若不带指定列的列表,输入值的顺序必须与表或者视图中的列顺序一致,数据类型、数据精度和小数位数必须与列的列表中对应列一致。程序代码如下,结果如图4.1.4所示:InsertintoproductValues('A0104','A01','乐风数据线',24,56,'略')Insertintoproduct(ProCode,CatCode,ProName,Price,StockNum,Description)Values('A0308','A03','乐风手机音响',98,200,'略')Page15任务1插入、修改、删除表数据五、任务实施3.使用INSERT…SELECT语句要求:先建立Product备用表格Producr1,然后使用INSERT…SELECT语句的方法插入数。据INSERT...SELECT语句利用SELECT子句的结果集与INSERT语句结合使用,可以将结果集数据插入到制定的表中,该方法可以将一条或多条数据插入表中,也可用于将一个或多个其他表或者视图的值添加到表中。(1)新建Product备用表格Product1CREATETABLEProduct1(ProCodechar(5)NOTNULL,CatCodechar(3)NOTNULL,ProNamevarchar(30)NOTNULL,Pricedecimal(10,2)NULL,StockNumintNULL,Descriptionvarchar(200)NULL,CONSTRAINTPK_Product1PRIMARYKEY(procode))ON[PRIMARY]Page16任务1插入、修改、删除表数据五、任务实施3.使用INSERT…SELECT语句要求:先建立Product备用表格Producr1,然后使用INSERT…SELECT语句的方法插入数。据INSERT...SELECT语句利用SELECT子句的结果集与INSERT语句结合使用,可以将结果集数据插入到制定的表中,该方法可以将一条或多条数据插入表中,也可用于将一个或多个其他表或者视图的值添加到表中。(2)在建立备用表格的基础上利用INSERT…SELECT语句插入数据Insertintoproduct1(ProCode,CatCode,ProName,Price,StockNum,Description)SelectProCode,CatCode,ProName,Price,StockNum,DescriptionFromproductwhereprice100Page17任务1插入、修改、删除表数据五、任务实施4.使用SELECT…INTO语句要求:使用SELECT…INTO语句完成新建“飞毛腿商品”表格的同时插入数据。使用SELECT…INTO语句可以将SELECT查询的结果集数据插入到指定的新表中。程序代码如下,结果如下图4.1.7所示。SelectProCode,CatCode,ProName,StockNum,DescriptionInto飞毛腿商品FromproductWhereProNamelike’*飞毛腿*’Page18任务1插入、修改、删除表数据五、任务实施5.使用UPDATE…SET语