Skip to content

课时三 数据定义与数据更新 ​

考点分值总览 ​

考点重要程度分值常见题型
数据定义(DDL)★★★★★2~10选择、简答、写SQL
数据更新(DML增改删)★★★★★★5~10选择、简答、写SQL

一、数据定义 DDL ​

1. SQL四大操作对象命令总表 ​

关系数据库三级模式对应对象:模式、表、视图、索引,DDL负责创建/删除/修改

操作对象创建删除修改
模式(Schema)CREATE SCHEMADROP SCHEMA无
基本表(Table)CREATE TABLEDROP TABLEALTER TABLE
视图(View)CREATE VIEWDROP VIEW无
索引(Index)CREATE INDEXDROP INDEXALTER INDEX

2. 模式 Schema 操作 ​

(1)创建模式 ​

语法:

sql
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
[表定义子句 | 视图定义子句 | 授权子句];

规则:

  1. 无指定模式名时,模式名默认等于用户名;
  2. 执行用户需要DBA权限或被授予CREATE SCHEMA权限;
  3. 模式是命名空间,创建时可同步建表、视图、授权。

示例1:为用户WANG创建S-T学生课程模式

sql
CREATE SCHEMA "S-T" AUTHORIZATION WANG;

示例2:用户ZHANG创建TEST模式,同时创建表TAB1

sql
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1(
    COL1 SMALLINT,
    COL2 INT,
    COL3 CHAR(20),
    COL4 NUMERIC(10,3),
    COL5 DECIMAL(5,2)
);

(2)删除模式 ​

语法:

sql
DROP SCHEMA <模式名> CASCADE | RESTRICT;

二选一参数说明:

  1. CASCADE 级联:删除模式,同时删除模式内所有表、视图、索引等对象;
  2. RESTRICT 限制:模式内存在任何表/视图则拒绝删除,必须清空后才能删。

示例:删除ZHANG模式,连带内部所有表

sql
DROP SCHEMA ZHANG CASCADE;

3. 基本表 Table 操作 ​

(1)创建表 CREATE TABLE ​

语法:

sql
CREATE TABLE <表名>(
    <列名> <数据类型> [列级完整性约束],
    ...
    [表级完整性约束]
);

约束分类:

  • 列级约束:仅作用于当前单列(PRIMARY KEY、UNIQUE、NOT NULL);
  • 表级约束:跨多列、外键FOREIGN KEY,写在所有字段后。

常用约束关键字:

  1. PRIMARY KEY:主键,唯一非空;
  2. UNIQUE:唯一约束,允许一个null;
  3. NOT NULL:非空;
  4. FOREIGN KEY(外键列) REFERENCES 主表(主键列):外键参照完整性。

示例1:学生表Student

sql
CREATE TABLE Student(
    Sno CHAR(9) PRIMARY KEY,
    Sname CHAR(20) UNIQUE,
    Ssex CHAR(2),
    Sage SMALLINT,
    Sdept CHAR(20)
);

示例2:课程表Course(自参照外键,先修课)

sql
CREATE TABLE Course(
    Cno CHAR(4) PRIMARY KEY,
    Cname CHAR(40) NOT NULL,
    Cpno CHAR(4),
    Ccredit SMALLINT,
    FOREIGN KEY (Cpno) REFERENCES Course(Cno)
);

示例3:供应商表S(SPJ数据库)

sql
CREATE TABLE S(
    Sno CHAR(6) PRIMARY KEY,
    Sname CHAR(10),
    Status INT,
    City CHAR(20)
);

(2)修改表 ALTER TABLE ​

完整语法:

sql
ALTER TABLE <表名>
[ADD [COLUMN] 新列名 类型 [约束]]        -- 新增列
[ADD 表级约束]                          -- 新增表约束
[DROP [COLUMN] 列名 CASCADE|RESTRICT]    -- 删除列
[DROP CONSTRAINT 约束名 CASCADE|RESTRICT]-- 删除约束
[ALTER COLUMN 列名 新数据类型];          -- 修改列类型

示例1:Student新增入学时间列

sql
ALTER TABLE Student ADD S_entrance DATE;

新增列全部默认为NULL,无法给NOT NULL初始值。

示例2:修改Sage字段类型为INT

sql
ALTER TABLE Student ALTER COLUMN Sage INT;

示例3:给课程名增加唯一约束

sql
ALTER TABLE Course ADD UNIQUE(Cname);

(3)删除表 DROP TABLE ​

语法:

sql
DROP TABLE <表名> CASCADE | RESTRICT;
  • RESTRICT:表被外键、视图、触发器引用时禁止删除;
  • CASCADE:删除本表,同时级联删除依赖本表的视图、约束、索引、触发器。

示例:删除Student表,连带所有依赖对象

sql
DROP TABLE Student CASCADE;

删除表后:表数据、表定义、索引、触发器全部销毁。

4. 索引 Index 创建 ​

语法:

sql
CREATE UNIQUE INDEX <索引名> ON <表名>(列名);

示例:在Student.Sname建立唯一索引

sql
CREATE UNIQUE INDEX Stusname ON Student(Sname);

5. 配套选择题 ​

题1:下列属于DDL数据定义语言的是() A.SELECT B.CREATE C.UPDATE D.DELETE 答案:B 解析:DDL包含CREATE、ALTER、DROP;SELECT/UPDATE/DELETE属于DML数据操作语言。

二、数据更新 DML(INSERT / UPDATE / DELETE) ​

1. 插入 INSERT 两种格式 ​

(1)插入单个元组 ​

sql
INSERT INTO 表名 [(列1,列2...)]
VALUES (常量1,常量2...);

规则:

  1. 省略列名:VALUES必须给全表所有字段赋值;
  2. 指定部分列:未列出字段自动填充NULL,有NOT NULL约束则报错。

(2)批量插入子查询结果 ​

sql
INSERT INTO 表名 (列1,列2...)
子查询SELECT语句;

用途:把查询结果批量插入目标表。

2. 修改 UPDATE 更新数据 ​

语法:

sql
UPDATE <表名>
SET 列1=表达式, 列2=表达式...
[WHERE 条件];

规则:省略WHERE会更新全表所有元组。

示例:将CS系所有学生成绩置0

sql
UPDATE SC 
SET Grade=0 
WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept='CS');

3. 删除 DELETE(讲义未展示,补充核心语法) ​

sql
DELETE FROM <表名>
[WHERE 条件];

省略WHERE删除整张表全部数据,表结构保留。

补充区分 ​

  • DDL:CREATE/ALTER/DROP,定义库、表、索引、视图结构;
  • DML:INSERT/UPDATE/DELETE/SELECT,操作表里数据行。

Powered by VitePress 1.6.4 | 持续更新中