MySQL - 5. 约束类型

1 . 非空约束

非空约束(Not Null constraint),指字段的值不能为空。对于使用了非空约束的字段如果用户在添加数据时,没有指定值,数据库系统会报错。
语法规则:
列名 数据类型 NOT
NULL
创建表的时候指定非空约束
create table player(
    player_id int,
    player_name varchar(20) not null   
);
修改列时,指定非空约束
alter table player modify player_name varchar(20)not null;
修改列时,删除非空约束
alter table player modify player_name varchar(20)not null;

2 . 主键约束

主键约束(Primary Key Constraint),要求主键列的数据唯一,并且不允许为空,主键能够唯一地标识表中的一条记录。一张表中最多有一个主键约束。
主键分为单字段主键多字段联合主键
· 单字段主键是由一个字段(列)组成
1.在定义列的同时指定主键
列名 数据类型 PRIMARY
KEY;
2.在列定义的后边指定主键
[CONSTRAINT<约束名>]PRIMARY KEY(列名);
创建表的时候指定主键约束1
create table player(
    player_id int primary key
);
创建表的时候指定主键约束2
create table player(
    player_id int,
    constraint pk_id primary key(player_id)
);
追加单字段主键
ALTER TABLE player ADD PRIMARY KEY (player_id);

2 . 1 主键约束(多字段联合主键 - 复合主键)

多字段联合主键(或者叫复合主键)
 主键有多个字段(列)联合组成。
 PRIMARY KEY(字段1,字段2, ...字段n);
创建表时指定联合主键
create table player(
    club_id int,
    country_id CHAR(18),
    PRIMARY KEY(club_id,country_id)
);
创建表时未指定联合主键,后添加联合主键
create table player(
    club_id int,
    country_id CHAR(18),
);
ALTER TABLE player MODIFY club_id INT PRIMARY KEY;
ALTER TABLE player ADD PRIMARY KEY(club_id);
ALTER TABLE player ADD CONSTRAINT PK_ID PRIMARY KEY(club_id);
删除主键
ALTER TABLE player DROP PRIMARY KEY;

3 . 唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,唯一约束可以确保一列或者几列不出现重复值
语法规则:
1.定义完列之后直接指定唯一约束:
列名 数据类型 UNIQUE
2.定义完所有列之后指定唯一约束:
[CONSTRAINT<约束名>]PRIMARY KEY(列名)
创建表时添加唯一约束
create table player(
    club_id int PRIMARY KEY,
    country_id CHAR(18) UNIQUE NOT NULL
);
或者:
create table player(
    club_id int PRIMARY KEY,
    country_id CHAR(18) NOT NULL
    CONSTRAINT uk_bname UNIQUE(country_id)
);
修改表时添加唯一约束
ALTER TABLE player MODIFY club_id INT UNIQUE;
ALTER TABLE player ADD UNIQUE(club_id);
alter table player ADD CONSTRAINT uk_bname UNIQUE(club_id);
删除唯一约束
ALTER TABLE player DROP INDEX uk_bname
ALTER TABLE player DROP KEY uk_bname

4 . 默认约束

默认约束(Default Constraint)指定某列的默认值。
语法规则:
列名 数据类型 DEFAULT 默认值
创建表时添加默认约束
create table player(
    club_id int PRIMARY KEY,
    country CHAR(18) DEFAULT '阿根廷'
);
修改表时添加默认约束
ALTER TABLE player MODIFY country VARCHAR(10) DEFAULT '阿根廷';
ALTER TABLE player ALTER COLUMN country SET DEFAULT '阿根廷';
删除默认约束
ALTER TABLE player MODIFY country VARCHAR(20);
ALTER TABLE player ALTER COLUMN country DROP DEFAULT;

5 . 外键约束

外键:
外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。
外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。
外键的作用是保持数据的一致性,完整性。
语法格式:
[CONSTRAINT <外键约束名>] FOREIGN KEY (列名)
references <主表名>(主键)
创建表时添加外键约束
create table bookcategory(
    category_id int PRIMARY KEY,
    category VARCHAR(18),
    parent_id int
);
create table bookinfo(
    book_id int PRIMARY KEY,
    book_category_id int,
    CONSTRAINT fk_cid FOREIGN KEY(book_category_id) REFERENCES bookcategory(category_id)
);
修改表时添加外键约束
alter table bookinfo add foreign key(book_category_id) references bookcategory(category_id);
删除外键约束
ALTER TABLE bookinfo DROP FOREIGN KEY fk_cid;
查外键关联关系 (指定被引用表,查哪些表对其有外键引用)
select * from information_schema.key_column_usage where referenced_table_name='club';

6 . 自增列

建表时为某列增加auto_increment属性
create table player(
    id int auto_increment,
    name varchar(20)
);
不存在primary key字段,新增一个自增字段,如果存在主键,则需先删除主键
注意:auto_increment字段不能有默认值
alter table test add column idgo int primary key auto_increment first;
表不存在主键,给一个字段添加自增属性,需同时设为主键
alter table test modify id int primary key auto_increment;
删除列的自增属性,即修改列时删除定义主键即自增属性命令,自增属性会删除,而主键约束保留
alter table test modify id int primary key auto_increment;

7 . 注释列

建表时为某列增加备注属性
create table player(
    id int auto_increment comment '这里是列备注信息',
    name varchar(20)
)comment '表注释';
给已有列添加备注属性,注意:列名有两次
alter table test change column name name text not null comment '列备注信息';
修改表注释
alter
table test1 comment '修改后的表的注释';
修改列注释
alter table test1 modify column id int comment '修改后的字段注释';
查看每列的备注
select column_name,column_comment from INFORMATION_SCHEMA.columns where table_name='my_table';
或
show full columns from my_table;

 

posted @ 2020-09-10 01:23  短戈行  阅读(385)  评论(0编辑  收藏  举报