约束与范式

约束与范式

一、约束

1.主键约束

  • 单列主键

    # 在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键。
    # 在定义字段的同时指定主键,语法格式如下:
    create table 表名(
     ...
     <字段名> <数据类型> primary key 
     ...
    )
    
    # 在定义字段之后再指定主键,语法格式如下:
    create table 表名(
     ...
     [constraint <约束名>] primary key [字段名]
    );
  • 联合主键

    # 当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。
    create table 表名(
     ...
     primary key (字段1,字段2,…,字段n)
    );
  • 修改表结构添加主键

    alter table <表名> add primary key(字段列表);
  • 删除主键

    alter table <数据表名> drop primary key;

2.非空约束

  • 创建表时定义非空约束

    create table student ( 
    id int, 
    name varchar(20) NOT NULL,                      # 指定非空约束 
    address varchar(20) NOT NULL                    # 指定非空约束 
    ); 
  • 添加非空约束

    create table student ( 
    id int, 
    name varchar(20),                      # 指定非空约束 
    address varchar(20)                     # 指定非空约束 
    ); 
    alter table student modify name varchar(20) not null; 
    alter table student modify address varchar(20) not null;
  • 删除非空约束

    # alter table 表名 modify 字段 类型 
    alter table student modify name varchar(20); 
    alter table student modify address varchar(20);

3.自增长约束

  • 设置自增长约束

    # 字段名 数据类型 auto_increment
    create table student( 
    id int primary key auto_increment, 
    name varchar(20) 
    );

4.唯一约束

  • 创建表时设置

    create table student ( 
    id int, 
    name varchar(20), 
    phone_number varchar(20) unique       # 指定唯一约束 
    );
  • 通过ALTER修改指定

    create table student ( 
    id int, 
    name varchar(20), 
    phone_number varchar(20)             # 指定唯一约束 
    ); 
    alter table student add constraint unique_ph unique(phone_number);
  • 删除唯一约束

    # alter table <表名> drop index <唯一约束名>;
    alter table student drop index unique_ph;

5.外键约束

  • 创建表时设置

    [CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…]
    REFERENCES <主表名> 主键列1 [,主键列2,…]
    
    CREATE TABLE SC
    (Sno INT,
    Cno CHAR(2),
    Grade TINYINT,
    PRIMARY KEY(Sno,Cno),
    FOREIGN KEY(Sno) REFERENCES student(Sno),
    FOREIGN KEY(Cno) REFERENCES course(Cno)
    );
  • 使用ALTER添加外键

    ALTER TABLE <数据表名> ADD CONSTRAINT <外键名>
    FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);
  • 删除外键约束

    ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

二、范式

1.第一范式

  • 确保每一列的原子性,即不可再分

2.第二范式

  • 确保每行的唯一性
  • 要求实体的属性完全依赖于主键,而不是只依赖部分关键字

3.第三范式

  • 确保每列都和主键列直接相关,而不是间接相关
  • 确保数据表除了外键以外,其他非主键属性不得重复出现在第二张表上
上一篇
下一篇