约束(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);

浙公网安备 33010602011771号