Oracle数据库中创建和维护表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Youth_Mr6/article/details/81461680

DDL:数据定义语言
    是SQL语言集中负责数据结构定义与数据库对象定义的语言,由create,alter与drop三个语法所组成
    
Oracle数据库对象命名原则:
    1)必须由字母开始,长度在1-30字符之间
    2)名字中只能包含A-Z,a-z,0-9,_,$,#
    3)同一个Oracle服务器用户所拥有的对象名字不能重复
    4)名字不能为Oracle的保留字
    5)名字是大小写不敏感

表:
    前提:
        1)具有create table的权限
        2)一定的存储空间

    表分类:
        1)用户表
        2)数据字典表:Oracle自动维护   user_tables
        
    default选项:
        1)指定在插入或更新数据时列的默认值
        2)合法的值可以是字面值,表达式或SQL函数
        3)非法的值是另一个列的名称或虚拟列
        4)默认值的数据类型必须和列的类型匹配

    表操作:
        1)创建表(create):
            1-1)普遍建表
                create  table  表名(
                    列名  数据类型 [属性特征],
                    列名  数据类型 [属性特征],
                    ... 
                    列名  数据类型 [属性特征]
                )
            1-2)子查询建表
                语法:
                    create  table  表名 as 子查询;
                PS:
                    1)子查询中select列表中的表达式列(如sal+100)需要给定别名,如果没有别名会出错
                    2)新表的字段列表必须与子查询中的字段列表匹配
                    3)字段列表可以省略
            1-3)引用另一个用户的表
                select  *  from  方案名.表名;
            注意点:创建表时可以使用默认值
        2)修改表(alter):
            语法:alter  table  表名 add()
                                    modify
                                    drop
                                    RENAME COLUMN 原有列名 TO 新列名
        3)删除表(drop):
            drop  table 表名;
        4)截断表(truncate):表的所有或者有delete any table权限
            TRUNCATE  TABLE  表名;
        5)重命名表(rename):表的创建者
            RENAME 旧表名 TO 新表名;
            
    修改表的注意点:
        增加新列:
            1)可以添加或修改列
            2)不能指定新添加列的位置,新列会成为最后一列
        
        修改已存在的列:
            1)可以修改列名,数据类型,长度和默认值
            2)修改数据类型:已有的行数据必须为空(对应列为空)
            3)修改长度原则
                3-1)数值型修改长度
                    3-1-1)当长度向小改时,已有行数据该列必须为空;
                    3-1-2)当长度向大改时,可以随意修改
                3-2)字符型修改长度
                    3-2-1)当长度向小改时,只要修改后的值能容纳下当前已有数据的最大值即可;
                    3-2-2)当长度向大改时,可以随意修改
            4)修改列的默认值:
                默认值的修改不会影响已经存在的行,只影响新增加的行
            
        删除列:
            1)可以用drop字句从表中删除列,包括列的定义和数据
            2)列可以有也可以没有数据
            3)表中至少保留一列(不能删除表中仅剩的最后一列)
            4)列被删除后,不能再恢复
            5)被外键引用的列,不能被删除
            
    删除表注意点:
        1)只有表的创建者或具有drop any table权限的用户才能删除表
        2)表中所有数据和结构都被删除
        3)任何视图和同义词都被保留但无效
        4)所有与其相关的约束和索引被删除
        5)任何未完成的事务被提交
        
    truncate和delete的区别:
        1)truncate是DDL语句,释放存储空间,使用rollback不可以回滚
        delete是DML语句,不释放存储空间,使用rollback可以回滚
        2)truncate只能删除表中所有记录,delete可以有条件的删除
        3)truncate一页页删除,delete一行行删除
    
    数据类型:
        1)char:占用固定长度的空间,不够用空格填充
        2)varchar2:长度可变
        3)clob:长度可变,存储大数据(字节,文本),最大存储4GB
        4)number: 
            4-1)number:数值型(整数或小数),表示范围-10的125次方~10的126次方
            4-2)number(n):表示一个n位的整数
            4-3)number(p,s):表示一个小数,小数位位数是s,
                4-3-1)s>0:只能表示小数,精确到小数点右边s位,并四舍五入,然后检验有效位位数是否<=p
                4-3-2)s<0:只能表示整数,并且精确到小数点左边s为,进行四舍五入,然后检验有效位位数是否<=p+|s|
                4-3-3)s=0:只能表示整数
                4-3-4)p<s:只能表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p为必须是0,保留s位小数
        5)date:年月日时分秒
        6)timestamp:时间戳:精确到毫秒
        7)blob:存储大数据(二进制,视频,音频,图片),最大存储4GB
        
    数据字典表:
        数据字典表由Oracle服务器创建和维护表,通过数据字典,可以很容易了解当前用户的对象信息.比如user_tables这个数据字典表,里面保存当前用户所有的表对象
        
方案:逻辑概念
    用户名同名,表示该用户下所有数据库对象的集合.创建一个用户后,在该用户下创建第一张表后,Oracle会自动给该用户分配一个方案,方案名与用户名相同.
    
表空间:物理概念
    物理地址,数据文件(.dbf),一个表空间可以有一个或者多个数据文件,一个数据文件只能属于一个表空间
    

猜你喜欢

转载自blog.csdn.net/Youth_Mr6/article/details/81461680
今日推荐