您的位置:首页 > 数据库 > Oracle

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

2013-07-29 20:26 946 查看
下面这些基本的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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐