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

      

  • 相关阅读:
    UML的相关基础知识
    easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
    easyui datagrid load的时候,提交的时候多了name为数字的参数
    Easyui Dialog 设置初始位置
    投票系统的代码总结
    部门组织机构树的使用
    TCP连接客户端的方法
    播放M3U8的js代码
    JAVA的split的用法
    BOLB转word文件,和word文件转换BOLB
  • 原文地址:https://www.cnblogs.com/wust221/p/3066094.html
Copyright © 2020-2023  润新知