MYSQL数据库-约束

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

MYSQL中,常用的几种约束:

约束类型:主键默认值唯一外键非空
关键字:PRIMARY KEYDEFAULTUNIQUEFOREIGN KEY

NOT NULL

===================================================

主键(PRIMARY KEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。

还有一种特殊的主键——复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识

===================================================

默认值约束(DEFAULT)规定,当有DEFAULT约束的列,插入数据为空时该怎么办。

DEFAULT约束只会在使用INSERT语句(上一实验介绍过)时体现出来,INSERT语句中,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充

===================================================

唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。

当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败.

===================================================

外键(FOREIGN KEY)既能确保数据完整性,也能表现表之间的关系。

一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。

在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列(department表的dpt_name)中没有dpt3,则INSERT失败

===================================================

非空约束(NOT NULL),听名字就能理解,被非空约束的列,在插入值时必须非空。

在MySQL中违反非空约束,不会报错,只会有警告.

附: SQL语句

 1 CREATE DATABASE mysql_shiyan;
 2 
 3 use mysql_shiyan;
 4 
 5 CREATE TABLE department
 6 (
 7   dpt_name   CHAR(20) NOT NULL,
 8   people_num INT(10) DEFAULT '10',
 9   CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
10  );
11 
12 CREATE TABLE employee
13 (
14   id      INT(10) PRIMARY KEY,
15   name    CHAR(20),
16   age     INT(10),
17   salary  INT(10) NOT NULL,
18   phone   INT(12) NOT NULL,
19   in_dpt  CHAR(20) NOT NULL,
20   UNIQUE  (phone),
21   CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
22  );
23  
24 CREATE TABLE project
25 (
26   proj_num   INT(10) NOT NULL,
27   proj_name  CHAR(20) NOT NULL,
28   start_date DATE NOT NULL,
29   end_date   DATE DEFAULT '2015-04-01',
30   of_dpt     CHAR(20) REFERENCES department(dpt_name),
31   CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
32  );

 

转载于:https://www.cnblogs.com/niceforbear/p/4534778.html

MySQL是一种流行的关系型数据库管理系统(RDBMS),常用于网站和应用程序的数据存储。当你开始使用MySQL添加数据表并设置常见约束时,可以采取以下步骤: 1. **创建数据库**: 首先,你需要连接到MySQL服务器并创建一个新的数据库。例如,使用`CREATE DATABASE mydatabase;`命令创建名为`mydatabase`的新数据库。 2. **选择数据库**: 使用`USE mydatabase;`命令切换到刚创建的数据库。 3. **创建表**: 创建数据表时,你可以指定列名、数据类型以及约束条件。例如,创建用户信息表 `users` 可能包含`id INT AUTO_INCREMENT PRIMARY KEY`, `username VARCHAR(50) NOT NULL UNIQUE`, `email VARCHAR(100)` 等字段。 ```sql CREATE TABLE users ( id INT AUTO_INCREMENT, username VARCHAR(50) NOT NULL, email VARCHAR(100), password VARCHAR(100) NOT NULL ENCRYPTION(AES_256_CBC), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, constraint uc_username UNIQUE (username), constraint uc_email UNIQUE (email) ); ``` 这里有几个常用的约束- `NOT NULL`:表示该字段不能为空。 - `UNIQUE`:确保每条记录的某个字段值在整个表中唯一。 - `PRIMARY KEY`:标识每行的主键,通常是一个自动递增的整数,不允许有重复。 - `ENCRYPTION`:对于密码等敏感信息,使用加密手段保护。 4. **约束类型**: - `FOREIGN KEY`:用于关联两个表之间的数据关系,如外键约束 (`FOREIGN KEY (fk_column_name) REFERENCES other_table(primary_key_column_name);`)。 - `CHECK`:限制特定列的取值范围或表达式结果 (`CHECK (column_name > 0);`). - `DEFAULT`:给字段提供默认值 (`created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;`).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值