1. 程式人生 > >PL/SQL常用指令收集

PL/SQL常用指令收集

常用指令 運算符 roi asc 唯一性約束 pl/sql insert ria seq

1.select 語句

SELECT * FROM dept d 顯示dept(別名d)表中的所有字段

SELECT deptno, loc FROM dept 顯示dept表中的deptno與loc字段內容

語句中同樣可以用算術運算與函數 如 sal+30,sal+nvl(comm,0)

2、where 子句

SELECT ename,job FROM em

where job=‘CLERK‘ 顯示JOB為CLERK的字段

where子句中同樣可以用比較運算符>,<,<>,<=,>=

between ... and ...(在兩值之間)

in(...,....,...,) (匹配列出的值)

like (匹配一個字符的模式)

is null (是空值)

用邏輯運算符連接多個條件 and,or,not(優先級比較運算>not>and>or)

3、order by子句

SELECT ename,job,deptno FROM emp

order by deptno 按deptno順序排列(asc可隱藏)

........................... desc 按..........降序排列

後可跟多個字段,先後排列順序

4、組函數與group by子句

SELECT deptno, AVG(sal) FROM emp

GROUP BY deptno 顯示emp中按deptno分組的deptno與平均工資

組函數有 avg(..) 求平均數 sum(..)求和 count( ..)計數 max(..)求最大值

min(..)求最小值 stddev(..)標準差 variance(..)方差

5、having子句

SELECT deptno, max(sal) FROM emp
GROUP BY deptno
HAVING max(sal)>2900 顯示emp表按deptno分組最大工資大於2900的最大工資

having 功能等同於where功能 當使用分組語句時使用

6、insert語句

INSERT INTO dept (deptno, dname, loc)
VALUES (50, ‘DEVELOPMENT‘, ‘DETROIT‘) 在dept表中插入值字段與值一一對應

插入整條數據時,前面可以不跟字段,安裝表中順序寫入值如:

INSERT INTO dept
VALUES (70, ‘FINANCE‘, NULL) null為空值

插入的值可以跟select,where語句

7、update語句

UPDATE emp
SET deptno = 20
WHERE empno = 7782 將emp表中empno等於7782中的denptno修改為20

8、delete語句

DELETE FROM dept
WHERE dname = ‘DEVELOPMENT‘ 刪除dept表中dname為DEVELOPMENT的數據

不用where子句為刪除整張表

9、savepoint 與rollback

savepoint a1 存儲a1存儲點

rollback to a1 回到a1存儲點狀態

10、建表

CREATE TABLE dept 2 (deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)) 建立dept2表 下面分別為字段與屬性

建表時可以用select 語句選擇已有表中的字段(where 1<>1)或者數據

11、修改表

ALTER TABLE dept30
ADD (job VARCHAR2(9)) 修改dept30表增加job字段

ALTER TABLE dept30

MODIFY (ename VARCHAR2(15)) 修改deptno中ename的屬性為varchar2屬性

alter table test

rename column name to dname 重命名test表中name字段為dname字段

12、刪除表

DROP TABLE dept30 刪除dept30表

13、改變對象名稱

RENAME dept TO department 將dept表重命名為department

14、截取表的所有記錄

TRUNCATE TABLE department 刪除department中的所有數據

15、添加註釋

COMMENT ON TABLE emp
IS ‘Employee Information‘

select * from ALL_COL_COMMENTS 顯示所註釋

USER_COL_COMMENTS

ALL_TAB_COMMENTS

USER_TAB_COMMENTS

16、創建約束

CREATE TABLE emp
(empno NUMBER(4),
ename VARCHAR2(10),
deptno NUMBER(7,2) NOT NULL,
CONSTRAINT emp_empno_pk
PRIMARY KEY (EMPNO)); 後兩行創建約束主鍵為empno

CONSTRAINT dept_dname_uk UNIQUE(dname));唯一性約束

CONSTRAINT dept_deptno_pk PRIMARY KEY(dept_no)主鍵約束

CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
REFERENCES dept (deptno)); 外檢約束

CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99) check約束只能在10-99之間

17、加約束

ALTER TABLE emp

ADD CONSTRAINT emp_mgr_fk

FOREIGN KEY(mgr) REFERENCES emp(empno);

18、刪除約束

ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk;

19、使約束失效

ALTER TABLE emp
ENABLE CONSTRAINT emp_empno_pk;

20、查看約束

SELECT * FROM user_constraints
WHERE table_name = ‘EMP‘;

21、創建視圖

CREATE VIEW empvu10
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10

22、修改視圖

CREATE OR REPLACE VIEW empvu10
(employee_number, employee_name, job_title)
AS SELECT empno, ename, job
FROM emp
WHERE deptno = 10;

23、使用 WITH CHECK OPTION子句

使用WITH CHECK OPTION可使DML操作限制在視圖所包含的範圍內.

CREATE OR REPLACE VIEW empvu20
AS SELECT *
FROM emp
WHERE deptno = 20
WITH CHECK OPTION CONSTRAINT empvu20_ck;

24、刪除視圖

DROP VIEW view;

25、創建序列號

CREATE SEQUENCE dept_deptno
INCREMENT BY 1
START WITH 91
MAXVALUE 100
NOCACHE
NOCYCLE;

?NEXTVAL 返回下一個可用序列號值
?CURRVAL 包含當前的序列號值

26、創建索引

CREATE INDEX emp_ename_idx
ON emp(ename);

27、創建同義詞

CREATE SYNONYM d_sum

FOR dept_sum_vu;

28、授予權限

GRANT create table, create sequence, create view
TO scott;

29、創建角色

CREATE ROLE manager

30、修改賬號密碼

ALTER USER scott

IDENTIFIED BY lion

31、授予對象權限

GRANT select
ON emp
TO sue, rich

WITH GRANT OPTION 可轉授此權限

32、收回對象的權限

REVOKE select, insert
ON dept
FROM scott; 收回權限

PL/SQL常用指令收集