• Oracle学习笔记之六(DDL:表、索引、视图、同义词、序列操作相关SQL)


    下面这些基本的SQL语句应该熟悉,能够灵活运用。最好在不查资料的情况下,能够写出如下的任何代码。

    1. 数据表操作相关

    --创建表
    create table STUDENTS(
        STUNO number(10) not null,
        STUNAME varchar2(8),
        SEX char(2),
        AGE int,
        DEPARTNO varchar2(2) not null,
        CLASSNO varchar2(4) not null,
        REGDATE date default sysdate
    );
    
    --创建表二
    create table STUDENTS_2
        as select * from STUDENTS;
    
    --更改表结构(增加字段)
    alter table STUDENTS add(PROVINCE varchar2(10));
    
    --更改表结构(删除字段)
    alter table STUDENTS drop column PROVINCE;
    
    --更改表结构(删除多字段)
    alter table STUDENTS drop(SEX,AGE);
    
    --更改表结构(修改字段)
    alter table STUDENTS modify DEPARTNO varchar2(4);
    
    --重命名表
    alter table STUDENTS rename to STUDENTS_NEW;
    
    --删除表
    --drop table table_name [cascase contraints][purge];
    drop table STUDENTS_NEW cascade constraints;
    
    --闪回(如果删除的时候加purge参数,则闪回不了了 )
    flashback table STUDENTS_NEW to before drop;
    
    --修改表的状态(只读)
    alter table STUDENTS_NEW read only;
    
    --修改表的状态(读写)
    alter table STUDENTS_NEW read write;

    2. 约束相关

    --约束的类型:非空结束、主键结束、唯一约束、外键约束、检查结束和默认约束。
    create table BOOKS(
        BOOKNO number(4) not null, --非空约束
        BOOKNAME varchar2(20),
        AUTHOR varchar2(10),
        SALEPRICE number(9,2) check(SALEPRICE>0 and SALEPRICE<1000), --检查约束
        PUBLISHERNO varchar2(4) not null, --非空约束
        PUBLISHDATE date,
        ISBN varchar2(20) not null, --非空约束
        constraint PK_BOOKS primary key(BOOKNO)        --主键约束
    );
    
    --设置非空约束
    alter table BOOKS modify BOOKNAME not null;
    
    --去除非空约束
    alter table BOOKS modify BOOKNAME null;
    
    --去除主键约束
    alter table BOOKS drop constraint PK_BOOKS;
    
    --设置主键约束
    alter table BOOKS add constraint PK_BOOKS primary key(BOOKNO);
    
    --设置唯一约束
    alter table BOOKS add constraint UQ_BOOKS unique(ISBN);
    
    --去除唯一约束
    alter table BOOKS drop constraint UQ_BOOKS;
    
    --去除外键约束
    alter table BBSDISTRICT drop constraint BBSDISTRICT_BBSPROVINCE_FK1;
    
    --设置外键约束
    alter table BBSDISTRICT add constraint BBSDISTRICT_BBSPROVINCE_FK1
        foreign key(PROVINCE_ID)
        references BBSPROVINCE(PROVINCE_ID)
        on delete set null;--no action/set null/cascade
    
    --设置外键约束,如果外键列与被引用表的被引用列列名相同,也可以如下方式定义
    alter table BBSDISTRICT add constraint BBSDISTRICT_BBSPROVINCE_FK1
        foreign key(PROVINCE_ID)
        references BBSPROVINCE;
    
    --禁用约束
    alter table BBSDISTRICT disable constraint BBSDISTRICT_BBSPROVINCE_FK1;
    
    --启用约束
    --alter table table_name enable [novalidate|validate] constraint con_name;
    --novalidate表示不对表中已经存在的数据进行验证;validate则表示需要对表中已有数据进行验证。
    alter table BBSDISTRICT enable constraint BBSDISTRICT_BBSPROVINCE_FK1;
    
    --删除约束
    --alter table table_name drop constraintcon_name;
    alter table BBSDISTRICT drop constraint BBSDISTRICT_BBSPROVINCE_FK1;

    3. 其它对象

    --创建索引(B树索引,最常用的索引)
    create index IX_BBSDETAIL_PRICE on BBSDETAIL(PRICE);
    
    --创建位图索引(性别、分类这些重复值非常多的情况下,本情况下一张大表只有7个分类)
    create bitmap index IX_BITMAP_BBSDETAIL_CATEGORY on BBSDETAIL(CATEGORY_ID);
    
    --建立反向索引,略
    
    --基于函数的索引(将数值字段转化为以十为单位,查询的时候也必须用此函数)
    create index IX_BBSDETAIL_CONIS on BBSDETAIL(round(NUMBER_OF_COINS,-1));
    
    --重建索引
    alter index IX_BBSDETAIL_PRICE rebuild;
    
    --删除索引
    drop index IX_BBSDETAIL_CONIS;
    
    --创建视图
    --create [or replace] view <view_name> [alias[,alias]...]
    --as <subquery>
    --[with check option][constraint constraint_name]
    --[with read only];
    create or replace view VIEW_DETAIL
    as select CATEGORY_NAME,TITLE,DISTRICT_NAME,ADDRESS from BBSDETAIL,BBSCATEGORY,BBSDISTRICT
        where BBSDETAIL.CATEGORY_ID=BBSCATEGORY.CATEGORY_ID and BBSDETAIL.DISTRICT_ID=BBSDISTRICT.DISTRICT_ID
    with read only;
    
    --查看视图定义
    desc VIEW_DETAIL;
    
    --重新编译视图
    alter view VIEW_DETAIL compile;
    
    --删除视图
    drop view VIEW_DETAIL;
    
    --创建同义词对象(公有)
    create public synonym PUBLIC_DETAIL for BBS.BBSDETAIL;
    
    --删除同义词对象
    drop public synonym PUBLIC_DETAIL;
    
    --创建序列
    create sequence SEQ_BBSDETAIL
        maxvalue 99999
        start with 10000
        increment by 100
        cache 50;
    
    --查看当前序列值
    select SEQ_BBSDETAIL.currval from dual;
    
    --删除序列
    drop sequence SEQ_BBSDETAIL;
  • 相关阅读:
    netcore跨域
    阿里云oss通过api上传图片后不能预览只能下载的解决方法
    阿里云oss对图片的处理:缩略、剪裁、锐化等
    通过字节值判断图片格式
    Linux 常见命令 用户管理命令(二)
    nohup命令
    selinux基础介绍
    LINUX中的limits.conf配置文件
    【ASP.NET】使用Jquery缓存数据
    .net 4.0以下版本实现web socket服务
  • 原文地址:https://www.cnblogs.com/nayitian/p/3223888.html
Copyright © 2020-2023  润新知