MySql 学习之路-高级2
程序员文章站
2022-06-24 12:59:15
1.约束 说明:SQL约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止,约束可以在建表是规定,也可以在建表后规定,通过ALTER TABLE 实现. 语法: 约束有如下几种常用: 针对以上约束,我们来看下具体的应用实例 实例1: 如果给列起名字或者给多个列附加多个约束可以使用 ......
目录:
1.约束 2.ALTER TABLE 3.VIEW
1.约束
说明:SQL约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止,约束可以在建表是规定,也可以在建表后规定,通过ALTER TABLE 实现.
语法:
CREATE TABLE TABLENAME ( COLUMN_NAME1 DATA_TYPE(SIZE) CONSTRAINT_NAME, COLUMN_NAME2 DATA_TYPE(SIZE) CONSTRAINT_NAME, COLUMN_NAME3 DATA_TYPE(SIZE) CONSTRAINT_NAME );
约束有如下几种常用:
NOT NULL -- 指示某列不能存储NULL值 UNIQUE -- 保证某列的每行必须有唯一值 PRIMARY KEY -- 前2个约束的结合,每个表只能有一个PRIMARY KEY 约束 CHECK -- 保证列中的值复合指定的条件 DEFAULT -- 规定没有给列赋值时的默认值
针对以上约束,我们来看下具体的应用实例
实例1:
1 CREATE TABLE TABLENAME 2 ( 3 ID INT NOT NULL AUTO_INCREMENT, 4 NAME VARCHAR(255) UNIQUE , 5 AGE INT , 6 CITY VARCHAR(255) DEFAULT 'CHINA', 7 PRIMARY KEY (ID), 8 CHECK (AGE > 18) 9 );
如果给列起名字或者给多个列附加多个约束可以使用下面的方法
实例2:
1 CREATE TABLE TABLENAME 2 ( 3 ID INT NOT NULL AUTO_INCREMENT,-- 自动填充此列 从1开始 4 NAME VARCHAR(255) UNIQUE , 5 AGE INT , 6 CITY VARCHAR(255) DEFAULT 'CHINA', 7 PRIMARY KEY (ID), 8 CHECK (AGE > 18) 9 CONSTRAINT 别名 约束名 (列1,列2,..) 10 );
如果多个列添加UNIQUE约束,第9行代码可以改成如下形式
CONSTRAINT UNIQUE_NAME UNIQUE (AGE,CITY)
如果多个列添加CHECK约束,第9行代码可以改成如下形式
CONSTRAINT CHECK_NAME CHECK (AGE>18 AND CITY = 'CHINA')
我们已经建立表的几个约束,那么如果我们执行如下SQL时会报错
INSERT INTO TABLENAME VALUES(1,'XUECHAO',22,'CH'); INSERT INTO TABLENAME VALUES(2,'XUECHAO',15,'CH');
因为NAME已经添加了UNIQUE约束,AGE添加了CHECK约束
PS:我还是个菜鸟,理解的不是很全面, 我理解的约束就是这样的,如果您有什么不同的理解,可以评论区告诉我,很感谢!
2.ALTER TABLE
说明:前面我们在建表的时候已经添加了约束,如果我们建表的时候没有添加约束,那么我们可以通过ALTER TABLE 在表后添加约束,下面来看看下面的实例
实例1:
ALTER TABLE TABLENAME ADD UNIQUE (ID); 或 ALTER TABLE TABLENAME ADD CONSTRAINT UN_NAME UNIQUE (ID , NAME);
添加别的约束也是同样的原理和写法
说明:ALTER TABLE 能够给表附加约束,还有另外一个用途,向表中添加新字段,删除字段,修改字段数据类型(我知道的就这些 ^_^)
实例2:
1 ALTER TABLE TABLENAME ADD COLUMN SCORE INT;-- 新增字段SCORE 2 3 ALTER TABLE TABLENAME MODIFY SCORE VARCHAR(255); -- 修改字段数据类型 4 5 ALTER TABLE TABLENAME DROP COLUMN SCORE; -- 删除字段
视图再补充吧,有点忙没时间写了。。。。。。。。。。。