天天看点

Oracle数据库学习总结_数据表对象一. 表二. 索引三. 约束

文章目录

  • 一. 表
    • <1> 创建表
      • 1. 普通建表
      • 2. 子查询建表
      • 3. 创建临时表
    • <2> 操作表
        • 1. 修改表
        • 2. 删除表
            • (1) 删除表结构和内容
            • (2) 仅删除表内容
    • <3> 操作列
        • 1 添加列
        • 2 修改列
        • 3 删除列
    • <4> 操作注释
  • 二. 索引
    • <1> 创建索引
      • 1. 单列索引
      • 2. 复合索引
      • 3. 唯一索引
    • <2> 维护索引
      • 1.重建索引
      • 2.删除索引
  • 三. 约束
    • <1> 创建约束
      • 先区分-> 表级约束 和 列级约束
      • 1. not null 非空约束
      • 2. unique 唯一约束
      • 3. primary key 主键约束
      • 4. foreign key 外键约束
      • 5. check 条件约束
    • <2> 维护约束
      • 1. 修改约束名
      • 2. 激活/禁止约束
      • 3. 删除约束

一. 表

<1> 创建表

1. 普通建表

create table department ( 
	dep_no number(2) primary key comment '主键',
	dep_name varchar2(20) not null ,
	location varchar2(40) default 'QingDao' not null # 列名 类型 默认值 约束
);
           

2. 子查询建表

create table emp_new ( 
		name, 
		job, 
		salary, 
		hiredate )
as ( select 
			name, 
			job, 
			salsry, 
			hiredate 
		from 
			emp 
		where 
			dep_no = 30 );
           

3. 创建临时表

create global temporary table employee_temp ( 
	temp_no number(3) 
);
           

<2> 操作表

1. 修改表

2. 删除表

(1) 删除表结构和内容

(2) 仅删除表内容

<3> 操作列

1 添加列

alter table department add( 
	sex char(4) default '无' 
);
           

2 修改列

alter table department modify ( 
	dep_no number(3) primary key 
);
           

3 删除列

alter table department drop ( 
	location
);
           

<4> 操作注释

comment on table 
	employee is '雇员表';
comment on column 
	emmployee.emp_name is '雇员姓名';

// 想要删除注释, 设置为空即可( 据说可以设置为 null??? 待尝试, 待更新确认 ), 如下
comment on table employee is ' ';
           

二. 索引

<1> 创建索引

1. 单列索引

2. 复合索引

create index 
	index_dep_no_and_dep_name on department( dep_no, dep_name );
           

3. 唯一索引

// 注意创建唯一索引的列 不能有重复值 !
create unique 
	index_dep_no on department( dep_bo );
           

<2> 维护索引

1.重建索引

create index 
	index_dep_no 
rebuild;
           

2.删除索引

三. 约束

<1> 创建约束

先区分-> 表级约束 和 列级约束

constraint 
	constraint_age check( age between 1 and 18 );
           
alter table 
	employee 
add constraint 
	constraint_pone check( phone_no like '1%' );
           

1. not null 非空约束

2. unique 唯一约束

3. primary key 主键约束

4. foreign key 外键约束

# 列级
create table employee ( 
	emp_no number(2) primary key,
	emp_name varchar(12) not null,
	age number(2) not null,
	salary number(7) not null,
	phone_no number(16),
	dep_no number(2) constraint frk_dep_no references department(dep_no) );
           
# 表级
constraint 
	emp_primary 
foreign key( dep_no ) references department( dep_no );
           

5. check 条件约束

check( sex in( '男', '女' ) ) 
check( sex = '男' or sex = '女' )
           

<2> 维护约束

1. 修改约束名

alter table 
	department 
rename constraint 
	constraint_old 
	to 
	constraint_new;
           

2. 激活/禁止约束

alter table 
	department 
disable 
	constraint_department;
           
alter table 
	department 
enable constraint_department;
           

3. 删除约束

alter table 
	department 
drop constraint 
	constraint_department;

# 注意删除主键的时候

alter table 
	department 
drop primary key; # 删除此表的主键, 若有关联会报错

alter table 
	department 
drop primary key cascade; # 级联删除, 先解除此表的所有关联, 再删除主键