5-4-3

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:04:38


5.4.1 数据插入
1.SQL3中的四种插入数据方式
(1)单元组的插入
  INSERT INTO <基本表名> [(<列名序列>)] VALUES(<元组值>)
(2)多元组的插入
  INSERT INTO <基本表名> [(<列名序列>)] VALUES (<元组值>), (<元组值>), ……, (<元组值>)
(3)查询结果的插入
  INSERT INTO <基本表名> [(<列名序列>)] <SELECT查询语句>
  这个语句可把一个SELECT语句的查询结果插到某个基本表中
(4)表的插入
  INSERT INTO <基本表名> [(<列名序列>)] TABLE <基本表名>
  这个语句可把基本表2的值插入到基本表1中
2.说明
(1)如果插入的值在属性个数、顺序与基本表的结构完全一致,那么基本表后的(<列名序列>)可省略,否则必须详细列出
(2)列名顺序不一定与表结构一致
(3)列表名与VALUES值一一对应
(4)空值用NULL表示
3.例子
(1)插入单个元组(一个记录)
  INSERT INTO Student VALUES('S11','lin','M',18,'CS')
(2)插入单个元组的部分数据值
  INSERT INTO Sc(Sno,Cno) VALUES('S11','C4')
(3)插入子查询结果(多行记录)
  INSERT INTO Sc(Sno) SELECT Sno FROM Student WHERE Dept='CS'
  SELECT Sno,cno FROM Student,course into array a1
  INSERT INTO Sc2 FROM array a1
(4)往SC连续插三个元组
  INSERT INTO SC VALUES ('S4', 'C4', 85), ('S3', 'C6', 90), ('S7', 'C2', 70)
(5)某一个班级的选课情况已在基本表SC4(Sno,Cno)中,把SC4的数据插入到表SC中
  INSERT INTO SC(Sno, Cno) TABLE SC4 5.4.2 数据删除
(1)句法
DELETE FROM <基本表名> [WHERE <条件表达式>]
(2)说明
  只删表的数据,不删表的定义
  该语句与SELECT查询语句非常类似。删除语句实际上是“SELECT * FROM <基本表名>[WHERE <条件表达式>]”操作和DELETE操作的结合,执行时首先从基本表中找出所有满足条件的元组,然后把他们从基本表中删去
  DELETE语句只能从一个基本表中删除元组
  WHERE子句中的条件可以和SELECT语句的WHERE子句中条件一样复杂,可以嵌套,也可以是来自几个基本表的复合条件
  省略WHERE则删除表中的全部元组。有的需再次确认
  注意保证数据的一致性
(3)删除一个元组的值(一行记录)
  DELETE FROM Student WHERE Sno='S11'
(4)删除多个元组的值(多行记录)
  DELETE FROM Sc WHERE G<60
  DELETE FROM Sc
(5)带子查询的删除语句
DELETE FROM Sc
WHERE Sno IN
 (SELECT Sno
 FROM Student
 WHERE Sn='lin') 5.4.3 数据修改
1.句法
  UPDATE <基本表名>
  SET <列名>=<值表达式> [, <列名>=<值表达式>…] | ROW =(<元组>)
  [WHERE <条件表达式>]
2.说明
(1)表达式可为具体值、计算结果、子查询
(2)省略WHERE则修改所有元组
(3)注意保证数据的一致性
3.修改一个元组的某些列值
  UPDATE Student SET Age=20 WHERE Sno='S1'
4.修改多个元组的值(多行)
  UPDATE Student SET Age=Age+1

  UPDATE Emp
  SET Salary=2*Salary
  WHERE Job='PROGRAMMER' AND Salary <=3000
5.带子查询的修改语句
  UPDATE Sc
  SET G=0
  WHERE 'CS'=
   (SELECT Dept
   FROM Student
   WHERE Student.Sno=Sc.Sno)

  UPDATE Emp
  SET Salary=
   (SELECT 1.5*AVG(Salary)
   FROM Emp)
6.修改操作与数据库的一致性
  UPDATE Student SET Sno='99299' WHERE Sno='99101'
  UPDATE Sc SET Sno='99299' WHERE Sno='99101'