美文网首页
探讨 | MySQL约束

探讨 | MySQL约束

作者: W11ng | 来源:发表于2020-03-23 02:04 被阅读0次

约束

一些关键字对字段能有约束性,分别是以下关键字。

1. 默认值default:

为某字段设置一个默认值,可以为null,如果不插入数据,数值就是设置的默认值。

2. 唯一键unique:

默认创建索引,不能填入相同的值,但默认可以为空,所以存在多个null。not nullunique的约束设置会成为主键PRI

mysql> create table t1(id int not null unique, name char(15) default "钱财");
Query OK, 0 rows affected (0.01 sec)

mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   | PRI | NULL    |       |
| name  | char(15) | YES  |     | 钱财    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.07 sec)

3. 主键primary key(not null + unique):

默认创建索引,唯一且不为空。只能有一个字段设置为主键,一般标记id为主键。主键primary keynot nullunique的组合共存,此时primary key才是主键PRI,而not nullunique组合是UNI键。

mysql> create table t2(id int not null unique, name char(15) primary key default"彩彩");
Query OK, 0 rows affected (0.00 sec)

mysql> desc t2;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | NO   | UNI | NULL    |       |
| name  | char(15) | NO   | PRI | 彩彩    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into t2(id) values(2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t2;
+----+--------+
| id | name   |
+----+--------+
|  2 | 彩彩   |
+----+--------+
1 row in set (0.00 sec)

mysql> insert into t2(id) values(3);
ERROR 1062 (23000): Duplicate entry '彩彩' for key 'PRIMARY'

4. auto_increment自增:

需要为Key键的字段。默认为非空,能实现字段数据的自增,插入数据时即使填null,也会自动填入递增数字。

mysql> create table t3(id int unique auto_increment, name char(11) default "张飞");
Query OK, 0 rows affected (0.01 sec)

mysql> desc t3;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| id    | int(11)  | NO   | PRI | NULL    | auto_increment |
| name  | char(11) | YES  |     | 张飞    |                |
+-------+----------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> insert into t3 values();
Query OK, 1 row affected (0.00 sec)

mysql> select * from t3;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
+----+--------+
1 row in set (0.00 sec)

mysql> insert into t3 values();
Query OK, 1 row affected (0.00 sec)

mysql> select * from t3;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
|  2 | 张飞   |
+----+--------+
2 rows in set (0.00 sec)

mysql> insert into t3 values(5, "关羽");
Query OK, 1 row affected (0.00 sec)

mysql> select * from t3;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
|  2 | 张飞   |
|  5 | 关羽   |
+----+--------+
3 rows in set (0.00 sec)

mysql> insert into t3(id, name) values(null,"关羽");
Query OK, 1 row affected (0.00 sec)

mysql> select * from t3;
+----+--------+
| id | name   |
+----+--------+
|  1 | 张飞   |
|  2 | 张飞   |
|  5 | 关羽   |
|  6 | 关羽   |
+----+--------+
4 rows in set (0.00 sec)

5. zerofill零填充

位数不够时,拿0进行填充。

mysql> create table t5(id int(5) zerofill);
Query OK, 0 rows affected (0.01 sec)

mysql> desc t5;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type                     | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| id    | int(5) unsigned zerofill | YES  |     | NULL    |       |
+-------+--------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> insert into t5 values(33);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t5;
+-------+
| id    |
+-------+
| 00033 |
+-------+
1 row in set (0.00 sec)

相关文章

  • 探讨 | MySQL约束

    约束 一些关键字对字段能有约束性,分别是以下关键字。 1. 默认值default: 为某字段设置一个默认值,可以为...

  • mysql 学习语句

    MySQL学习笔记 登录和退出MySQL服务器 基本语法 建表约束 主键约束 唯一主键 非空约束 默认约束 外键约...

  • mysql约束

    1, mysql 不支持外键约束 ,条件约束约束分为列级约束,primary 主键约束check 条件约束for...

  • MySQL基础——约束

    上篇文章我们学习了MySQL基础——函数,这篇文章我们学习MySQL基础——约束。 约束 约束是作用于表中字段上的...

  • mysql 约束

    接下来的一些内容,我们需要提前学一些简单的sql语句,方便大家理解接下来的知识。 DDL—数据定义语言(Creat...

  • MySQL约束

    mysql约束 1. 约束简介 关系型数据库系统和文件系统的一个不同点是,关系型数据库本身能保证存储数据的完整性,...

  • MySQL约束

    概念: 为了保证数据的完整性和一致性,MySQL提供了约束这个属性。约束分为表级约束和列级约束,如果约束只是针对某...

  • mySQl约束

    MYSQL的五种约束

  • MySQL约束

    PRIMARY KEY 主键 修改 删除 UNIQUE 唯一 添加 删除 FOREIGN KEY 修改 删除 删除...

  • mysql 约束

    主键约束表的主键设计策略任意两行都不具备相同的主键值每行都必须有一个主键值(主键不允许null列)主键和业务无关,...

网友评论

      本文标题:探讨 | MySQL约束

      本文链接:https://www.haomeiwen.com/subject/pkfiyhtx.html