PL/SQL常用指令收集
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常用指令收集