mysql表的约束有几种_MySQL之表约束

MySQL表约束

约束是一种限制,它通过对表的行或者列的数据做出限制,来确保表数据的完整性和唯一性. 在mysql当中一般有一下这几种约束:

非空约束。

唯一约束。

主键约束。

自增长。

默认约束。

外键约束。

表结构操作:

ALTER TABLE 'tbname'

增加 :ADD

删除 :DROP

修改 :MODIFY #改列的数据类型

CHANGE #改列名和数据类型

RENAME #改表名

#ADD

mysql> ALTER TABLE `tb1`

-> ADD (`age` INT,

-> `number` INT);

#DROP

mysql> ALTER TABLE `tb1`

-> DROP `number`;

#MODIFY

mysql> ALTER TABLE `tb1`

-> MODIFY `age` VARCHAR(4);

#CHANGE

mysql> ALTER TABLE `tb1`

-> CHANGE `age` `ages` INT;

#RENAME

mysql> ALTER TABLE `tb1` RENAME `tb2`;

#表名和字段名,尽量避免修改,即便是在封装得很好的情况下也要修改代码,如果是上线的东西就更加不要修改

非空约束

就是限制数据库中某个值是否可以为空,null字段值可以为空,not null字段值不能为空

cc15629b2dc3dee100ec81137a4895f5.png

注意: 如果你的约束不生效可以先设置一下sql_modeset session sql_mode='STRICT_TRANS_TABLES'。

唯一约束

字段添加唯一约束之后,该字段的值不能重复,也就是说在一列当中不能出现一样的值。

# 添加唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]

UNIQUE [INDEX|KEY] [index_name] [index_type]

(index_col_name)

# 删除唯一约束

ALTERT TABLE tbl_name DROP {INDEX|KEY} index_name

已经添加的值不能再重复的插入

9fca0a2eb71fd538493dc3d7b960d6f5.png

主键约束

主键保证记录的唯一性,主键自动为NOT NULL 每张数据表只能存在一个主键 NOT NULL + UNIQUE KEY 一个UNIQUE KEY 又是一个NOT NULL的时候,那么它被当做PRIMARY KEY主键 当一张表里没有一个主键的时候,第一个出现的非空且为唯一的列被视为有主键。

#添加主键约束

ALTER TABLE tbl_name ADD [CONSTRAINT[sysbol]]

PRIMARY KEY [index_type] (index_col_name)

#删除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

1adb1aba3730ca8e9d262791f296b7b1.png

自增长AUTO_INCREMENT

AUTO_INCREMENT自动编号,且必须与主键组合使用 默认情况下,起始值为1,每次的增量为1。 当插入记录时,如果为AUTO_INCREMENT数据列明确指定了一个数值,则会出现两种情况:

如果插入的值与已有的编号重复,则会出现出错信息,因为AUTO_INCREMENT数据列的值必须是唯一的;

如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。也就是说,可以跳过一些编号。如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。

添加自增长

mysql> ALTER TABLE user CHANGE id id INT NOT NULL AUTO_INCREMENT;

mysql> DESCRIBE user

mysql> SELECT * FROM user;

插入值

mysql> INSERT INTO `user`(`name`,`number`) -> VALUES('take',2), -> ('which',4) -> ;

mysql> SELECT * FROM `user`;

删除自增长

mysql> ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL ; mysql> DESCRIBE `user`;

默认约束

添加/删除默认约束

ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

设置默认值

mysql> ALTER TABLE `user` ALTER `number` SET DEFAULT 0; mysql> DESCRIBE `user`;

插入值

mysql> ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; mysql> INSERT INTO `user`(`name`) VALUES('rock'); mysql> SELECT * FROM `user`;

查找值

mysql>select * from teacher where id=(select teacher_id from students where name='twj');

外键约束

外键约束要求数据表的存储引擎只能为InnoDB

查看当前mysql服务器支持的存储引擎

SHOW ENGINES;

编辑数据表的默认存储引擎

MySQL配置文件 ->/etc/my.cnf [mysqld] default-storage-engine=INNODB

改完配置文件要重启服务

sudo service mysqld restart

a3697d5065495a974c1484ce37a63c7f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值