现在到了日常使用的Oracle学习重点,就是Oracle常用的使用对象。比如:表,视图,序列;游标,触发器,函数;变量,(控制块,异常),存储过程,包;
还有经常做的数据处理操作:插入,更新,删除,联接,集合等。
一、表
1、创建一个TEST_A表:
CREATE TABLE TEST_A
(
a VARCHAR2(20),
b VARCHAR2(20),
c VARCHAR2(5),
d NUMBER
);
创建好表之后就相当于做好了一个装载数据的容器,如果你想改变这个容器的结构就需要用到更改表结构了。
2、更改TEST_A表结构:
增加一个字段e:
ALTER TABLE TEST_A ADD e VARCHAR2(10);
删除已有字段a:
ALTER TABLE TEST_A DROP COLUMN a;
更改TEST_A表的名称:
ALTER TABLE TEST_A RENAME TO TEST_B;
更改TEST_B表中字段e的数据类型:
ALTER TABLE TEST_B MODIFY e DATE;
更改TEST_B表某一字段的名称:
ALTER TABLE TEST_B RENAME COLUMN b TO b1;
如果这个表不需要了,想要它消失。无论表中是否有数据,把该容器和容器内的东西全部丢掉,就需要删除表结构了。
3、删除TEST_B表结构:
DROP TABLE TEST_B;
二、视图
1、创建视图
CREATE OR REPLACE VIEW TEST_A_VIEW AS
SELECT T.A AS A,T.B AS B,T.C AS C FROM TEST_A T
[WITH READ ONLY];--只读属性
2、删除视图
DROP VIEW TEST_A_VIEW;
三、序列
通过我的认识,序列的作用相当于在表中增加了一个具有唯一标识的自增字段,可用做主键什么的。
1、创建序列:
CREATE SEQUENCE TEST_A_SEQ
INCREMENT BY 1--这里是按1递增,如果是负数就是递减
START WITH 1
MINVALUE 1
MAXVALUE 999
NOCYCLE--不循环
NOCACHE;--不放到内存
如果我们想更改序列的最大值或者递增值等等,就需要更改序列。
2、更改序列的最大值:
ALTER SEQUENCE TEST_A_SEQ
MAXVALUE 9999;
[注:必须是序列的拥有者或对序列有alter权限,只有将来的序列值会被改变,改变序列的初始值只能通过删除序列之后重建序列的方法实现]
3、删除序列
DROP SEQUENCE TEST_A_SEQ;
4、使用序列
SELECT TEST_A_SEQ.NEXTVAL FROM DUAL;--返回序列中下一个有效的值,NEXTVAL要在CURRVAL之前指定
SELECT TEST_A_SEQ.CURRVAL FROM DUAL;--存放序列的当前值
还有经常做的数据处理操作:插入,更新,删除,联接,集合等。
一、表
1、创建一个TEST_A表:
CREATE TABLE TEST_A
(
a VARCHAR2(20),
b VARCHAR2(20),
c VARCHAR2(5),
d NUMBER
);
创建好表之后就相当于做好了一个装载数据的容器,如果你想改变这个容器的结构就需要用到更改表结构了。
2、更改TEST_A表结构:
增加一个字段e:
ALTER TABLE TEST_A ADD e VARCHAR2(10);
删除已有字段a:
ALTER TABLE TEST_A DROP COLUMN a;
更改TEST_A表的名称:
ALTER TABLE TEST_A RENAME TO TEST_B;
更改TEST_B表中字段e的数据类型:
ALTER TABLE TEST_B MODIFY e DATE;
更改TEST_B表某一字段的名称:
ALTER TABLE TEST_B RENAME COLUMN b TO b1;
如果这个表不需要了,想要它消失。无论表中是否有数据,把该容器和容器内的东西全部丢掉,就需要删除表结构了。
3、删除TEST_B表结构:
DROP TABLE TEST_B;
二、视图
1、创建视图
CREATE OR REPLACE VIEW TEST_A_VIEW AS
SELECT T.A AS A,T.B AS B,T.C AS C FROM TEST_A T
[WITH READ ONLY];--只读属性
2、删除视图
DROP VIEW TEST_A_VIEW;
三、序列
通过我的认识,序列的作用相当于在表中增加了一个具有唯一标识的自增字段,可用做主键什么的。
1、创建序列:
CREATE SEQUENCE TEST_A_SEQ
INCREMENT BY 1--这里是按1递增,如果是负数就是递减
START WITH 1
MINVALUE 1
MAXVALUE 999
NOCYCLE--不循环
NOCACHE;--不放到内存
如果我们想更改序列的最大值或者递增值等等,就需要更改序列。
2、更改序列的最大值:
ALTER SEQUENCE TEST_A_SEQ
MAXVALUE 9999;
[注:必须是序列的拥有者或对序列有alter权限,只有将来的序列值会被改变,改变序列的初始值只能通过删除序列之后重建序列的方法实现]
3、删除序列
DROP SEQUENCE TEST_A_SEQ;
4、使用序列
SELECT TEST_A_SEQ.NEXTVAL FROM DUAL;--返回序列中下一个有效的值,NEXTVAL要在CURRVAL之前指定
SELECT TEST_A_SEQ.CURRVAL FROM DUAL;--存放序列的当前值