返回顶部

约束(Create Table Constraints)

MySQL常见的建表约束(Create Table Constraints)

一、MySQL约束类型

约束名称 描述
NOT NULL 非空约束
UNIQUE 唯一约束,取值不允许重复,
PRIMARY KEY 主键约束(主关键字),自带非空、唯一、索引
FOREIGN KEY 外键约束(外关键字)
DEFAULT 默认值(缺省值)

二、MySQL约束类型举例

1. [NOT] NULL约束

drop table if EXISTS author;
CREATE TABLE author(
    aut_id varchar(8) NOT NULL,    
    aut_name varchar(50) NOT NULL,   
    country varchar(25) NOT NULL,      
    home_city varchar(25) NOT NULL 
); 

2. UNIQUE约束

  • 实现方法1(表的定义最后施加)

drop table if EXISTS author;
CREATE TABLE IF NOT EXISTS author(
    aut_id varchar(8) NOT NULL ,
    aut_name varchar(50) NOT NULL,
    country varchar(25) NOT NULL
    UNIQUE (aut_id)
); 
  • 实现方法2(字段定义的最后施加)

drop table if EXISTS author;
CREATE TABLE IF NOT EXISTS author(
    aut_id varchar(8) NOT NULL UNIQUE ,
    aut_name varchar(50) NOT NULL,
    country varchar(25) NOT NULL
);

3. DEFAULT约束

drop table if EXISTS author;
CREATE TABLE IF NOT EXISTS author(
    aut_id varchar(8) NOT NULL UNIQUE ,
    aut_name varchar(50) NOT NULL,
    country varchar(25)  DEFAULT '中国'
);

5. PRIMARY KEY约束

主键只能有一个

但是可以由多个字段构成联合主键

  • 单个字段作为主键(方法1)

drop table if EXISTS author;
CREATE TABLE author(
    aut_id varchar(8)  PRIMARY KEY,       
    aut_name varchar(50) NOT NULL, 
    country varchar(25) NOT NULL
);
  • 单个字段作为主键(方法2)

drop table if EXISTS author;
CREATE TABLE author(
    aut_id varchar(8),       
    aut_name varchar(50) NOT NULL, 
    country varchar(25) NOT NULL,
    PRIMARY KEY (aut_id)
);        
  • 多个字段作为主键

drop table if EXISTS author;
CREATE TABLE author(
    aut_id varchar(8)  not null,       
    aut_name varchar(50) NOT NULL, 
    country varchar(25) NOT NULL,
    PRIMARY KEY (aut_id, country)
);  

6. AUTO_INCREMENT约束

需要配合主键使用

drop table if EXISTS author;
CREATE TABLE author(
    aut_id varchar(8)  PRIMARY KEY AUTO_INCREMENT,       
    aut_name varchar(50) NOT NULL, 
    country varchar(25) NOT NULL
);

7. FOREIGN KEY约束

外键可以建立多个,多个外键接着写就行了

外键会产生的效果

1、删除表时,如果不删除引用外键的表,被引用的表不能直接删除

2、外键的值必须来源于引用的表的主键字段

语法:

FOREIGN KEY [column list] REFERENCES [primary key table] ([column list]);

drop table if EXISTS author;
CREATE table author(
	aut_id int PRIMARY key auto_increment,
	aut_name VARCHAR(10) not null,
	country VARCHAR(20) DEFAULT '中国'
);

drop table if EXISTS book;
CREATE TABLE IF NOT EXISTS book(
    book_id int PRIMARY key auto_increment,
    book_name varchar(50)  ,
    aut_id int ,        
    book_price decimal(8,2) ,
    FOREIGN KEY (aut_id) REFERENCES author(aut_id)
);


INSERT into author (aut_name) VALUES('张妈');
INSERT into book (book_name,aut_id) VALUES('王阳明大传2',2);

posted @ 2020-09-05 09:48  Shamero  阅读(320)  评论(0)    收藏  举报