您的位置:首页 > 数据库 > MySQL

MySQL学习笔记(三)

2018-03-20 22:32 267 查看
与MySQL的零距离接触_慕课网_第三章
一.常用约束
(1).

约束名非空约束主键约束唯一约束默认约束外键约束
语句NOT NULL PRIMARY KEYUNIQUE KEYDEFAULT 值FOREIGN KEY (值) REFERENCES 表名 (值)
(2).主键约束
a.每张表只能存在唯一主键约束;
b.保证记录唯一性;
c.主键自动为NOT NULL;
d.自动编号:AUTO_INCREMENT,默认起始值为1,递增1;

(3).唯一约束
a.保证记录的唯一性;
b.字段可以为空;
c.每张表可以存在多个唯一约束;

(4).默认约束
a.插入记录时,若没为其赋值,则自动赋为默认值;

(5).外键约束
a.父表子表需使用相同存储引擎-InooDB;
b.禁止使用临时表;
c.外键列和参照列需使用相似数据类型,数字长度及有无符号位必须相同,而字符长度可以不同;
d.外键列和参照列需创立索引,若外键不存在索引,将自动创建;
e.CASCADE:从父表删除或更新时,自动删除或更新子表中匹配的行;
# eg: FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE;
f.SET NULL:从父表删除或更新时,设置子表中的外键列为NULL;
g.RESTRICT:拒绝对父表的删除更新;
h.NO ACTION:在MySQL中与RESTRICT相同;

二.约束分类
列级约束:对一个数据列建立的约束;可在列定义前后声明;
表级约束:对多个数据列建立的约束;只能在列定义后声明;

三.修改数据表
(1).添加单列:ALTER TABLE tb_name ADD col_name col_definition FIRST/AFTER;(不声明位置则在表最后) 
(2).添加多列:ALTER TABLE tb_name ADDcol_name col_definition,col_name2 col_definition2,...(只能位于表最后)
(3).删除一列:ALTER TABLE tb_name DROP col_name
(4).删除多列:ALTER TABLE tb_name DROP col_name1,col_nmae2...
(5).添加主键约束:ALTER TABLE tb_name ADD /*CONSTRAINT PK_user2_id*/ PRIMARY KEY (key_name);(CONSTRAINT为可选项 给主键项起名)
(6).删除主键约束:ALTER TABLE tb_name DROP PRIMARY KEY ;
(7).添加外键约束:ALTER TABLE tb_name ADD FOREIGN KEY (pid) REFERENCES province (id);
(8).删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;

【fk_symbol为外键标记 查看方法为 SHOW COLUMNS FROM tb_name;】
(9).添加唯一约束:ALTER TABLE tb_name ADD UNIQUE (username);
(10).删除唯一约束:ALTER TABLE tb_name DROP INDEX index_name;
【index_name为索引名 查看方法为 SHOW INDEXES FROM tb_name;】

(11).添加默认约束:ALTER TABLE tb_name ALTER col_name SET DEFAULT 值;
(12).删除默认约束:ALTER TABLE tb_name ALTER col_name DROP DEFAULT;
(13).修改列定义:ALTER TABLE tb_name MODIFY col_name col_definition FIRST\AFTER;(14).修改列名称:ALTER TABLE tb_name CHANGE old_col_name new_col_name col_definiton FIRST\AFTER; (15).修改数据表名称:ALTER TABLE tb_name RENAME new_name;【或 RENAME TABLE tb_name TO new_name;】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: