数据操纵语言
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例:向图书信息表中添加一行数据:
INSERT INTO tb_bookinfo (bookID,bookname, price) VALUES(‘000010’,‘ 计 算 机 辅 助 设 计’,23)
如果在VALUES选项中给出了所有列的值,则 可以省略column_list部分,例如:
INSERT INTO tb_bookinfo VALUES('000010',' 计算机辅助设计',23,'A001','P101')
DELETE tb_bookinfo FROM tb_pubinfo JOIN tb_bookinfo ON tb_bookinfo.publishID= tb_pubinfo.publishID WHERE tb_pubinfo.pubaddress='沈阳'
4.2.5 TRUNCATE TABLE语句 TRUNCATE TABLE语句用来删除表中的所有 数据。其语法格式是:
如何防止插入带有空值的元组?
插入操作
将平均成绩大于90的学生加入到 EXCELLENT中
insert into EXCELLENT ( SNO, GRADE) select SNO , avg(SCORE) from SC group by (SNO) having avg(SCORE) > 90
SQL的数据修改功能:插入操作
命令 insert into 表名 [(列名[,列名]…] values (值 [,值]…) 插入一条指定好值的元组 insert into 表名 [(列名[,列名]…] (子查询) 插入子查询结果中的若干条元组
示例
Insert into A (select * from A) 如果表A中包含一行数据,则每次执行数据增加
null]] ……
[,primary key(列名 [,列名] …)] [,foreign key (列名 [,列名] …)
references 表名 (列名 [,列
表TEACHER包含如下字段: 列名可为空否? 数据类型 TEACHER_ID NOT NULL NUMBER(9) NAME VARCHAR2(25) SALARY NUMBER(7,2) SUBJECT_ID NOT NULL NUMBER(3) SUBJECT_DESCRIPTION
2. 格式说明 ①table_name是将要被更新的表的表名。 ②SET后面指明了将要更改哪些列及更改成何
值 如下语句将表tb_bookinfo中所有书都降价20%:
UPDATE tb_bookinfo SET price=price*0.8
③WHERE选项用来指明将对哪些行进行更新。 例如,如下语句只将表tb_bookinfo中作者编号 为'a002'的书降价打8折:
Price(Decimal,18,2) 假 定 该 表 中 bookID 列 和 bookname 列 的 数 据 与 表
tb_bookinfo中的相应列数据相同,而price列的值 需按tb_bookinfo中的price列修改,则可以使用如 下语句:
UPDATE tb_bookshort SET price=tb_bookinfo.price
update PROF set SAL = case When SAL > 2000 then SAL * 0.9 when SAL <= 2000 then SAL * 0.95 end
Where …..
基本表的定义
基本表的定义(CREATE)
格式
create table 表名( 列名 数据类型 [default 缺省值] [not null] [,列名 数据类型 [default 缺省值] [not
TRUNCATE TABLE table_name 例如,如下语句将删除表tb_booktemp中的所 有行:
TRUNCATE TABLE tb_booktemp 在执行结果上等价于如下语句:
DELETE FROM tb_booktemp 但在运行速度上,使用TRUNCATE TABLE语
句要快一些,因为该语句一次删除所有行, 而DELETE语句是每次删除一行。
③WHERE选项用来指明哪些行将被删除。 例如,如下语句将删除表tb_bookinfo中所有价 格小于20元的图书:
DELETE FROM tb_bookinfo WHERE price<20
④DELETE语句还可以有另一种格式,根据一 个表中的数据删除另一个表中的数据。
下面语句要从表tb_bookinfo中删除出版社地址 在’沈阳’的那些行。 。
VARCHAR2(2)
你需要将理科教师的工资上浮8%,理科教师的 SUBJECT_ID是011,你需用哪一句实现( )。
A、UPDATE teacher SET salary = salary * 1.08 WHERE subject_description LIKE SCIENCE'
B、UPDATE teacher SET salary = salary * .08 WHERE subject_description LIKE 'SCIENCE' AND subject_id = 011
更新操作
工资超过200①0的缴纳10%所得税,其余②的缴纳5%所得税
update PROF
update PROF
set SAL = SAL * 0.9
set SAL = SAL * 0.95
where SAL > 2000
where SAL <= 2000
执行顺序是①,②,还是②,①?
如果一个教师的工资是2001,则会出现什么情况
(INSERT语句中的INTO部分可以省略。)
使用如下两种格式,可以每次添加多行数据。
①将SELECT语句的查询结果作为数据添加到 一个已存在的表中。
例如:如下语句将表tb_book1中所有作者编号 为'A02'的bookID,bookname,price信息添加到表
tb_book2中:
INSERT INTO tb_book2 SELECT bookID,bookname, price FROM tb_book1
DELETE [FROM] table_name
[WHERE search_conditions]
2. 格式说明 ①[FROM]是任选项,用来增加可读性。 ②table_name指出将要从哪个表中删除数据。 例如,如下语句将删除表tb_bookshort中的所
有行:
DELETE FROM tb_bookshort
4.2.3 UPDATE语句
UPDATE 语 句 用 来 修 改 表 中 的 数 据 。 每 个 UPDATE语句可以修改一行或多行数据,但每 次仅能对一个表进行操作。
1. UPDATE语句的格式
UPDATE
table_name
SET
column_name=expression
[FROM
table_source] [WHERE search_conditions]
UPDATE tb_bookinfo SET price=price*0.8 WHERE AuthorID='A002'
④FROM选项用来从其他表中取数据来修改某 表中的数据。
假定有一个表tb_bookshort,其中包含三个字段,定 义如下:
BookID(Char,6), Bookname(Char,30),
一倍
插入操作
示例
insert into PROF
values ( P123, “王明”, 35, D08, 498 ) 必须是按照表定义的顺序查询全部的列数;
insert into PROF (PNO, PNAME, DNO)
values ( P123, “王明”, D08 )
思考:SAL取何值?
FROM tb_bookshort JOIN tb_bookinfo ON
tb_bookshort.bookID=tb_bookinfo.bookID
4.2.4 DELETE语句 DELETE语句用来删除表中的数据,一次可以 删除一行或多行。 1. DELETE语句的格式 DELETE [FROM] table_name
删除操作
TRUNCATE TABLE
删除表中的所有行 TRUNCATE TABLE 在功能上与不带 WHERE 子
句的 DELETE 语句相同。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事 务日志资源少 在表中包含大字段(BLOB,CLOB)的情况下,尤其 有用。
SQL的数据修改功能:删除操作
命令
delete from 表名 [where 条件表达式]
从表中删除符合条件的元组,如果没有 where语句,则删除所有元组
示例
清除所有选课记录 delete from SC
删除操作
删除王明老师所有的任课记录
delete from PC where PNO in
C、UPDATE teacher SET salary = salary * 1.08 WHERE subject_id = 011
数据操纵语言
数据操纵语言(Data Manipulation Language, 简写DML)是指用来查询、添加、修改和删除 数据库中数据的语句,这些语句包括SELECT、 INSERT、UPDATE、DELETE等。
4.2.1 SELECT语句
SELECT语句用来从数据库中检索满足特定条 件的记录。一个SELECT语句主要包含如下 几部分:
从哪个或哪些表或视图中提取数据 选取表中的哪些列 选择满足什么条件的数据 查询结果以什么顺序显示
4.2.2 INSERT语句 INSERT语句用来向表中添加数据,基本格式 如下:
INSERT [INTO] table_name [colunm_list]
VALUES(data_values)
[WHERE search_conditions]
2. DELETE语句使用举例 例1:如下语句将删除表tb_bookshort中的所 有行:
DELETE FROM tb_bookshort
4.2.4 DELETE语句 DELETE语句用来删除表中的数据,一次可以 删除一行或多行。 1. DELETE语句的格式
SQL的数据修改功能:更新操作
命令
update 表名 set 列名 = 表达式 | 子查询
列名 = [,表达式 | 子查询]… [where 条件表达式] 指定对哪些列进行更新,以及更新后的值是什么
示例
老师工资上调5% update PROF set SAL = SAL * 1.05
更新操作
WHERE authorID='A02 '
②由SELECT语句的INTO选项来创建新表并添 加数据。例如,如下语句将形成一个新表 tb_book3,其内容与表tb_book2完全相同:
SELECT bookID,bookname,price INTO tb_book3
from tb_book2 WHERE authorID='A002'
将D01系系主任的工资改为该系的平均工资
update PROF set SAL = (select avg(SAL)
from PROF where DNO = D01) where PNO = (select DEAN
from DEPT where DNO = D01)
PNO=(select …)编译成功,但是运行可能会出错,如果 select运行过程中返回的值不只一个。
(select PNO from PROF
where PNAME = “王明”)
如果我们知道只有一个老师是王明,则in可 以被=所替代;
删除操作
删除低于平均工资的老师记录
delete from PROF where ห้องสมุดไป่ตู้AL <
(select avg(SAL) from PROF)
思考:是先找到所有符合条件的元组,一并 删除,还是找到一个删除一个?
如果某个系里面有多个系主任,则采用集合操作In的判断操 作符号。
更新操作
当C1课程的成绩小于该课程的平均成绩时, 将该成绩提高5%
update SC set GRADE = GRADE * 1.05 where C# = C1 and GRADE < (select avg(GRADE)
from SC where C# = C1)