MySQL学习笔记(3)

约束

何为约束?

对字段添加限制,称为约束。

约束的增加

constraint 约束名  

创建表的时候,直接为字段定义约束

create table 表名(字段 数据类型 [约束定义语句]);

创建表后,修改字段定义增加约束

alter table 表名 add[constraint + 约束名]+约束的定义语句

主键约束(PRIMARY KEY)

确定表中的标识列(主键字段不能为空,必须唯一)

定义主键约束

create table DDD(
DDDid char(10) primary key,
DDDname varchar(10));//创建名为DDD的表。创建时,将DDDid约束为主键
create table DDD(
DDDid char(10),
DDDname varchar(10),
primary key(DDDid));//创建表后,约束主键

为约束命名

create table DDD(
DDDid char(10),
DDDname varchar(10),
primary key(DDDid),
constraint pk_id primary key(DDDid));

组合主键

表中主键字段需要多个字段组合起来充当,来满足主键约束的要求

特征 : 每个字段允许有重复值,但是组合在一起不许重复,而组合中每个字段都不可以取空值,

格式 :

[constraint 约束名]primary key[(字段名1,字段名2)];

注意:由于组合主键萨河及多个字段因此,组合主键只能定义表级约束,定义在表的最后或者被约束字段完成之后。

唯一约束(UNIQUE)

不可重复,可以有空值。

格式:

--建表时添加约束
CREATE TABLE 表名(
字段名 int(10) UNIQUE);  --定义唯一约束

--建表后添加约束
ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名 UNIQUE 字段名 ;
unique index_name [字段名]; --索引命名

非空约束(NOT NULL)

不允许空值

如果省略关键字,默认值为null

not null 只能放在字符后面

--建表时添加
Create table Student(
Name varchar(100) not null ); --定义非空约束

--建表后添加
ALTER TABLE student MODIFY Name varchar(100) NOT NULL ; --MODIFY 添加非空约束

检查约束(CHECK)

控制特定列中的值的完整性约束

使用场景:

订购册数 :(1-100),出版时间等。

--建表时添加约束
create table s2(
学号 char(10) not null,
性别 char(10) not null,
check ( 学号 in ( select 学号 from student)));


--建表后添加约束
ALTER TABLE s2 ADD CONSRAINT 检查约束名
 CHECK ( 学号 in ( select 学号 from student));

外键约束(FOREIGN KEY)

foreign key 定义在子表中。

一个表中的某一个字段是参考另一个表中某个字段的取值,被称为外键约束。

受约束的称为子表,约束子表的表称为父表。

四个限制

  1. 子表中的外键字段必须和父表中的参考字段的数据类型一致。
  2. 父表中的参考字段必须被主键约束或者唯一键约束,才能约束子表中的外键约束
  3. 父表中的主键值一旦被子表参照,那么这些值就不能随意修改和删除。
  4. 子表的外键字段的值可以为空值,但是如果有值必须是在父表的参照列的取值范围内
--建表时定义
CREATE TABLE 表名(
字段名  int(10),
CONSTRAINT 外键约束名 
FOREIGN KEY 字段名 
REFERENCES 主表名[主表字段1,主表字段2] ;


--建表后定义
ALTER TABLE 表名 
ADD CONSTRAINT 外键约束名 
FOREIGN KEY 字段名 REFERENCES 主表名[主表字段1,主表字段2] ;

默认约束(DEFAULT)

如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。

定义默认约束

--建表时定义
CREATE TABLE 表名(
字段名 int(10) default 10);  --10为默认值

--建表后定义
ALTER TABLE 表名 ADD DEFAULT 10 FOR 字段名 ;

作者: Xenolies
文章标题 :MySQL学习笔记(3)
文章链接 : https://xenolies.xyz/2022/04/07/1610/
文章URL : https://xenolies.xyz/2022/04/07/1610/
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇