Oracle学习(三)SQL高级--表结构相关(建表、约束)

一、建表语句

CREATE DATABASE(创建数据库)

--创建数据库
create database 数据库名字;

CREATE TABLE(创建表)

--创建表
CREATE TABLE 表名
(
字段1 类型(长度),
字段2 类型(长度),
字段3 类型(长度),
字段4 类型(长度),
字段5 类型(长度)
);

二、约束语句

SQL 约束用于规定表中的数据规则。

如果存在违反约束的数据行为,行为会被约束终止。

约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

 

约束类型:

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • PRIMARY KEY - (主键)NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - (外键)保证一个表中的数据匹配另一个表中的值的参照完整性。
  • CHECK - 保证列中的值符合指定的条件。
  • DEFAULT - 规定没有给列赋值时的默认值。

NOT NULL(非空约束)

--创建表时增加约束 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;

UNIQUE(唯一约束)

PS:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

--创建表时增加约束 UNIQUE
CREATE TABLE 表名
(
列1 类型(长度) NOT NULL,
列2 类型(长度) NOT NULL,
列3 类型(长度),
列4 类型(长度),
列5 类型(长度),
CONSTRAINT 约束名 UNIQUE (列1,列2)
);

--修改表时,增加约束 UNIQUE (单列约束的情况)
ALTER TABLEADD UNIQUE (列1);

--修改表时,如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束(多列约束的情况)
ALTER TABLEADD CONSTRAINT 约束名 UNIQUE (列1,列2)

--删除约束 UNIQUE
ALTER TABLEDROP CONSTRAINT 约束名

PRIMARY KEY(主键)

  • 主键必须包含唯一的值。
  • 主键列不能包含 NULL 值。
  • 每个表都应该有一个主键,并且每个表只能有一个主键。
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 TABLEADD PRIMARY KEY (列1);

--修改表时,如需命名 PRIMARY KEY 约束,并定义多个列的 PRIMARY KEY 约束(多列约束的情况)
ALTER TABLEADD CONSTRAINT 约束名 PRIMARY KEY (列1,列2)


--删除约束 PRIMARY KEY(有约束名的场景)
ALTER TABLEDROP CONSTRAINT 约束名

--删除约束 PRIMARY KEY(未定义约束名的场景)
ALTER TABLEDROP CONSTRAINT 列名

 FOREIGN KEY(外键)

  • 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
  • FOREIGN KEY 约束用于预防破坏表之间连接的行为。
  • FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
--创建表时增加约束 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 TABLEADD FOREIGN KEY (当前表的字段)
REFERENCES 外键关联的表名(外键关联的表字段);

--修改表时,如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束(多列约束的情况)
ALTER TABLEADD CONSTRAINT 约束名 FOREIGN KEY (当前表的字段)
REFERENCES 外键关联的表名(外键关联的表字段);


--删除约束 FOREIGN KEY(有约束名的场景)
ALTER TABLEDROP CONSTRAINT 约束名

--删除约束 FOREIGN KEY(未定义约束名的场景)
ALTER TABLEDROP CONSTRAINT 列名

CHECK(校验)

  • CHECK 约束用于限制列中的值的范围。
  • 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
  • 如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
--创建表时增加约束 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 TABLEADD CHECK (校验条件);

--修改表时,如需命名 CHECK 约束,并定义多个列的 CHECK 约束(多列约束的情况)
ALTER TABLEADD CONSTRAINT 约束名 CHECK (校验条件1 AND 校验条件2);


--删除约束 CHECK(有约束名的场景)
ALTER TABLEDROP CONSTRAINT 约束名

--删除约束 CHECK(未定义约束名的场景)
ALTER TABLEDROP CONSTRAINT 列名

DEFAULT (默认值)

--创建表时增加约束 DEFAULT  
CREATE TABLE 表名
(
列1 类型(长度) PRIMARY KEY,
列2 类型(长度),
列3 类型(长度) DEFAULT 默认值
);

--修改表时,增加约束 DEFAULT  (单列约束的情况)
ALTER TABLE 表 MODIFY 列 DEFAULT 默认值

--删除约束 DEFAULT 
ALTER TABLEALTER COLUMNDROP DEFAULT

猜你喜欢

转载自www.cnblogs.com/riches/p/11249529.html