序列
CREATE SEQUENCE SEQ_01
INCREMENT BY 10
START WITH 120
MAXVALUE 9999
NOCACHE
NOCUCLE;
CREATE SEQUENCE SEQ_01
INCREMENT BY -10
START WITH -120
MINVALUE 9999
NOCACHE
NOCYCLE;
NOCACHE不缓存
NOCYCLE不循环
SELECT SEQ_01.NETVAL FROM DUAL;
SELECT SEQ_01.CURRVAL FROM DUAL;
CREATE TABLE T27(X NUMBER,Y NUMBER)
CREATE TABLE T28(X NUMBER PRIMARY KEY,Y NUMBER)
INSERT INTO T27 VALUES(SEQ_01.CURRVAL,1);
SELECT * FROM T27;
INSERT INTO T28 VALUES(SEQ_01.NEXTVAL) 这里因为是主键 所以只能插入下一个序列
DROP SEQ_01;删去序列
SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM USER_SEQUENCES;
INSERT INTO T1 VALUES(SQC01.CURRVAL,’dd’)
索引
索引与表相互独立 通过使用快速路径访问方法来快速定位数据,可以减少磁盘IO
自动创建:在定义主键和UNIQUE约束后系统自动在相应的列上创建唯一性索引
手动创建:用户可以在其他列上创建非唯一的索引,以加速查询
CREATE INDEX IND_01 ON T28(Y);
CREATE INDEX IND_02 ON T27(X,Y);
什么情况创建索引:
列中数据值分布范围广泛
列中包含大量空值
列经常在WHERE子句或连接条件中出现
表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%
删除索引 DROP INDEX IND_01
从数据字典中删除索引
DROP INDEX EMP_LAST_NAME_IDX;
创建一个序列SEQ_01,每次增加15,从10开始,最大值200,不循环,缓存在20个内存里
CREATE SEQUENCE SEQ01
INCREMENT BY 15
START WITH 10
MAX VALUE 200
NOCYCLE
CACHE 20
创建一个表T28,X,Y列均为NUMBER
CREATE TABLE T28(X NUMBER,Y NUMBER)
使用序列SEQ_01插入T28的X列,插入五行
INSERT INTO T28(SEQ_O1.NEXTVAL,NULL)
创建一个索引IND_01在T28的Y列
CREATE INDEX IND_01 ON T28(Y)
给T28增加一个列,Z,类型是DATE
ALTER TABLE T28 ADD(Z DATE)
把Z列改成A列,改名之后查看效果
ALTER TABLE RENAME COLUMN Z TO A
给A列增加CHECK约束,大于100
ALTER TABLE T28 ADD CONSTRAINT CHE_01 CHECK(A>100)
删除A列并级联删除约束
ALTER TABLE T28 DROP COLUMN A CASCADE CONSTRAINT
创建对象的同义词
通过创建同义词简化对象访问(一个对象的另一个名字),使用同义词您可以:
方便访问其他用户的对象
缩短对象名字的长度
CREATE SYNONYM D_SUM
FOR DEPT_SUM_VU
CREATE SYNONYM SY_01 FOR V1
SELECT * FROM SY_01