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 <同义词名>