数据库对象的创建与管理
SQL基本的增删改查
目录
一、表的创建与管理
(1)创建表
员工表(员工编号、姓名、薪水、性别)
create table emp(
emp_id number(6,0) primary key,
name varchar2(20) not null unique,
salary float,
sex check in('男','女')
)
(2)修改表
为emp表增加一列生日属性
alter table emp add(birthday DATE DEFAULT SYSDATE not null);
修改约束,如添加主键约束
alter table student add CONSTRAINT T_PK primary key(id);
(3)查询表
查询当前用户的表名、表空间名
select table_name,tablespace_name from user_tables;
(4)删除表
使用 CASCADE CONSTRAINTS 删除该表的同时删除其它表中相关的外键约束。
drop table student CASCADE CONSTRAINTS;
二、索引的创建与管理
(1)创建索引
在emp表的name列上创建一个索引,保存在indx表空间中。
create INDEX emp_indx on emp(name) tablespace indx;
(2)查询索引
查询emp表的索引名和索引类型
select index_name,index_type
from dba_indexes
where table_name='EMP';
(3)删除索引
drop INDEX emp_indx;
三、视图的创建与管理
(1)创建视图
创建一个视图,包含各个部门的员工人数、平均工资。
create view salary_view
as
select emp_id,count(*) num,avg(salary) avgsal
from emp GROUP BY emp_id;
(2)修改视图定义
修改视图,增加求各个部门的工资总和。
create view salary_view2
as
select emp_id,count(*) num,avg(salary) avgsal,sum(salary) total
from emp GROUP BY emp_id;
(3)查询视图
查询当前用户所有视图名称及视图定义信息。
select view_name,text
from user_views;
(4)删除视图
drop VIEW salary_view;
四、序列的创建与管理
序列用于产生唯一序号的数据库对象,通常使用序列自动生成表中的主键值。
(1)创建序列
创建一个序列,用于产生员工编号,起始值为1000,步长为10,不缓存,不循环。
create sequence emp_seq
start with 1000
increment by 10
maxvalue 9990
NOCACHE NOCYCLE;
(2)序列的使用
修改视图,增加求各个部门的工资总和。
//创建学生表
create table students(
sno NUMBER primary key,
sname char(20)
);
//创建学号序列
create sequence stu_seq
start with 1001
increment by 1
maxvalue 9990
;
//插入数据
insert into student(sno,sname) values(stu_seq.nextval,'Tom');
(3)查询序列
查询当前用户所有视图名称及视图定义信息。
select sequence_name,min_value,max_value,increment_by
from user_sequences
where sequence_name='STU_SEQ';
(4)删除序列
drop sequence stu_seq;