Oracle Cheat Sheet

Phiên bản

SELECT banner FROM v$version WHERE banner LIKE 'Oracle%';
SELECT banner FROM v$version WHERE banner LIKE 'TNS%';
SELECT version FROM v$instance;

Chú thích

SELECT 1 FROM dual --comment in line;
SELECT 1
/*
comment in block
line 1
line 2...
*/
FROM dual;

Người dùng hiện tại

SELECT user FROM dual;
SHOW user;

Danh sách người dùng

SELECT username FROM all_users ORDER BY username;
SELECT name FROM sys.user$;

Danh sách mật khẩu đã băm

SELECT name, password, astatus FROM sys.user$;
SELECT name,spare4 FROM sys.user$;

Danh sách quyền

SELECT * FROM session_privs; — current privs
SELECT * FROM dba_sys_privs WHERE grantee = 'DBSNMP'; — priv, list a user's privs
SELECT grantee FROM dba_sys_privs WHERE privilege = 'SELECT ANY DICTIONARY'; — priv, find users with a particular priv
SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS;

Danh sách tài khoản DBA

SELECT DISTINCT grantee FROM dba_sys_privs WHERE ADMIN_OPTION = 'YES'; — priv, list DBAs, DBA roles

CSDL hiện tại

SELECT global_name FROM global_name;
SELECT name FROM v$database;
SELECT instance_name FROM v$instance;
SELECT SYS.DATABASE_NAME FROM DUAL;

Danh sách CSDL

SELECT DISTINCT owner FROM all_tables; — list schemas (one per user)
– Also query TNS listener for other databases.  See tnscmd (services | status).

Danh sách cột thuộc tính

SELECT column_name FROM all_tab_columns WHERE table_name = 'blah';
SELECT column_name FROM all_tab_columns WHERE table_name = 'blah' and owner = 'foo';

Danh sách bảng

SELECT table_name FROM all_tables;
SELECT owner, table_name FROM all_tables;

Tìm tất cả các bảng theo tên thuộc tính

SELECT owner, table_name FROM all_tab_columns WHERE column_name LIKE '%PASS%'; — NB: table names are upper case

Lấy dòng thứ N

SELECT username FROM (SELECT ROWNUM r, username FROM all_users ORDER BY username) WHERE r=9; — lấy dòng thứ 9 (các dòng được đánh thứ tự từ 1)

Lấy ký tự thứ N

SELECT substr('abcd', 3, 1) FROM dual; — lấy kí tự thứ 3, 'c'

Chuyển số thành kí tự

SELECT chr(65) FROM dual; — returns A

Chuyển kí tự thành số

SELECT ascii('A') FROM dual; — returns 65

Ép kiểu

SELECT CAST(1 AS char) FROM dual;
SELECT CAST('1' AS int) FROM dual;

Nối chuỗi

SELECT 'A' || 'B' FROM dual; — returns AB

Lệnh If

BEGIN IF 1=1 THEN dbms_lock.sleep(3); ELSE dbms_lock.sleep(0); END IF; END; — doesn't play well with SELECT statements

Lệnh case

SELECT CASE WHEN 1=1 THEN 1 ELSE 2 END FROM dual; — returns 1
SELECT CASE WHEN 1=2 THEN 1 ELSE 2 END FROM dual; — returns 2

Đường dẫn chứa các tập tin CSDL

SELECT name FROM V$DATAFILE;

Tên của container hiện tại

SHOW con_name;

Danh sách các pluggable DB

show pdbs;

Tên của instance-SID hiện tại

select instance_name from v$instance;