东软实习之数据库(10)——创建和维护表

    #数据定义语言

        数据定义语言: (Data Definition Language, DDL) 是SQL语言集中负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成。


    #数据库对象

        数据库对象,是数据库的组成部分,有表、约束、索引、视图、序列、同义词、触发器、存储过程、函数、用户等。

          

      Oracle中数据库对象命名原则

      • 必须由字母开始,长度在 1–30个字符之间。
      • 名字中只能包含 A–Z, a–z, 0–9, _ (下划线),$ 和 #。
      • 同一个Oracle服务器用户所拥有的对象名字不能重复。
      • 名字不能为Oracle的保留字。
      • 名字是大小写不敏感

 

    #创建表

        建表语句语法

        

        您必须具备 :

      • CREATE TABLE的权限
      • 一定的存贮空间(ALTER USER 用户名 QUOTA 尺寸 ON 表空间名字)

        您需要指定:

      • 表名
      • 列名、列的类型及列的宽度

        DEFAULT 选项

      • 指定在插入或更新数据时,列的默认值
      • 合法的值可以是字面值、表达式或SQL函数
      • 非法的值是另一个列的名称或虚拟列
      • 默认值的数据类型必须和列的类型匹配

       #数据类型

         

        

      #建表语句语法

          默认值应用 插入默认值

           

          

      #用子查询语法创建表

           

          新表的字段列表必须与子查询中的字段列表匹配

          字段列表可以省略

           

          Select列表中的表达式列需要给定别名,如果没有别名会产生错误

       #引用另一个用户的表

           如果一个表不属于当前用户,如果引用它,必须把方案名放在表名的前面。例如,scott.emp

           

     #Oracle中表的分类

       Oracle 数据库中的表分为下面两类:

      • 用户表:由用户创建和维护的表的集合,它包含用户所使用的数据。
      • 数据字典:由Oracle 服务器创建和维护的表的集合,它包含数据库信息,比如是表的定义,数据库结构的信息等,可以把它理解为管理表的表,由Oracle服务器创建和维护。如user_tables


   ##修改表 

        

      #添加新列

          增加列原则: 可以添加或修改列 /不能指定新添加列的位置,新列会成为最后一列。

          如在dossier表上增加性别字段

           

      #修改已存在的列

      列的修改可以修改数据类型,长度,及默认值。

      修改数据类型:已有的行数据必须为空。

      修改长度原则:

         数值型修改长度:当长度向小改时,已有行的数该列必须为空;当长度向大改时,可以随意修改。

         字符型修改长度:当长度向小改时,只要修改后的值能容纳下当前已有数据的最大值即可,当长度向大改时,可以随意修改。

      修改列的默认值: 默认值的修改不会影响已经存在的行,只影响新增加的行。

      

      #删除列

      可以用DROP子句从表中删除列,包括列的定义和数据。

      删除列原则:

      • 列可以有也可以没有数据。
      • 表中至少保留一列。
      • 列被删除后,不能再恢复。
      • 被外键引用的列,不能被删除。

        



    ##删除表

         删除表语法:

         

        只有表的创建者 或具有DROP ANY TABLE权限的用户才能删除表

        删除表原则:

      • 表中所有的数据和结构都被删除。
      • 任何视图和同义词被保留但无效。
      • 所有与其相关的约束和索引被删除。
      • 任何未完成的事务被提交。

        



    ##重命名表

         



    ##截断表

         

        TRUNCATE和DELETE区别

          TRUNCATE是DDL,只能删除表中所有记录,释放存储空间,使用ROLLBACK不可以回滚。

          DELETE是DML,可以删除指定记录,不释放存储空间,使用ROLLBACK可以回滚。

 



    ##相关数据字典

         



 

    ##本章重点总结

    1. 数据类型
    2. 表的两种创建方式
    3. 修改表的三种情况:添加列、修改原有列的属性、删除列
    4. 删除表
    5. 重命名表
    6. 截断表

 

posted @ 2018-07-19 14:31  HIT王新宇  阅读(175)  评论(0编辑  收藏  举报