第8章数据增删改.docx
- 文档编号:9738895
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:10
- 大小:18.58KB
第8章数据增删改.docx
《第8章数据增删改.docx》由会员分享,可在线阅读,更多相关《第8章数据增删改.docx(10页珍藏版)》请在冰豆网上搜索。
第8章数据增删改
第10章插入、更新和删除数据
教学目标
●理解和掌握INSERT语句的基本技术
●理解和掌握使用UPDATE语句更新数据的基本技术
●理解和掌握删除数据的基本技术
●应该理解和掌握CTE技术在插入、更新和删除数据中的使用方式
●理解和掌握在UPDATE语句中和DELETE语句中使用FROM子句的目的和特点。
教学难点和重点
●理解和掌握INSERT语句的基本技术,这是向表中添加数据的基本手段。
理解和掌握使用UPDATE语句更新数据的基本技术,这是更新表中数据的基本方式。
理解和掌握删除数据的基本技术,这也是操纵数据不可缺乏的基础。
除此之外,应该理解和掌握CTE技术在插入、更新和删除数据中的使用方式,理解和掌握在UPDATE语句中和DELETE语句中使用FROM子句的目的和特点。
教学过程
●一个示例
●插入数据
●更新数据
●删除数据
●上机实验
10.1一个示例
●在本章中,将通过一些具体的示例讲述为何要向表中插入、更新和删除数据以及如何向表中插入、更新和删除数据。
●按照图10-1所示创建books表,该表用于存储有关图书的书号、书名、出版社名称、图书页数、图书价格以及出版日期等信息。
插入数据之前思考哪些表格数据需要先插入。
10.2插入数据
●表创建之后往往只是一个空表,因此,向表中插入数据是在表结构创建之后首先需要执行的操作。
向表中插入数据,应该使用INSERT语句。
该语句包括两个子句,即INSERT子句和VALUES子句。
●INSERT子句指定要插入数据的表名或视图名称,并可以指定表或视图中列的列名称。
VALUES子句指定将要插入的数据。
插入一行语句
(1)对表格中所有列提供数据
insertinto表名
values(值,值....)
例如:
insertintoteachervalues
('wd0014','张曼玉','院长','1968-8-8','2008-8-8',null,'w001','女',null,null)
go
(2)对表格中部分列提供数据
insertinto表名(列名,列名...)
values(值,值....)
insertintoteacher(tname,tno)
values('苏有朋','wd0015')
(3)插入多行数据
insertinto表名
select列名,列名..
from表
where条件
例如:
createtablet3
(tnochar(10),
tnamevarchar(20)
)
insertintot3
selecttno,tname
fromteacher
wheregender='男'
(4)
insertinto表名(列名,列名,..)
select值,值...unionall
select值,值...unionall
select值,值...unionall
select值,值...
例如:
insertintoteacher(tno,tname,gender)
select'wd1001','王阁','男'unionall
select'wd1002','王阁','女'unionall
select'wd1003','王阁','男'unionall
select'wd1004','王阁','男'unionall
select'wd1005','王阁','男'unionall
select'wd1006','王阁','男'unionall
select'wd1007','王阁','女'
(5)insertinto配合execute
Insertinto表名
Execute存储过程名
【例】
createtabletest
(
tnamesysname,--数据库名字
db_sizevarchar(30),--大小
ownersysname,--所有者
dbidint,--编号
createddatetime,--创建时间
statusvarchar(512),--状态
levelvarchar
(2)--兼容级别
)
--找出服务器所有的数据库信息
sp_helpdb
--将找出的信息存入test表中
insertintotestexecutesp_helpdb
--查找前名空间最大者
selecttop3*fromtest
orderbydb_sizedesc
(6)insertinto配合top与output
--createtableusremp
(
employeeidintprimarykey,
titlenvarchar(100),
hiredatedatetime,
manageridint
)
(2)向usremp插入employee的行数据
inserttop(3)intousremp
selectemployeeid,title,hiredate,managerid
fromhumanresources.employee
select*fromusremp
注意:
(1)列的类型、个数和对应常量一致
(2)主键的值不能重复
(3)标识列、计算列不需要插入数据
(4)默认数据可以用default代表
(5)非空列必须插入数据
createtablea
(
sickidchar(10)notnull,
sicknamevarchar(20)notnull,
bloodtypechar
(2)default'0'
)
insertintoa
values('002','小环',default);
createtabletest
(
idintidentity,
nmvarchar(20)
)
select*fromtest
insertintotestvalues
('王旺旺')
sp_helpstudent
10.3更新数据
●可以使用UPDATE语句更新表中已经存在的数据。
UPDATE语句既可以一次更新一行数据,也可以一次更新多行数据,甚至可以一次更新表中的全部数据行。
●在UPDATE语句中,使用WHERE子句指定要更新的数据行所满足的基本条件,使用SET子句给出新的数据。
新数据既可以是常量,也可以是指定的表达式。
update表名
set列名=新值,
列名=新值,..
where条件
例如:
(1)
updateteacher
settitle='院长',
hirdate=getdate()
wheretname='苏有朋'
(2)每门课的理论课都提高10个课时
updatecourse
setc1_times=c1_times+10
(3)技能课的实践课都提高10个课时
updatecourse
setc2_times=c2_times+10
wheretype=’技能’
(4)使用case语句根据不同条件的值设置不同的值。
useadventureworks
go
droptabletest
select*intotest
fromsales.salesperson
updatetest
setbonus=(casewhensalesytd<=500000then1000
whensalesytd>500000andsalesytd<=1000000then2000
whensalesytd>10000000then3000elsebonusend)
【例】
10.4删除数据
●当表中的数据不再需要时,可以删除。
一般情况下,使用DELETE语句删除数据。
DELETE语句可以从一个表中删除一行或多行数据。
语法:
Delete[top(n)[percent]]
From[表|视图]
Where条件
(1)删除苏有朋的信息
deletefromteacher
wheretname='苏有朋'
【例】删除2002/1/1前所有订单信息
useadventureworks
go
--将数据保存到test中
select*intotest
fromsales.salesorderheader
--删除满足条件记录
deletefromtest
whereorderdate<'2002/1/100:
000:
00'
--满足条件的记录行数
select@@rowcount
(2)删除所有教师信息
deletefromteacher
(3)delete配合top的使用
createtableusrsame
(
uidint,
unamevarchar(20)
)
insertintousrsamevalues(1,'Hanmeimei')
insertintousrsamevalues(1,'Hanmeimei')
insertintousrsamevalues(1,'Hanmeimei')
insertintousrsamevalues(1,'Hanmeimei')
如何删除重复数据,仅留下一行?
deleteusrsame
whereuid=1anduname='Hanmeimei'
可以么?
deletetop(3)fromusrsame
(4)delete和truncate区别
都是删除表中数据,速度truncate比delete快;使用truncate删除表不会触发delete触发器;使用truncate删除标识列数据,后续标识列从初值开始使用。
truncatetable表名
注意删除表的内容和删除表的结构的区别
Deletefrom表名
Droptable表名
(5)delete配合联合查询
Deletefrom[表名|视图]
Where列名in(子查询)
或者
Deletefrom[表名|视图]
From表1,表2…
Where条件
删除区域代码为的所有业务员信息
droptabletest
select*intotest
fromsales.salesorderheader
deletefromtest
wheresalespersonidin
(selectsalespersonidfrom
sales.salesperson
whereterritoryid=4)
deletefromtest
fromsales.salespersonainnerjoin
testtona.salespersonid=t.salespersonid
wherea.territoryid=4
10.5上机实验
●练习使用INSERT语句
●练习使用UPDATE语句
insertteacherselect'js080101','张明明','班主任','2008-6-3',null,null
unionallselect'js090101','刘长兴','班主任','2009-1-13',null,null
unionallselect'js070101','谷古','教师','2007-11-1',null,null
unionallselect'js060101','于平','教师','2006-12-31',null,null
go
●将sales数据库的每张表格填充3-5行数据。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第8章 数据增删改 数据 增删