1、1第第10章章 修改数据修改数据插入数据删除数据更新数据2插入数据插入数据用 Values 子句插入一行数据插入部分数据使用列缺省值插入数据使用 INSERTSELECT 语句使用 SELECT INTO 语句创建表3用用 Values 子句插入一行数据子句插入一行数据使用字段列表指定用于保存新数据的列 指定相应的值列表只能插入一行数据USE SampleDBINSERT students(studid,studname,age,address,phone,email)VALUES(0001,Peter,20,杭州市文一路65号,88809132,)GO4插入部分数据插入部分数据如果列具有 I
2、DENTITY 属性、有缺省值或允许空值,就可以在 INSERT 语句中忽略该列,SQL Server 将自动插入该值。只需列出正为 INSERT 语句提供数据所在列的名通过输入 NULL 来输入空值5插入部分数据(续)插入部分数据(续)INSERT students (studid,studname,age,phone)VALUES(0002,zhangsan,20,88809123)GOINSERT studentsVALUES(0003,Tom,21,null,null,)GO示例示例 1示例示例 2列出需要列出需要的列名的列名用用null表示表示空值空值6使用列缺省值插入数据使用列缺省
3、值插入数据DEFAULT 关键字INSERT students (studid,studname,age,address,phone,email)VALUES(0004,Jack,19,default,null,J)GO使用使用default默认值默认值7使用使用 INSERTSELECT 语句语句所有满足 SELECT 语句的行都被插入最外层确保数据类型是兼容的 确定是否存在缺省值,或所有被忽略的列是否允许空值USE northwindINSERT INTO customers SELECT substring(firstname,1,3)+substring(lastname,1,2),l
4、astname,firstname,title,address,city ,region,postalcode,country,homephone,NULL FROM employeesGO该表必须该表必须事先存在事先存在8使用使用 SELECT INTO 语句创建表语句创建表可使用 SELECT INTO 语句创建一个表并在同一操作中往表里插入行USE northwindSELECT productname AS products ,unitprice AS price ,(unitprice*1.1)AS tax INTO pricetable FROM productsGO9使用使用 S
5、ELECT INTO 语句创建表(续)语句创建表(续)USE northwindSELECT productname AS products ,unitprice AS price ,(unitprice*1.1)AS tax INTO#pricetable FROM productsGO可以创建局部的或全局的临时性表 仅对当前的用户连接当前的用户连接是可见的,当用户实例断开连接时被自动删除 任何用户任何用户都是可见的,当所有引用该表的用户断开连接时被自动删除 10第第10章章 修改数据修改数据插入数据删除数据更新数据11删除数据删除数据使用 DELETE 语句使用 TRUNCATE TABL
6、E 语句12使用使用 DELETE 语句语句 SQL Server 将删除所有的行,除非在 DELETE 语句中加入 WHERE 语句 每个被删去的行都被存入事务日志记录中USE SampleDBDELETE students WHERE studid 0003GO 举例:删除学号0003以下的同学。13使用使用 TRUNCATE TABLE 语句语句SQL Server 删除表中所有的行,但保留表的结构和与之相关的对象如果表中有 IDENTITY 列,TRUNCATE TABLE 语句会重新设置原始数据USE SampleDBTRUNCATE TABLE studentsGO 14使用使用
7、TRUNCATE TABLE 语句(续)语句(续)DELETE 与 TRUNCATE TABLE 的比较TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。因为 DELETE 语句每次删除一行,而TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据。对于IDENTITY列,使用DELETE将保留标识计数值,而使用TRUNCATE TABLE 将重新计数。15第第10章章 修改数据修改数据插入数据删除数据更新数据16更新数据更新数据
8、更新数据根据表中数据更新行根据其他表更新行17更新数据更新数据语法 UPDATE 表名|视图名 SET 列名=表达式|DEFAULT|NULL FROM 相关表|相关视图 WHERE 18根据表中数据更新行根据表中数据更新行 每次只能修改一个表中的数据可以同时把一个或多个列、变量放在一个表达式中USE northwindUPDATE products SET unitprice=(unitprice*1.1)GO举例:把 Northwind 的产品单价全部增加10%。19根据其他表更新行根据其他表更新行使用 FROM 子句可将数据从一个或多个表或视图拉入要更新的表中。USE pubs UPDA
9、TE titles SET price=price*2 FROM titles INNER JOIN publishers ON titles.pub_id=publishers.pub_id AND pub_name=New Moon Books GO举例:由 New Moon Books 出版的所有书籍的价格加倍。20根据其他表更新行(续)根据其他表更新行(续)使用子查询指定要更新的行举例:由 New Moon Books 出版的所有书籍的价格加倍。USE pubs UPDATE titles SET price=price*2 WHERE pub_id IN (SELECT pub_id FROM publishers WHERE pub_name=New Moon Books)GO21回顾回顾学习完本章后,将能够:插入数据删除数据更新数据