[1]设置非空约束 (NOT NULL ,NK)--->>> 目的是 f 防止某些字段中的内容为空
CREATE TABLE +table_name (
属性名 数据类型 NOT NULL,
.........
);
[2]设置字段的默认值(DEFAULT)
CREATE TABLE +table_name (
属性名 数据类型 DEFAULT 默认值,
........
);
[3]设置唯一约束 (UNIQUE,UK)===>>> 保证字段的唯一性, 比如记录学生档案信息的时候, 要保证学生的学号信息的唯一性.
CREATE TABLE +table_name (
属性名 数据类型 UNIQUE,
.........
);
[4-1]设置单字段主键约束 (PRIMARY KEY,PK)===>>> 主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符. 每张数据表只能存在一个主键; 主键保证记录的唯一性; 主键自动为 NOT NULL(非空). 有类似 UNIQUE 的效果, 来保证字段的唯一性.
CREATE TABLE +table_name
(属性名 数据类型 ,
属性名 数据类型 ,
- ......
- PRIMARY KEY(属性名));
例子:
- CREATE TABLE stu_info
- (id int ,
- name VARCHAR(12),
- yeold int,
- PRIMARY KEY(id));
若输入与主键重复的字段, 则报错!!!
- mysql> INSERT INTO stu_info VALUE(1,'jack',25);
- ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
[4-2]多字段主键
CREATE TABLE +table_name
(属性名 数据类型 ,
属性名 数据类型 ,
......
PRIMARY KEY(属性名 1, 属性名 2,.....)); >>>注意: 此时表示属性名 1 和属性名 2 同时都不重复, 是 "且" 的含义. 否则输入命令不报错
[5]设置字段值自动增加 (AUTO_INCREMENT) >>> 默认下, 该字段的值是从 1 开始增加, 每增加一条记录, 记录中该字段的值就会在前一条记录的基础上加 1.
CREATE TABLE +table_name(
属性名 数据类型 AUTO_INCREMENT,
..........
);
例子:
- mysql> DESC stu_info;
- +-------+-------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+----------------+
- | ID | int(11) | NO | PRI | NULL | auto_increment |
- | name | varchar(12) | YES | | NULL | |
- | yeold | int(11) | YES | | NULL | |
- +-------+-------------+------+-----+---------+----------------+
[6]设置外键约束(FOREIGN KEY,FK)>>>
如果表 A 的主关键字是表 B 中的字段, 则该字段称为表 B 的外键, 表 A 称为主表, 表 B 称为从表. 外键是用来实现参照完整性的, 不同的外键约束方式
将可以使两张表紧密的结合起来, 特别是修改或者删除的级联操作将使得日常的维护工作更加轻松. 外键主要用来保证数据的完整性和一致性.
两个表必须是 InnoDB 表, MyISAM 表暂时不支持外键
外键列必须建立了索引, MySQL 4.1.2 以后的版本在建立外键时会自动创建索引, 但如果在较早的版本则需要显示建立;
外键关系的两个表的列必须是数据类型相似, 也就是可以相互转换类型的列, 比如 int 和 tinyint 可以, 而 int 和 char 则不可以;
CREATE TABLE +table_name (
属性名 数据类型,
属性名 数据类型,
.....
CONSTRAINT 外键约束名 FOREIGN KEY (属性名 1)
REFERENCES 表名 (属性名 2)
来源: https://www.cnblogs.com/python-wen/p/9643474.html