1.有关表结构操作命令
SQL>create table <表名>
(<字段名1><类型>
[ ,<字段名2><类型>,…]);
create table employee
( no number(6) primary key,
name varchar2(10) not null,
deptno number(2) default 10,
salary number(7,2) CHECK salary <100000,
birth_date date,
soc_sec_num char(9) unique,
foreign key (deptno) references dept(deptno))
tablespace USERS;
一般表名, 列名的标识符长度不超过30个字符, 字母大小写不分, 内部存储均用大写
复制表结构命令
SQL>create table<表名>
as <select 语句>
复制一个与emp表的表结构相同的表emp2
SQL>create table emp2
as select * from emp
[where 1=2];
where 1=2;表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去的,
用创建表命令和一个子查询配合实现。还可以复制一个表的部分列定义或部分列定义及其数据
SQL> create table emp3
as select empno, ename, sal
from emp
[where sal>3000];
该命令执行先依子查询中表结构来定义所建的表结构,然后根据条件将查询结果装入新建表中.
2.修改表结构命令
它包括对现存表增加新的列名和修改列定义
增加新列名命令:
SQL>alter table <表名> add(<列名定义>);
SQL>alter table employee
add (addr varchar2(50));
修改列定义命令:
SQL>alter table <表名>
modify (<列定义>);
SQL>alter table emp2
modify (ename char(16));
删除表命令
SQL>drop table <表名>
对表重新命名
SQL>rename <原表名> to <新表名>
3.有关视图的操作
视图是一种特殊的表,是建立在基表上的虚表,
是基表的一个数据窗口,通过视图可对表中数据操作,
是实现对数据的保密及数据的安全性的一种手段。
创建视图命令
SQL>create view <视图名>[(<视图列名表>)]
as <select 语句>
[with check option]
列名出现的顺序、个数与select命令中出现的列名顺序,
个数相对应,若不指出视图列名,则与select命令中所指定的表的列名相同。
命令中有with选项,通过视图向表作插入,修改的数据必须满足视图定义中查询子句指定的条件
SQL> create or replace view emp10_view(person, title, salary)
as select ename, job, sal
from emp
where deptno=10
[with check option ] ;
定义视图命令总是要一个由AS引出的查询子句即select,但是不能包含order by子句,
选项 with check option 指出:要想通过视图插入记录或修改记录必须是10号部门,否则不能进行
SQL>select deptno,sum(sal)
from emp
where sum(sal)>5000 ---错误
group by deptno;
(组合函数不可出现where子句中)
通过视图对表中数据作增,删,改等更新操作,如同对基表操作一样,但需注意几点。
(1)、delete 操作
a. 仅能对单表创建的视图操作
b. 定义视图的子查询中,不含有group by子句
distinct子句,及各集函数等项。
(2)update操作:
a,b同上;
c.子查询中没有定义任何带有表达式的更新列
(3)insert操作:
a,b,c同上;
d. 定义视图的基表中所有NOT NULL列,都在该视图中出现。
在创建视图时,注意最好在查询中不用select*的形式建
视图,因表结构是视图定义一部分,基表结构一旦修改
视图与其不相对应则视图就不能正确工作。
删除视图命令
sql>drop view <视图名>;
4.有关索引的操作
索引的操作包含建立索引和删除索引
建立索引的目的用于查询:
a. 是为了提高查询速度;
b.为保证表中某一列值的唯一性;
c.为能加速连接查询
建立索引的命令:
SQL> create [unique] index<索引名>
on<表名>(<列名1>[ASC/DESC])
[,<列名2>[ASC/DESC]]…);
索引建好后由系统自动选择使用,用户不能也不必在查询数据时选择索引
建立索引的准则:
(1) 表中行数为几百以上,表越大,使用索引越能提高检索效率,
索引越多,数据库就有较多机会找捷径,为主要用于查询的大表建索引
(2)尽量不要在一表上建立多个索引。因索引需要磁盘空间,
同时会降低数据更新的执行速度,因库中数据更新,涉及到建索引列值的改变,
系统会维护索引 ,索引越多维护工作量越大。
所以建索引能提高检索速度,但同时降低了更新速度
(3)为经常在查询中、表连接中用到的列建索引
删除索引命令
SQL>drop index <索引名>
[ on <表名> ];
5.创建同意词
同义词是数据库对象。就是用户为表、视图或其它同义词建立一个别名
若为表建立了同义词,就可通过同义词对该表进行操作。
优点:
a.隐藏表的拥有者或表名。
b.隐藏表的具体位置。
c.使用简单方便。
同义词可提供数据的独立性和位置的透明性
建立同义词命令:
SQL>create [public] synonym
<同义词名> for <[用户名·]表名>;
create synonym emp for scott.emp;
删除同义词命令:
SQL>drop [public] synonym <同义词名>