个人笔记:数据库——第三章 第三部分 DML 数据操纵语言

本文仅供参考学习使用,谢谢

SQL语言种类 操作
DDL 数据定义语言 create(创建) drop(删除) alte(修改)
DQL 数据查询语言 select(查询)
DML 数据操纵语言 insert(插入) update(更新) delete(删除)
DCL 数据控制语言 grant(授予) revoke(吊销)

视图链接

文章目录

    • DML 数据操纵语言
      • 1.插入数据
        • 1.插入元组
        • 2.插入子查询结果:可以一次插入多个元组
      • 2.修改数据
        • 1.修改某一个元组的值
        • 2.修改多个元组的值
        • 3.带子查询的修改语句
      • 3.删除数据
        • 1. 删除某一个元组的值
        • 2. 删除多个元组的值
        • 3. 带子查询的删除语句

DML 数据操纵语言

也可以称之为数据的更新

1.插入数据

两种插入数据方式

1. 插入元组
2. 插入子查询结果:可以一次插入多个元组

1.插入元组

语句格式

INSERT INTO <表名> [(<属性列1>[,<属性列2 >...)] 
VALUES (<常量1> [,<常量2>]... );   // 将新元组插入指定表中
  • INTO子句

    1. 指定要插入数据的表名及属性列
    2. 属性列的顺序可与表定义中的顺序不一致
    3. 没有指定属性列:表示要插入的是一条完整的元组,且 属性列属性与表定义中的顺序一致
    4. 指定部分属性列:插入的元组在其余属性列上取空值
  • VALUES子句

    1. 提供的值必须与INTO子句匹配
    2. 值的个数
    3. 值的类型

eg1:

//将一个新学生元组
//(学号:201215128;姓名:陈冬; 性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) 
VALUES ('201215128','陈冬','男','IS',18);

eg2:

//插入一条选课记录( '200215128','1 ')。 
INSERT INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 '); //关系数据库管理系统将在新插入记录的Grade列上自动地 赋空值。
//或者:
INSERT INTO SC
VALUES (' 201215128 ',' 1 ',NULL);

eg3:

//将学生张成民的信息插入到Student表中。 
INSERT INTO Student
VALUES ('201215126','张成民','男’,18,'CS');

eg4:

insert into Hotel 
values(‘H1035’,‘前进宾馆’,‘长春’);

2.插入子查询结果:可以一次插入多个元组

语句格式

INSERT INTO <表名> [(<属性列1> [,<属性列2>... )]
	子查询;
  • INTO子句

  • 子查询

    1. SELECT子句目标列必须与INTO子句匹配
      - 值的个数
      - 值的类型

eg:

//对每一个系,求学生的平均年龄,并把结果存入数据库 
//第一步:建表
CREATE TABLE Dept_age
( Sdept CHAR(15) /*系名*/
Avg_age SMALLINT); /*学生平均年龄*/ 
//第二步:插入数据
INSERT INTO Dept_age(Sdept,Avg_age) 
SELECT Sdept,AVG(Sage)
FROM Student 
GROUP BY Sdept;

关系数据库管理系统在执行插入语句时会检查所 插元组是否破坏表上已定义的完整性规则

  1. 实体完整性

  2. 参照完整性

  3. 用户定义的完整性

    • NOT NULL约束
    • UNIQUE约束
    • 值域约束

2.修改数据

语句格式

UPDATE <表名>
SET <列名>=<表达式>  //SET子句给出<表达式>的值用于取代相应的属性列
[,<列名>=<表达式>]... 
[WHERE <条件>];  //修改指定表中满足WHERE子句条件的元组
//如果省略WHERE子句,表示要修改表中的所有元组

update 表名 
set 列名=where 条件

三种修改方式

1. 修改某一个元组的值
2. 修改多个元组的值 
3. 带子查询的修改语句

1.修改某一个元组的值

eg:

//将学生201215121的年龄改为22岁
UPDATE Student 
SET Sage=22
WHERE Sno=' 201215121 ';

2.修改多个元组的值

eg:

//将所有学生的年龄增加1岁。
UPDATE Student 
SET Sage= Sage+1;

3.带子查询的修改语句

eg1:

//将计算机科学系全体学生的成绩置零。 
UPDATE SC
SET Grade=0
WHERE Sno IN
(SELETE Sno
FROM Student 
WHERE Sdept= 'CS' );

eg2:

update Room 
set type = ‘单人间’
where roomNo =369and hotelNo in
(select hotelNo 
from Hotel 
where hotelName = ‘长春宾馆’)

关系数据库管理系统在执行修改语句时会检查修 改操作是否破坏表上已定义的完整性规则

  1. 实体完整性
  2. 主码不允许修改
  3. 用户定义的完整性
    • NOT NULL约束
    • UNIQUE约束
    • 值域约束

3.删除数据

语句格式

DELETE FROM <表名> //删除指定表中满足WHERE子句条件的元组
[WHERE <条件>]; //指定要删除的元组  无该子句将会删除表中的全部元组

delete from 表名 
where 条件

三种删除方式

1. 删除某一个元组的值
2. 删除多个元组的值 
3. 带子查询的删除语句

1. 删除某一个元组的值

eg:

//删除学号为201215128的学生记录。 
DELETE FROM Student
WHERE Sno= 201215128 ';

eg2:

delete from Booking 
where dateTo=20171202;

2. 删除多个元组的值

//删除所有的学生选课记录。
DELETE FROM SC;

3. 带子查询的删除语句

eg:

//删除计算机科学系所有学生的选课记录。 
DELETE FROM SC 
WHERE Sno IN
(SELETE Sno
FROM Student 
WHERE Sdept= 'CS') ;

你可能感兴趣的:(DataBase)