下面这些基本的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;