MySQL 数据库语法快速学习3

153 阅读3分钟

大家好我是程序员_蓝天, 本文是为了方便初学者能够快速学习MySQL,写的可能不是很好,希望大家多多包涵。 每个赞都是我前进的动力

约束

  1. 概念&分类

    • 约束是作用于表中列上的规则,用于限制加入表的数据
    • 约束的存在保证了数据库中数据的正确性、有效性和完整性
  2. 约束的分类

image-20241024235631736.png

tips:MySQL 不支持检查约束

3. 非空约束

*   非空约束用于保证列中所有数据不能用 null*   添加约束

    ```mysql
    --创建表时添加非空约束
    create table 表名(
    	列名 数据类型 NOT NULL,
    	……
    );
    ```

    ```mysql
    --建完表后添加非空约束
    alter table 表名 modify 字段名 数据类型 not null;
    ```

*   删除约束

    ```mysql
    alter table 表名 modify 字段名 数据类型;
    ```

案例:

```mysql
create table student(
	id int PRIMARY KEY auto_increment,        --主键自增长
	name varchar(10) NOT NULL UNIQUE ,			--非空且唯一
	sex char(1),
	birthday date NOT NULL,        --非空
	score double(5,2) DEFAULT 0,				--没有默认0
	email varchar(64),
	tel varchar(15),
	status tinyint
);
```

4. 唯一约束

*   唯一约束用于保证列中所有数据各不相同

*   添加约束

    ```mysql
    --创建表时添加唯一约束
    create table 表名(
    	列名 数据类型 unique auto_increment,
    	--auto_increment:当不指定值时,自动增长
    	……
    );
    ```

    ```mysql
    --建完表后添加唯一约束
    alter table 表名 modify 字段名 数据类型 unique;
    ```

*   删除约束

    ```mysql
    alter table 表名 drop index 字段名;
    ```

5. 主键约束

*   主键是一行数据的唯一标识,要求非空且唯一

*   一张表只能有一个主键

*   **auto\_increment : 自增长(数字类型并且唯一约束)**

*   添加约束

    ```mysql
    --创建表时添加主键约束
    create table 表名(
    	列名 数据类型 primary key auto_increment,
    	--auto_increment:当不指定值时,自动增长
    	……
    );
    ```

    ```mysql
    --建完表后添加主键约束
    alter table 表名 add primary key;
    ```

*   删除约束

    ```mysql
    alter table 表名 drop primary key;
    ```

6. 默认约束

*   保存数据时采用默认值

*   添加约束

    ```mysql
    --创建表时添加默认约束
    create table 表名(
    	列名 数据类型 default,
    	……
    );
    ```

    ```mysql
    --建完表后添加默认约束
    alter table 表名 alter set default;
    ```

*   删除约束

    ```mysql
    alter table 表名 alter 列名 drop default;
    ```

7. 检查约束

  1. 外键约束

    • 外键用来让两个表之间建立链接,保证数据的一致性和完整性。

    • 添加外键约束

      --创建表时添外键认约束
      create table 表名(
      	列名 数据类型 ,
      	……
      	[constraint] [外键名称] foreign key(外键列名) references 主表(主表列名)
      );
      
      --创建表后添外键认约束
      alter table 表名 add constraint 外键名称 foreign key(外键字段名称) references 主键名称(主表列名称);
      
    • 删除外键约束

      alter table 表名 drop foreign key 外键名称;
      

      案例:

      建表时
      1.添加sept表
      create table emp(
      	id int PRIMARY KEY auto_increment,        --主键自增长
      	name varchar(10) NOT NULL UNIQUE ,			--非空且唯一
      	sex char(1),
      	birthday date NOT NULL,        --非空
      	score double(5,2) DEFAULT 0,				--没有默认0
      	dep_id int,					
      	--添加外键,关联dept主键
      	CONSTRAINT fk_emp_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
      );
      
      --创建表后添外键认约束
      alter table emp add foreign key fk_emp_dept foreign key(dept_id) references dept(id);
      

原创-程序员_蓝天