zoukankan      html  css  js  c++  java
  • mysql --键表约束

    --mysql 键表约束,sql

    --主键约束;
    它能够唯一确定一张表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得该字段不重复,且不为空。
    有且只有一个

    create table user (
    id int primary key,
    name varchar(20)
    );

    mysql> describe user;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

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

    mysql> insert into user values(1,'zhangsan');
    ERROR 1062 (23000): Duplicate entry '1' for key 'user.PRIMARY'
    mysql>

    mysql> insert into user values(1,'zhangsan');
    ERROR 1062 (23000): Duplicate entry '1' for key 'user.PRIMARY'
    mysql> insert into user values(2,'zhangsan');
    Query OK, 1 row affected (0.00 sec)

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

    mysql>

    mysql> insert into user values(null,'zhangsan');
    ERROR 1048 (23000): Column 'id' cannot be null
    mysql>

    --联合主键;
    --只要联合主键值加起来不重复就可以,也不可以为空;
    mysql> create table user2(
    -> id int,
    -> name varchar(20),
    -> password varchar(20),
    -> primary key(id,name)
    -> );
    Query OK, 0 rows affected (0.01 sec)

    mysql> select * from user2;
    +----+----------+----------+
    | id | name | password |
    +----+----------+----------+
    | 1 | lisi | 234 |
    | 1 | zhangsan | 123 |
    | 2 | zhangsan | 123 |
    +----+----------+----------+
    3 rows in set (0.00 sec)


    --自增约束
    mysql> create table user3(
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> );
    Query OK, 0 rows affected (0.01 sec)

    mysql> insert into user3 (name) values('zhangsan');
    Query OK, 1 row affected (0.01 sec)

    mysql> select * from user3;
    +----+----------+
    | id | name |
    +----+----------+
    | 1 | zhangsan |
    +----+----------+
    1 row in set (0.00 sec)
    mysql> insert into user3 (name) values('zhangsan');
    Query OK, 1 row affected (0.00 sec)

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

    --> 就是自我增长

    ----> 在上面的基础上添加主键约束:通过alter
    mysql> alter table user4 add primary key(id);
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user4;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    mysql>

    --如何删除
    alter table user4 drop primary key;
    uery OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user4;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | NO | | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    mysql>


    使用modify 修改字段,添加约束;

    mysql> alter table user4 modify id int primary key;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user4;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | NO | PRI | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    mysql>


    --唯一约束
    --约束修饰的字段不可以重复,

    mysql> alter table user5 add unique(name);
    Query OK, 0 rows affected (0.01 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user5;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | YES | | NULL | |
    | name | varchar(20) | YES | UNI | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql>

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

    mysql> insert into user5 values(1,"zhangsan");
    ERROR 1062 (23000): Duplicate entry 'zhangsan' for key 'user5.name'
    mysql> insert into user5 values(1,"lisi");
    Query OK, 1 row affected (0.00 sec)

    mysql>

    create table user6(
    id int,
    name varchar(20),
    unique(name)
    );

    mysql> desc user6;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | YES | | NULL | |
    | name | varchar(20) | YES | UNI | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    create table user8(
    id int,
    name varchar(20),
    unique (id,name)
    );

    mysql> desc user8;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | YES | MUL | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    mysql>


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

    mysql> insert into user8 values(1,"zhangsan");
    ERROR 1062 (23000): Duplicate entry '1-zhangsan' for key 'user8.id'
    mysql> insert into user8 values(2,"zhangsan");
    Query OK, 1 row affected (0.00 sec)

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

    mysql>


    ----如何删除唯一约束;
    alter tabble user7 drop index name;

    mysql> alter table user7 drop index name;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user7;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | YES | | NULL | |
    | name | varchar(20) | YES | | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql>

    ---通过modify 添加唯一约束;
    alter table user7 modify name varchar(20) unique;

    mysql> alter table user7 modify name varchar(20) unique;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> desc user7;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id | int | YES | | NULL | |
    | name | varchar(20) | YES | UNI | NULL | |
    +-------+-------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)

    mysql>


    ---总结

    --1 建表的时候添加约束;
    --2 可以使用alter .....add.....
    --3 alter .....modify....
    --4 s删除。alter 。。。。。drop...


    --外键约束;

    --唯一约束;

    --非空约束;

    --默认约束;

  • 相关阅读:
    华为移动HG8546M光猫路由器通过lan口再连接路由器
    Windows下使用Dev C++ 编写dll与使用dll(二)C++项目下的dll
    Windows下使用Dev C++ 编写dll与使用dll(一)C项目下的dll
    易语言之dll文件的编写与引入
    易语言之编写模块与引入模块
    Element ui 分页记录选中框
    MUI poppicker.js 增加搜索框
    element el-date-picker 去除自带的T格式
    element el-input小数保留两位小数,整数字符串去空格
    nginx vue三级目录配置
  • 原文地址:https://www.cnblogs.com/clairedandan/p/13263658.html
Copyright © 2011-2022 走看看