格式:create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)engine=innodb charset=utf8;注:[]可选参数
eg>>: create table db1.t1(name char(3) not null);
注:1)数据插入时,name不能为空(null), 且最长只能存放三个字符
? 2)宽度和约束条件为可选参数, 用来限制存放数据的规则
mysql>: create table td1 (x int not null, y int default 0, z int default 100);
auto_increment 自增
报错,auto_increment必须设置给 键字段>
mysql>: create table td2 (x int unique auto_increment, y int unique auto_increment);报错,auto_increment必须设置给 int字段>
mysql>: create table td2 (x char(4) auto_increment);报错,auto_increment字段最多出现 1次>
mysql>: create table td2 (x int unique auto_increment, y int unique auto_increment);
x为主键:没有设置primary key时,第一个 唯一自增键,会自动提升为主键>
mysql>: create table td21 (x int unique auto_increment, y int unique);y为主键:没有设置primary key时,第一个 唯一自增键,会自动提升为主键=>
mysql>: create table td22 (x int unique, y int unique auto_increment);x为主键:设置了主键就是设置的,主键没设置自增,那自增是可以设置在唯一键上的
mysql>: create table td23 (x int primary key, y int unique auto_increment);x为主键:设置了主键就是设置的,主键设置了自增,自增字段只能有一个,所以唯一键不能再设置自增了
mysql>: create table td24 (x int primary key auto_increment, y int unique);默认主键:没有设置主键,也没有 唯一自增键,那系统会默认添加一个 隐式主键(不可见)
mysql>: create table td25 (x int unique, y int unique);
唯一键:确保一个字段,数据不能重复
主键:是一条记录的唯一标识(可以理解为数据的编号)
ip在port不同时,可以相同,ip不同时port也可以相同,均合法>
ip和port都相同时,就是重复数据,不合法>
mysql>: create table tu1 (ip char(16), port int, unique(ip, port));也可以设置成 联合主键,道理同 联合唯一>
mysql>: create table tu2 (ip char(16), port int, primary key(ip, port));
foreign key(所在表的外键字段) references 关联表(关联字段)
1、外键的 字段名 可以自定义(名字随意),通常命名规范(关联表_关联字段)
2、外键要通过 foreign key 语法建立表与表之间的关联
3、foreign key(所在表的外键字段) references 关联表(关联字段)
eg: foreign key(detail_id) references author_detail(id)
4、级联关系
级联更新 on update cascade
级联删除 on delete cascade
5、外键格式
格式:foreign key(所在表外键) references 关联表名称(id) on update cascade on delete cascade;
eg>>: foreign key(detail_id) references author_detail(id) on update cascade on delete cascade
外键字段本身可以唯一或不唯一,但是外键关联的字段一定唯一
原文:https://www.cnblogs.com/randysun/p/11629803.html