• oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言


    DCL 数据控制语言 Data control language

    之前说过的授权和收权利语句
    grant, revoke

    DDL 数据定义语言 Data define language

    create alter,drop语句,创表,修改表,删除

    创建表

    create table $tablename$(
    	id int,
    	name varchar2(5) --需要声明最大长度
    	money number(6,2) --9999.00
            --最后不能有逗号,否则会创表失败
    )
    /*
    把其他的表的内容与结构复制生成一个新表,新表没有约束
    将其它表的数据二复制到新表中(新表事先 不存在)
    新表具有与查询的表格基本相同的结构,但不会有约束(主键、外键、默认约束..)。
    */
    create table $tablename$ as $othertablename$
    
    -- 把查询的结果的内容和结构生成一个新表
    create table $tablename$ as select * from student 
    

    查看表结构

    desc $tablename$
    

    修改表

    添加约束

    约束用于限制加入表中的数据的合法性:

      1. NOT NULL:非空约束
      1. UNIQUE :唯一约束 UN_表名_列名 规范格式
      1. PRIMARY KEY :主键约束 PK_表名_列名
      1. FOREIGN KEY :外键约束 FK_表名_列名
      1. CHECK :检查约束 CHK_表名_列名
      1. DEFAULT :默认约束 DF_表名_列名

    1.默认约束

    alter table $tablename$ modify (列名 default 默认值);
    --例
    alter table student modify (age default 18);
    

    2.唯一约束

    alter table $tablename$ add constraint UN_$tablename_$columnname$ unique(列名)
    --例
    alter table student add constarint UN_student_num unique(num);
    

    3.主键约束

    alter table $tablenamae$ add constraint PK_$tablename_$columnname$ primary key(列名);
    --例
    alter table student add constraint PK_student_num primary key(num);
    --复合主键(联合主键)
    alter table student add constraint PK_student_numandage primary key(num,age);
    

    4.检查约束

    alter table $tablename$ add constraint CHK_$tablename_$columnname$ check(条件);--条件 且and  或or
    --例
    alter table student add constraint CHK_student_age check(age>=18 and age<=22);
    

    5.外键约束
    存在外键的表称为外键表
    被外键引用的表称为主键表

    • no action(默认)
      删除主键表的某一数据,会拒绝删除,需要先删除外键表中引用了主键表某个数据的那些数据,才能删除主键表的该条数据
    • cascade 级联删除
      当删除主键表的某条数据,外键表引用了主键表的该数据的所有数据都会一起删除
    • set null
      当删除主键表的某条数据,外键表引用了主键表的该数据的所有数据的该列都会设置为null
    alter table tablename add constraint FK_ foreign key() references () [on delete cascade/set null]
    

    cascade update 级联更新类似

    删除约束

    alter table $tablename$ drop constraint 约束名 
    --例
    alter table student drop CHK_student_age;
    

    禁用约束

    alter table $tablename$ disable constraint 约束名
    --例
    alter table student disable constraint CHK_student_age;
    

    修改表名

    --修改表名
    alter table $oldtablename$ rename to $newtablename$;
    

    添加列

    alter table $tablename$ add $列名$ $数据类型$;
    

    删除列

    alter table $tablename$ drop column $列名$;
    

    修改列(列数据类型或数据最大长度)

    alter table $tablename$ modify $列名$ $数据类型$
    

    创建表同时加入约束条件

    create table $tablename$(
    	id int,
    	name,varchar(5),
    	money,number(6,2),
    	constraint pk_CK check... 
    )
    
    --这一种不能指定约束名,而是系统自动生成的约束名,删除的时候比较麻烦
    create table $tablename(
    	id int not null primary key,
    	name varchar(5),
    )
    

    删除表

    drop table $tablename$ --删除的表放入回收站中 
    drop table $tablename$ purge --彻底删除表
    show recyclebin; --在PLSQL Developer中看不见,需要在sqlplus窗口执行
    purge recyclebin; --清空回收站
    

    删除表数据但不删除表结构

    truncate table $tablename$;
    

    恢复表

    flashback table $tablename$ to before drop;
    
  • 相关阅读:
    linux下samba服务器的搭建(案列模拟)
    linux下nfs服务器的搭建
    linux 下 php+gd2+freetype+jpeg+png+zlib编译安装
    linux下xcache的安装
    wget如何设置代理
    实验记录:vsftp整合mysql-pam管理虚拟账号
    tr命令 实例
    sed学习笔记
    Byte、KB、MB、GB、TB、PB转换
    对lombbok @slf4j 进行测试用例
  • 原文地址:https://www.cnblogs.com/stars-one/p/10738866.html
Copyright © 2020-2023  润新知