赞
踩
目录
写在前面
- 文章截图均是每个代码显示的图。
- 数据库对代码大小写不敏感,可以大写也可以小写,不要把大小写混在一起使用,最好只使用大写或者只使用小写。
定义:约束故名思意就是对列进行限制约束。约束是在创建表的时候添加上去的,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。
约束的使用方式 :在建表时,我们只需在建立每列时,在每列的后面加上约束类型即可。
- create table student(
- id int not null,
- sn int,
- name varchar(20),
- qq_mail varchar(20)
- );
- desc student;
- +---------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +---------+-------------+------+-----+---------+-------+
- | id | int(11) | NO | | NULL | |
- | sn | int(11) | YES | | NULL | |
- | name | varchar(20) | YES | | NULL | |
- | qq_mail | varchar(20) | YES | | NULL | |
- +---------+-------------+------+-----+---------+-------+
上方代码就是将学生id加上了非空约束,这样学生id在填写时就不能为空了,为空会怎样,我们演示一下。
可以看出,当我们将学生id置空时,客户端报了错。若需要让以列成为必填项,这时非空约束就到了发挥作用的时候。
- mysql> create table student(
- -> id int not null,
- -> sn int unique,
- -> name varchar(20),
- -> sex varchar(5)
- -> );
- mysql> desc student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int(11) | NO | | NULL | |
- | sn | int(11) | YES | UNI | NULL | |
- | name | varchar(20) | YES | | NULL | |
- | sex | varchar(5) | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 4 rows in set (0.00 sec)

我们在学号sn列加上了唯一约束,唯一约束的含义是:这一列不能出现重复的数据,例如(当有一个1时,我们又去添加一个1,这时就会报错。)
- create table student (
- id int not null,
- sn int unique,
- name varchar(20) default '无名氏',
- sex varchar(5)
- );
-
- desc student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int(11) | NO | | NULL | |
- | sn | int(11) | YES | UNI | NULL | |
- | name | varchar(20) | YES | | 无名氏 | |
- | sex | varchar(5) | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+

添加默认值约束的列在填写时为空时(这时需要添加到列名),会默认填入设置好的默认值。
还可以使用MySQL给的关键字(default),填这个也是会得到设置的默认值。
主键约束是非空约束和唯一约束的合集,它满足这两个约束的所有条件。
- create table student(
- id int primary key auto_increment,
- sn int unique,
- name varchar(20) default '无名氏',
- sex varchar(5)
- );
-
- desc student;
- +-------+-------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+----------------+
- | id | int(11) | NO | PRI | NULL | auto_increment |
- | sn | int(11) | YES | UNI | NULL | |
- | name | varchar(20) | YES | | 无名氏 | |
- | sex | varchar(5) | YES | | NULL | |
- +-------+-------------+------+-----+---------+----------------+

注意:对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。一个表中只能有一个主键。
例如:
- insert into student values
- (1,10,'张三','男'),
- (null,11,'李四','男'),
- (100,12,'小红','女'),
- (null,13,'王五','男');
代码先设置id是1,之后插入一条id设为空,因为有自增主键,客户端将这个自动设置为2,
当设置id为100时,再将id设为空,这次id没有根据顺序排列,而是用最大值+1编号。
外键用于关联其他表的主键或唯一键,对于两个具有关联关系的表来说,关联字段所在的表就是主表(父表),外键所在的表就是从表(子表)。
语法格式:
foreign key (字段名) references 主表(列)
示例:
- CREATE TABLE classes (
- id INT PRIMARY KEY auto_increment,
- name VARCHAR(20),
- `desc` VARCHAR(100)
- );
- CREATE TABLE student (
- id INT PRIMARY KEY auto_increment,
- sn INT UNIQUE,
- name VARCHAR(20) DEFAULT 'unkown',
- qq_mail VARCHAR(20),
- classes_id int,
- FOREIGN KEY (classes_id) REFERENCES classes(id)
- );
注意:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。