zoukankan      html  css  js  c++  java
  • 三、约束

    一、约束类型

    • 非空约束(not null)

    • 唯一性约束(unique)

    • 主键约束(primary key) PK

    • 外键约束(foreign key) FK

    • 检查约束(目前 MySQL 不支持、Oracle 支持)

    二、创建表时添加约束

    2.1查询表中的约束信息

    SHOW KEYS FROM 表名

    2.2示例一

    创建 departments 表包含 department_id 该列为主键且自动增长,department_name 列不允许重复,location_id 列不允含有空值。

    1 create table departments(
    2 department_id int primary key auto_increment,
    3 department_name varchar(30) unique,
    4 location_id int not null);

    2.3示例二

    创建 employees 表包含 employees_id 该列为主键且自动增长,last_name 列不允许含有 空值,email 列不允许有重复不允许含有空值,dept_id 为外键参照 departments 表的主键。

    create table employees(
    employees_id int primary key auto_increment,
    last_n ame varchar(30) not null,
    email varchar(40) not null unique,
    dept_id int,
    constrain temp_fk foreign key(dept_id) references departments(department_id));

    三、修改表实现约束的添加与删除

    3.1主键约束

    3.1.1 添加主键约束

    ALTER TABLE 表名 ADD PRIMARY KEY(列名)

    示例 :

    将 emp 表中的 employee_id 修改为主键且自动增长

    添加主键:alter table emp add primary key(employee_id);

    添加自动增长:alter table emp modify employee_id int auto_increment;

    3.1.2 删除主键约束

    ALTER TABLE 表名 DROP PRIMARY KEY

    注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。

    示例:

    删除 employee_id 的主键约束。

    去掉自动增长: alter table emp modify employee_id int;

    删除主键:alter table emp drop primary key;

    3.2非空约束

    3.2.1 添加非空约束

    ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL

    示例 :

    向 emp 表中的 salary 添加非空约束。

    alter table emp modify salary float(8,2) not null;

    3.2.2 删除非空约束

    ALTER TABLE 表名 MODIFY 列名 类型 NULL

    示例 :

    删除 salary 的非空约束。

    alter table emp modify salary float(8,2) null;

    3.3唯一约束

    3.3.1 添加唯一约束

    ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)

    示例:

    向 emp 表中的 name 添加唯一约束。

    alter table emp add constraint emp_uk unique(name);

    3.3.2 删除唯一约束

    ALTER TABLE 表名 DROP KEY 约束名

    示例:

    删除 name 的唯一约束。

    alter table emp drop key emp_uk;

    3.4外键约束

    3.4.1 添加外键约束

    ALTER TABLE 表 名 ADD CONSTRAINT 约 束 名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名)

    示例一:

    修改 emp 表,添加 dept_id 列。

    alter table emp add column dept_id int; 6.3.4.1.2

    示例二:

    向 emp 表中的 dept_id 列添加外键约束。

    alter table emp add constraint e_fk foreign key(dept_id) references departments(department_id);

    3.4.2 删除外键约束

    删除外键:

    ALTER TABLE 表名 DROP FOREIGN KEY 约束名

    删除外键索引(索引名与约束名相同):

    ALTER TABLE 表名 DROP INDEX 索引名

    示例:

    删除 dept_id 的外键约束。

    删除外键:alter table emp drop foreign key e_fk;

    删除索引:alter table emp drop index e_fk;

  • 相关阅读:
    剑指offer——最小的K个数和数组中第K大的元素
    Leetcode刷题指南链接整理
    160. Intersection of Two Linked Lists
    100. Same Tree
    92. Reverse Linked List II
    94. Binary Tree Inorder Traversal
    79. Word Search
    78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
    0x16 Tire之最大的异或对
    0x16 Tire
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12794577.html
Copyright © 2011-2022 走看看