欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DDL数据库对象管理

程序员文章站 2022-03-23 13:31:47
DDL数据库对象管理 约束的分类: 主键约束:primary key 要求主键列数据唯一,并且不允许为空。 外键约束:foreign key 用于在两表之间建立关系,需要指定引用主表的哪一列。 检查约束:check 某列取值范围限制、格式限制等。 例如性别列 唯一约束:unique 数据的唯一性,可 ......

ddl数据库对象管理

 

约束的分类:

主键约束:primary key 要求主键列数据唯一,并且不允许为空。

外键约束:foreign key 用于在两表之间建立关系,需要指定引用主表的哪一列。

检查约束:check 某列取值范围限制、格式限制等。 例如性别列

唯一约束:unique 数据的唯一性,可以空,但只能有一个

非空约束:not null 该列数据不能为空

注意:1.not null 约束只能在列级上定义。

2. 外键需要关联主键表的主键列或唯一列,这里关联唯一列

3. 创建外键表时:先创建主键表,在创建外键 。删除表时:先删除外键表,在删除主键表

 

1.创建表格

-- create table 表格名称(列名 数据类型 约束 ,列名 数据类型 ,约束);

create table cla

(

clano number,

claid nvarchar2(20),

claname nvarchar2(20)

);

--在创建完列后,同时创建约束(列级约束)

例如:

create table t1(

id number constraint pk_t1 primary key, -- 声明约束可以使用constraint pk_t1指定约束名

name varchar(20) constraint un_t1_name unique not null, -- 唯一和非空

sex char(2) constraint ck_t1_sex check( sex in ('男','女')),

tid number constraint fk_t1_t references t(id)

);

 

--在创建完表格列后,在列下面创建约束(表级约束)

例如:

create table t2(

id number ,

name varchar(20) not null, -- not null 只能定义在列的后面,称为列级约束

sex char(2),

tid number ,

constraint pk_t2 primary key(id), ---先定义列后编写的约束称为表级约束;

constraint un_t2_name unique(name) ,

constraint ck_t2_sex check( sex in ('男','女')),

constraint fk_t2_t foreign key (tid) references t(id) -- 在表格后指定外键列时需要使用 foreign key指定外键列

);

 

--联合主键,联合唯一

create table t3(

id number ,

sid number ,

name nvarchar2(20),

name2 nvarchar2(20),

constraint pk_t3 primary key(id,sid), -- 联合主键

constraint un_t3_name_name2 unique(name,name2) -- 联合唯一

);

 

2.修改表格

--修改表格之添加主键,唯一约束,外键约束,检查约束

例如:

1.alter table cla add constraint pk_cla primary key (clano);

2.alter table cla add constraint un_cla_claid unique (claid);

3.alter table stu add constraint fk_stu_cla foreign key (classid) references cla (clano);

4.alter table stu add constraint ck_stu_sex check (sex in ('男','女'));

 

 

3.删除表格

语法: drop table 表格名称

注意:删除主键表前,需要先删除外键表上的引用关系

drop table cla2;

 

4. 查询表格 (不属于ddl)-----

select table_name from user_tables;

 

补充:

1 . references 和 reference 的区别

references 可以在定义列的同时引用主键表;reference不可以

2. 声明约束可以使用constraint pk_t1指定约束名

3. 外键需要关联主键表的主键列或唯一列

4.如果没有声明约束或指定约束名称,则系统会默认生成一个名称