oracle数据库笔记1数据定义对象

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

  

原文地址:https://www.cnblogs.com/wust221/p/3066094.html