mysql数据库修改约束_mysql约束以及数据库的修改

一、约束

1、约束保证数据完整性和一致性。

2、约束分为表级约束和列级约束。

(1)表级约束(约束针对于两个或两个以上的字段使用)

(2)列级约束(针对于一个字段使用)

3、约束类型有:

(1)NOT NULL(非空约束)

(2)PRIMARY KEY(主键约束)

(3)UNiQUE KEY(唯一约束)

(4)DEFAULT(默认约束)

(5)FOREIGN KEY(外键约束)

实现一对一或一对多关系。

4、要求

7f0792d87389297b5d05f863ed792320.png

(1)有参照列为父表,有外键列为子表

(2)加上FOREIGN KEY的列为外键列

【把my.ini文件里的default-storage-engine=innoDB】

(3)建立provinces表和users表

6358fdebd5bc91a451ac01b7b41b9958.png

acb78b4038d626460920a71a79d1faa9.png

4352c8d471ca127a8fdf09604bd632b9.png

a9e308b8907a0679a290b7fa294f85e1.png

(4)查看INDEXES

b7ed0e0f82f3234818b03c50d8c696a8.png

8c7b3bd0a5e85e1669141eb270e3178e.png

5、外键约束参照操作

ab725add78518541f3a9041376ed65c2.png

(1)我们建立一个表结构

7c87d7c032e61be827dc1624d312b615.png

f60ea54b581b48a680479e1af5e58cdf.png

(2)加入元素

c90411e0595187e59159e92043643125.png

e06eb65e0f23fc864be30a2a1b2e14be.png

(3)删除父表一个元素

38dd74777373803e838a925f30bbc7ab.png

父表中的3、C删除之后,子表1、Tom、3也删除了

6、表级约束,列级约束

07e597c551a4553d830370e8f2b01593.png

二、修改数据表

一 、添加列

2b5d82183e08f74b55044ab4a5e41c26.png

73202be0e6fce4c0aa0e7ae079e36271.png

ef26ec90a19ec9e7c9d0a50611039c37.png

74a60c4cc55acdc5f012e74b260be2f9.png

二、添加约束

de9b542e064e98be7e03851540777b3c.png(示例)

1、添加主键约束

eefdd11ef5ed8015999ff7e5e61256d8.png

mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);

2、添加唯一约束

ad3a6ed5940db693bbca032cc95dc89b.png

mysql> ALTER TABLE users2 ADD UNIQUE (username);

3、添加外键约束

dc426c665b9b44ca8bd3c7340776fdbb.png

mysql>  ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);

4、添加/删除默认约束

ac1aa939e2b40167878bd6c796e70cf5.png

添加默认:mysql> ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;

修改默认值:mysql> ALTER TABLE users2 ALTER age SET DEFAULT 15;

删除默认值:mysql> ALTER TABLE users2 ALTER age DROP DEFAULT;

三、删除约束

1、删除主键约束

19e0b0155f56a94dcd6d2fb0d7d7cccd.png

mysql> ALTER TABLE users2 DROP PRIMARY KEY;

2、删除唯一约束

afb55d12e9bad9c8f953cd2caa435638.png

mysql> SHOW INDEXES FROM users2\G;//显示INDEXES

*************************** 1. row ***************************

Table: users2

Non_unique: 0

Key_name: username

Seq_in_index: 1

Column_name: username

。。。。。。

*************************** 2. row ***************************

Table: users2

Non_unique: 1

Key_name: pid

Seq_in_index: 1

Column_name: pid

。。。。。。

1d437b19040c72e4b785896b30ffbfdc.png

mysql> ALTER TABLE users2 DROP INDEX username ;

(删除约束而不是字段)

3、删除外键约束

94f43e2f84288666cc6b1d5c4d6acfa4.png

(1)查看属性mysql> SHOW CREATE TABLE users2;

cb9d2cf185bee711b591e98b73a47b0b.png

users2_ibfk_1为外键名字

mysql> ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;(利用外键名删除外键)

此时外键已被删除

26fa1546ceb00dbbce36fcf97dcfa3da.png

此时还有索引‘pid’删除它

ALTER TABLE users2 DROP  INDEX pid;

四、修改列定义

766084770ce95ccd3dc6bd3f8a4393f2.png

mysql> ALTER TABLE users2 MODIFY id SMALLINT NOT NULL FIRST;(将id字段调整到第一的位置)

mysql> ALTER TABLE users2 MODIFY id TINYINT NOT NULL;(可以把SMALLINT强转成TINYINT,会有溢出)

abcca788751d825287f2b06ff8a7e59c.png

mysql> ALTER TABLE users2 CHANGE pid p_id TINYINT NOT NULL;(将pid改为p_id)

f320f55713a0605aff6b7461cbbefc27.png

方法一:mysql>  ALTER users2 RENAME users3;

方法二: mysql> RENAME users3 TO users1;(可以对多个数据表更名)

总结:

2fcaff22cfaebc39566311ebe6bb6591.png

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值