默认约束 (default)
- CREATE TABLE tb(
- id int default 'a' ,
- name varchar(20)
- );
插入数据的时候, 如果没有明确为字段赋值, 则自动赋予默认值
在没有设置默认值的情况下, 默认值为 NULL
非空约束 (not null)
- CREATE TABLE tb(
- id int not null,
- name varchar(20)
- );
限制一个字段的值不能为空, Insert 的时候必须为该字段赋值空字符不等于 NULL
唯一约束 (unique key)
- CREATE TABLE tb(
- id int unique key,
- name varchar(20)
- );
限制一个字段的值不重复, 该字段的数据不能出现重复的确保字段中值的唯一
主键约束 (primary key)
- CREATE TABLE tb(
- id int primary key,
- name varchar(20)
- );
通常每张表都需要一个主键来体现唯一性每张表里面只能有一个主键主键 = 非空 + 唯一
自增长约束 (auto_increment)
- CREATE TABLE tb(
- id int auto_increment,
- name varchar(20)
- );
指定由哪个位置开始自增:
- CREATE TABLE tb(
- id int auto_increment,
- name varchar(20)
- )auto_increment=100;
自动编号, 和主键组合使用, 一个表里面只能有一个自增长 auto_increment 要求用在主键上
外键约束 (foreign key)
- CREATE TABLE a(
- id_a int primary key,
- name varchar(20)
- );
保持数据的一致性我有的你一定有, 你没有的, 我绝对没有
- CREATE TABLE b(
- id_b int primary key,
- name varchar(20),
- foreign key (id_b) references a(id_a)
- );
1. B 表中的 id_b 字段, 只能添加 id_a 中已有的数据. 2. A 表中 id_a 被参照的数据, 不能被修改和删除
那么到这里, 约束就这些啦, 我们写简单的表结构游戏;
举例, 学生表中有学号, 姓名, 学院, 但学生还有些比如电话, 家庭住址等比较私密的信息, 这些信息不会放在学生表当中, 会新建一个学生的详细信息表来存放. 这时的学生表和学生的详细信息表两者的关系就是一对一的关系, 因为一个学生只有一条详细信息. 用主键加主键的方式来实现这种关系.
- # 学生表 (一对一字段)
- create table student(
- id int primary key auto_increment,
- name varchar(20) not null
- );
- # 学生详细信息表 (一对一字段)
- create table student_datailes(
- id_x int primary key,
- sex varchar(20),
- age int,
- height int not null,
- foreign key (id_x) references student(id)
- );
通常情况下, 学校中一个学院可以有很多的学生, 而一个学生只属于某一个学院. 学院与学生之间的关系就是一对多的关系, 通过外键关联来实现这种关系.
- # 学院表 (一对多字段关联)
- create table department(
- d_id int primary key auto_increment, # 学院 id
- d_name varchar(20) not null # 学院名
- );
- # 学生表 (一对多字段关联)
- create table student(
- s_id int primary key auto_increment, # 学生 id
- s_name varchar(20) not null, # 学生名字
- dept_id int not null, # 所属学院 id
- foreign key(dept_id) references department(d_id) #外键
- );
多对多关系 (学生选课)
学生要报名选修课, 一个学生可以报名多门课程, 一个课程有很多的学生报名, 那么学生表和课程表两者就形成了多对多关系. 对于多对多关系, 需要创建中间表实现.
- # 建立课程表:
- create table cours(
- cours_id int primary key auto_increment,
- cours_name varchar(20) not null
- );
- # 选课表 (中间表)
- create table select(
- s_id int, #用来记录学生 id
- cours_id int, #用来记录 课程 id
- primary key(s_id,cours_id), # 联合主键
- foreign key(s_id) references student(s_id), # 关联学生 id
- foreign key(cours_id) references cours(cours_id) # 关联 课程 id
- );
那么 现在 : 学院表, 学生表, 课程表, 选课表, 4 张表已经关联在一起了, 我们可以插入参数了.
以上做为学习总结, 思路有点乱.
来源: http://www.bubuko.com/infodetail-2747697.html