ORACLE常用sql语句

来源:互联网 发布:php ob get contents 编辑:程序博客网 时间:2024/05/18 02:35

在学习Oracle过程中,学习到了一些常用的SQL语句,现在整理一下,供大家参考和学习

1、SELECT TABLE(查看表信息)

--当前用户
SELECT TABLE_NAME,TABLESPACE_NAME FROM USER_TABLES;
--所有用户
SELECT TABLE_NAME,TABLESPACE_NAME FROM ALL_TABLES;

2、ADD CONSTRAINT(增加约束)
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME PRIMARY KEY(COLUMN_NAME);
ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE(COLUMN_NAME);

3、DROP CONSTRAINT(删除约束)
ALTER TABLE TABLE_NAME DROP CONSTRAINT CONSTRAINT_NAME;

4、SELECT CONSTRAINT(查询约束)
SELECT CU.CONSTRAINT_NAME,CU.TABLE_NAME,CU.COLUMN_NAME 
FROM USER_CONS_COLUMNS CU, USER_CONSTRAINTS AU 
WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME AND AU.CONSTRAINT_TYPE = 'P';

SELECT CU.CONSTRAINT_NAME,CU.TABLE_NAME,CU.COLUMN_NAME 
FROM USER_CONS_COLUMNS CU, USER_CONSTRAINTS AU 
WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME AND AU.CONSTRAINT_TYPE = 'U';

5、CREATE SEQ(创建序列)
CREATE SEQUENCE SEQ_NAME
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;

6、DROP SEQ(删除序列)
DROP SEQUENCE SEQ_NAME 

7、SELECT SEQ(查询序列)
SELECT SEQUENCE_NAME FROM USER_SEQUENCES;

8、CREATE TRIGGER(为sequence自增创建触发器)
CREATE OR REPLACE TRIGGER TRI_NAME
BEFORE INSERT ON TABLE_NAME
FOR EACH ROW
BEGIN
 :NEW.COLUMN_NAME:=SEQ_NAME.NEXTVAL;
END;

9、RENAME NAME (重命名)
ALTER TABLE TABLE_NAME RENAME COLUMN OLD_COLUMN_NAME TO NEW_COLUMN_NAME;
ALTER TABLE TABLE_NAME RENAME TO NEW_COLUMN_NAME;

10、CREATE JOB(创建触发器)
BEGIN
  SYS.DBMS_SCHEDULER.CREATE_JOB(JOB_NAME            => 'EP_DAY_JD_SALE',
                                JOB_TYPE            => 'STORED_PROCEDURE',
                                --PROCEDURE_NAME
                                JOB_ACTION          => 'P_DAY_JD_SALE',
                                START_DATE          => TO_DATE('18-11-2014 03:00:00', 'DD-MM-YYYY HH24:MI:SS'),
                                REPEAT_INTERVAL     => 'FREQ=DAILY;INTERVAL=1',
                                END_DATE            => TO_DATE(NULL),
                                JOB_CLASS           => 'DEFAULT_JOB_CLASS',
                                ENABLED             => FALSE,
                                AUTO_DROP           => TRUE,
                                COMMENTS            => '');
END;

11、CREATE PROCEDURE(创建存储过程)
CREATE OR REPLACE PROCEDURE PRO_NAME(PARAMETER IN OUT DATA_TYPE)
IS
--保存表中记录的尽量使用COL%TYPE,这样可以避免因数据结构调整而不断修改存储过程内容
V_PARAM1 OWNER.TABLE_NAME.COL%TYPE;
V_COUNT NUMBER(2,0);
BEGIN
--将表中记录保存到一个变量时,为了避免值为null,可以使用MAX(COL)或MIN(COL)
SELECT MAX(COL) INTO V_PARAM1 FROM TABLE_NAME WHERE CONDITION;

--只是为了判断是否存在记录,可以在条件后面加上ROWNUM<=1,可以避免查询所消耗的时间
SELECT COUNT(*) INTO V_COUNT FROM TABLE_NAME WHERE CONDITION AND ROWNUM<=1;
IF COUNT>0 THEN
DO SOMETHING;
ELSE 
DO OTHER THINGS;
END IF;

END PRO_NAME;
1 0
原创粉丝点击