当前位置:   article > 正文

【数据库】MySQL数据库约束(六大约束)_默认值约束

默认值约束

目录

1.数据库约束

1.1约束类型 

1.2 非空约束(NOT NULL )

1.3 唯一约束(UNIQUE)

 1.4默认值约束(DEFAULT )

 1.5主键约束(PRIMARY KEY)

 1.6外键约束(FOREIGN KEY )


写在前面

  1. 文章截图均是每个代码显示的图。
  2. 数据库对代码大小写不敏感,可以大写也可以小写,不要把大小写混在一起使用,最好只使用大写或者只使用小写。

1.数据库约束

定义:约束故名思意就是对列进行限制约束。约束是在创建表的时候添加上去的,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

1.1约束类型 

  • 非空约束(NOT NULL )- 指示某列不能存储 NULL 值。
  • 唯一约束(UNIQUE) - 保证某列的每行必须有唯一的值。
  • 默认值约束(DEFAULT )- 规定没有给列赋值时的默认值
  • 主键约束(PRIMARY KEY) - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • 外键约束(FOREIGN KEY )- 保证一个表中的数据匹配另一个表中的值的参照完整性。
  • 检查约束(CHECK) - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。

约束的使用方式 :在建表时,我们只需在建立每列时,在每列的后面加上约束类型即可。

1.2 非空约束(NOT NULL )

  1. create table student(
  2. id int not null,
  3. sn int,
  4. name varchar(20),
  5. qq_mail varchar(20)
  6. );
  7. desc student;
  8. +---------+-------------+------+-----+---------+-------+
  9. | Field | Type | Null | Key | Default | Extra |
  10. +---------+-------------+------+-----+---------+-------+
  11. | id | int(11) | NO | | NULL | |
  12. | sn | int(11) | YES | | NULL | |
  13. | name | varchar(20) | YES | | NULL | |
  14. | qq_mail | varchar(20) | YES | | NULL | |
  15. +---------+-------------+------+-----+---------+-------+

上方代码就是将学生id加上了非空约束,这样学生id在填写时就不能为空了,为空会怎样,我们演示一下。

可以看出,当我们将学生id置空时,客户端报了错。若需要让以列成为必填项,这时非空约束就到了发挥作用的时候。 

1.3 唯一约束(UNIQUE)

  1. mysql> create table student(
  2. -> id int not null,
  3. -> sn int unique,
  4. -> name varchar(20),
  5. -> sex varchar(5)
  6. -> );
  7. mysql> desc student;
  8. +-------+-------------+------+-----+---------+-------+
  9. | Field | Type | Null | Key | Default | Extra |
  10. +-------+-------------+------+-----+---------+-------+
  11. | id | int(11) | NO | | NULL | |
  12. | sn | int(11) | YES | UNI | NULL | |
  13. | name | varchar(20) | YES | | NULL | |
  14. | sex | varchar(5) | YES | | NULL | |
  15. +-------+-------------+------+-----+---------+-------+
  16. 4 rows in set (0.00 sec)

我们在学号sn列加上了唯一约束,唯一约束的含义是:这一列不能出现重复的数据,例如(当有一个1时,我们又去添加一个1,这时就会报错。)

 1.4默认值约束(DEFAULT )

  1. create table student (
  2. id int not null,
  3. sn int unique,
  4. name varchar(20) default '无名氏',
  5. sex varchar(5)
  6. );
  7. desc student;
  8. +-------+-------------+------+-----+---------+-------+
  9. | Field | Type | Null | Key | Default | Extra |
  10. +-------+-------------+------+-----+---------+-------+
  11. | id | int(11) | NO | | NULL | |
  12. | sn | int(11) | YES | UNI | NULL | |
  13. | name | varchar(20) | YES | | 无名氏 | |
  14. | sex | varchar(5) | YES | | NULL | |
  15. +-------+-------------+------+-----+---------+-------+

添加默认值约束的列在填写时为空时(这时需要添加到列名),会默认填入设置好的默认值。

还可以使用MySQL给的关键字(default),填这个也是会得到设置的默认值。

 1.5主键约束(PRIMARY KEY)

主键约束是非空约束和唯一约束的合集,它满足这两个约束的所有条件。 

  1. create table student(
  2. id int primary key auto_increment,
  3. sn int unique,
  4. name varchar(20) default '无名氏',
  5. sex varchar(5)
  6. );
  7. desc student;
  8. +-------+-------------+------+-----+---------+----------------+
  9. | Field | Type | Null | Key | Default | Extra |
  10. +-------+-------------+------+-----+---------+----------------+
  11. | id | int(11) | NO | PRI | NULL | auto_increment |
  12. | sn | int(11) | YES | UNI | NULL | |
  13. | name | varchar(20) | YES | | 无名氏 | |
  14. | sex | varchar(5) | YES | | NULL | |
  15. +-------+-------------+------+-----+---------+----------------+

注意:对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。一个表中只能有一个主键。

 例如:

  1. insert into student values
  2. (1,10,'张三','男'),
  3. (null,11,'李四','男'),
  4. (100,12,'小红','女'),
  5. (null,13,'王五','男');

 代码先设置id是1,之后插入一条id设为空,因为有自增主键,客户端将这个自动设置为2,

当设置id为100时,再将id设为空,这次id没有根据顺序排列,而是用最大值+1编号。

 1.6外键约束(FOREIGN KEY )

外键用于关联其他表的主键或唯一键,对于两个具有关联关系的表来说,关联字段所在的表就是主表(父表),外键所在的表就是从表(子表)。

语法格式:

foreign key (字段名) references 主表(列)

 示例:

  • 创建班级表classes,id为主键 :
  1. CREATE TABLE classes (
  2. id INT PRIMARY KEY auto_increment,
  3. name VARCHAR(20),
  4. `desc` VARCHAR(100)
  5. );
  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id
  1. CREATE TABLE student (
  2. id INT PRIMARY KEY auto_increment,
  3. sn INT UNIQUE,
  4. name VARCHAR(20) DEFAULT 'unkown',
  5. qq_mail VARCHAR(20),
  6. classes_id int,
  7. FOREIGN KEY (classes_id) REFERENCES classes(id)
  8. );

 注意:

  • 在两个表中相同字段,并且外键在主表中是主键或者是唯一字段
  •  主表的内容不能随意删除、修改,因为删除、修改操作会对从表造成影响。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/458908
推荐阅读
相关标签
  

闽ICP备14008679号