数据库管理系统课程笔记

SQL

数据定义语言(DDL)

数据定义语言(Data Definition Language):用于定义和修改数据库结构,提供创建、修改、删除数据库中的各种对象(例如表、索引、视图和约束等)的命令。

创建修改删除
模式create schemadrop scheme
create tablealter tabledrop table
视图create viewalter viewdrop view
索引create indexalter indexdrop index

注意:在MySQL中模式(SCHEMA)与数据库等价

创建表

  • 语法格式为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    create table <表名> (
        <列名> <数据类型> [列级完整性约束] ... [列级完整性约束]
        [,<列名> <数据类型> [列级完整性约束] ... [列级完整性约束]]
        ...
        [,<列名> <数据类型> [列级完整性约束] ... [列级完整性约束]]
        [,表级完整性约束]
        ...
        [,表级完整性约束]
    );
    
  • 几种完整性约束:

    • not null:指定某列不可为空。
    • unique:某列或者几列不能重复。
    • primary key:某列或者某几列为主键,主键属性必须非空且唯一。
    • foreign key (A1,A2,…,Am)references s:外键约束表示关系中任意元组在属性(A1,A2,…Am)上的取值必须对应于关系 s 中某元组在主码属性上的取值。
  • 数据类型

    数据类型含义
    CHAR(n), CHARACTER(n)长度为 n 的定长字符串
    VARCHAR(n),CHARACTERVARYING(n)最大长度为 n 的变长字符串
    INT, INTEGER整数(4 字节)
    SMALLINT短整数(2 字节)
    BIGINT大整数(8 字节)
    FLOAT(n)可选精度浮点数,精度至少为 n 位数字
    DOUBLE双精度浮点数
    REAL浮点数,精度依赖于机器
    DOUBLE PRECISION双精度浮点数,精度依赖于机器
    NUMERIC(p,d)定点数,由 p 位数字组成,小数点后有 d 位数字
    DECIMAL(p,d), DEC(p,d)同NUMERIC
    BOOLEAN布尔型
    DATE日期,格式为 YYYY-MM-DD
    TIME时间,格式为 HH:MM:SS
    TIMESTAMP时间戳类型,格式为 YYYY-MM-DD HH:MM:SS
    INTERVAL时间间隔类型

修改表

  • 添加列

    1
    
    alter table <表名> add [column] <列名> <数据类型>;
    
  • 删除列

    1
    
    alter table <表名> drop [column] <列名> [restrict | cascade];
    

    restrict:如果该列被其他列引用,则无法删除该列。

    cascade:引用该列的其他列会和该列同时被删除。

  • 修改列

    1
    
    alter table <表名> alter column <列名> <数据类型>;
    

删除表

1
drop table <表名> [,<表名>] ... [,<表名>] [restrict | cascade];

drop table语句同时删除表中所有元组和该表的关系模式。

当使用级联选项删除表时,引用该表的其他表也会被删除。

视图

创建视图

1
create view <视图名> [(<列名> [,<列名>, ... , <列名>])] as <子查询>;
  • 子查询:任何 select 语句。
  • 执行 create view 语句时并不执行其中的子查询语句,只把视图的定义存入数据字典。

修改视图

1
alter view <视图名> as <子查询>;

删除视图

1
drop view <视图名> [cascade];
  • cascade:该视图和该视图导出的视图都会被删除。

物化视图

一些数据库支持物化视图,将视图存储在数据库中。

物化视图的创建、修改和删除相较于视图多了关键字 MATERIALIZED.

例如创建物化视图的命令为:

1
create materialized view <物化视图名> [(<列名> [,<列名>, ... , <列名>])] as <子查询>;

数据操纵语言(DML)

Data Manipulation Language:数据的增删改查。