含义
: 一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性。mysql
先把Mysql几种约束列出来:sql
主键约束
外键约束
惟一性约束
非空约束
默认值约束
自增约束
code
MySQL不支持check约束,但可使用check约束,而没有任何效果。索引
很少说理论,说下语法和示例就好。rem
drop table student; CREATE TABLE student( id INT PRIMARY KEY auto_increment,#主键 自增 name VARCHAR(20) NOT NULL UNIQUE,#非空 惟一 xh INT UNIQUE,#惟一 age INT DEFAULT 18 #默认约束 )ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表'; -- 上面和下面是同样的,只不过是另外一种写法 drop table student; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `xh` int(11) DEFAULT NULL, `age` int(11) DEFAULT '18', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), UNIQUE KEY `xh` (`xh`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生表';
这里命令是查看索引的命令,由于创建主键约束会自动的创建主键索引。博客
一样创建惟一约束也会自动创建惟一索引。table
-- 这里只能看到主键约束,惟一约束。 SHOW INDEX FROM 表名;
上面的约束是建表时候建的,下面是在表建好后独立添加。class
-- 1.添加非空约束 ALTER TABLE student MODIFY COLUMN id INT auto_increment; -- 2.添加默认约束 ALTER TABLE 表名 MODIFY COLUMN 字段名 INT DEFAULT 16; -- 三、主键约束 ALTER TABLE 表名 ADD PRIMARY KEY(字段名); -- 四、惟一约束 ALTER TABLE 表名 ADD UNIQUE(字段名); #字段名能够多个,多个用逗号隔开 -- 五、主键自增 # 注意自增一张表只有一个,同时只能在主键上 ALTER TABLE 表名 MODIFY COLUMN 字段名 INT auto_increment;
-- 一、删除非空约束 ALTER TABLE 表名 MODIFY COLUMN 字段名 VARCHAR(20) NULL; -- 二、删除主键 -- 这里须要注意若是主键设置为自增的状况下是不能删除成功的,由于自增只能设置在主键上,你删主键自增还存在固然不行。 ALTER TABLE 表名 DROP PRIMARY KEY; -- 三、删除惟一 ALTER TABLE 表名 DROP INDEX 字段名;
这应该是我最短的博客了,哈哈语法
只要本身变优秀了,其余的事情才会跟着好起来(少将12)