--创建数据库 create database 数据库名字;
--创建表 CREATE TABLE 表名 ( 字段1 类型(长度), 字段2 类型(长度), 字段3 类型(长度), 字段4 类型(长度), 字段5 类型(长度) );
SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
约束类型:
--创建表时增加约束 NOT NULL CREATE TABLE 表名 ( 列1 类型(长度) NOT NULL, 列2 类型(长度) NOT NULL, 列3 类型(长度), 列4 类型(长度), 列5 类型(长度) ); --删除约束 NOT NULL alter table 表 modify 列 null; --设置约束 NOT NULL alter table 表 modify 列 not null;
PS:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。 --创建表时增加约束 UNIQUE CREATE TABLE 表名 ( 列1 类型(长度) NOT NULL, 列2 类型(长度) NOT NULL, 列3 类型(长度), 列4 类型(长度), 列5 类型(长度), CONSTRAINT 约束名 UNIQUE (列1,列2) ); --修改表时,增加约束 UNIQUE (单列约束的情况) ALTER TABLE 表 ADD UNIQUE (列1); --修改表时,如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束(多列约束的情况) ALTER TABLE 表 ADD CONSTRAINT 约束名 UNIQUE (列1,列2) --删除约束 UNIQUE ALTER TABLE 表 DROP CONSTRAINT 约束名
PS:每个表都应该有一个主键,并且每个表只能有一个主键。 --创建表时增加约束 PRIMARY KEY CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度), 列4 类型(长度), 列5 类型(长度) ); --创建表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)PS:这种情况还是只有一个主键。然而,此时主键的值是由两个列(列1和列2)组成的 CREATE TABLE 表名 ( 列1 类型(长度), 列2 类型(长度), 列3 类型(长度), 列4 类型(长度), 列5 类型(长度), CONSTRAINT 约束名 PRIMARY KEY (列1,列2) ); PS:用ALTER TABLE 语句添加主键(即修改表的场景),必须把主键列声明为不包含 NULL 值(在表首次创建时)。 --修改表时,增加约束 PRIMARY KEY (单列约束的情况) ALTER TABLE 表 ADD PRIMARY KEY (列1); --修改表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况) ALTER TABLE 表 ADD CONSTRAINT 约束名 PRIMARY KEY (列1,列2) --删除约束 PRIMARY KEY(有约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 PRIMARY KEY(未定义约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 列名
--创建表时增加约束 FOREIGN KEY CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度) FOREIGN KEY REFERENCES 外键关联的表名(外键关联的表字段) ); --创建表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束 CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度), CONSTRAINT 约束名 FOREIGN KEY (当前表的字段) REFERENCES 外键关联的表名(外键关联的表字段) ); --修改表时,增加约束 FOREIGN KEY (单列约束的情况) ALTER TABLE 表 ADD FOREIGN KEY (当前表的字段) REFERENCES 外键关联的表名(外键关联的表字段); --修改表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束(多列约束的情况) ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (当前表的字段) REFERENCES 外键关联的表名(外键关联的表字段); --删除约束 FOREIGN KEY(有约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 FOREIGN KEY(未定义约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 列名
--创建表时增加约束 CHECK CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度) CHECK (校验条件,如:列3>0) ); --创建表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束 CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度), CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2) ); --修改表时,增加约束 CHECK (单列约束的情况) ALTER TABLE 表 ADD CHECK (校验条件); --修改表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束(多列约束的情况) ALTER TABLE 表 ADD CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2); --删除约束 CHECK(有约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 约束名 --删除约束 CHECK(未定义约束名的场景) ALTER TABLE 表 DROP CONSTRAINT 列名
--创建表时增加约束 DEFAULT CREATE TABLE 表名 ( 列1 类型(长度) PRIMARY KEY, 列2 类型(长度), 列3 类型(长度) DEFAULT 默认值 ); --修改表时,增加约束 DEFAULT (单列约束的情况) ALTER TABLE 表 MODIFY 列 DEFAULT 默认值 --删除约束 DEFAULT ALTER TABLE 表 ALTER COLUMN 列 DROP DEFAULT
Oracle学习(三)SQL高级--表结构相关(建表、约束)
原文:https://www.cnblogs.com/riches/p/11249529.html