超具體的SQL語句語法匯總。本站提示廣大學習愛好者:(超具體的SQL語句語法匯總)文章只能為提供參考,不一定能成為您想要的結果。以下是超具體的SQL語句語法匯總正文
一.數據掌握語句 (DML) 部門
1.INSERT (往數據內外拔出記載的語句)
INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);
INSERT INTO 表名(字段名1, 字段名2, ……) SELECT 字段名1, 字段名2, …… FROM 別的的表名;
字符串類型的字段值必需用單引號括起來, 例如: 'GOOD DAY'
假如字段值裡包括單引號' 須要停止字符串轉換, 我們把它調換成兩個單引號''.
字符串類型的字段值跨越界說的長度會失足, 最好在拔出進步行長度校驗.
日期字段的字段值可以用以後數據庫的體系時光SYSDATE, 准確到秒
或許用字符串轉換成日期型函數TO_DATE(‘2001-08-01','YYYY-MM-DD')
TO_DATE()還有許多種日期格局, 可以參看ORACLE DOC.
年-月-日 小時:分鐘:秒 的格局YYYY-MM-DD HH24:MI:SS
INSERT時最年夜可操作的字符串長度小於等於4000個單字節, 假如要拔出更長的字符串, 請斟酌字段用CLOB類型,
辦法借用ORACLE裡自帶的DBMS_LOB法式包.
INSERT時假如要用到從1開端主動增加的序列號, 應當先樹立一個序列號
CREATE SEQUENCE 序列號的稱號 (最好是表名+序列號標志) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
個中最年夜的值按字段的長度來定, 假如界說的主動增加的序列號 NUMBER(6) , 最年夜值為999999
INSERT 語句拔出這個字段值為: 序列號的稱號.NEXTVAL
2.DELETE (刪除數據內外記載的語句)
DELETE FROM表名 WHERE 前提;
留意:刪除記載其實不能釋放ORACLE裡被占用的數據塊表空間. 它只把那些被刪除的數據塊標成unused.
假如確切要刪除一個年夜內外的全體記載, 可以用 TRUNCATE 敕令, 它可以釋放占用的數據塊表空間
TRUNCATE TABLE 表名;
此操作弗成回退.
3.UPDATE (修正數據內外記載的語句)
UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 前提;
假如修正的值N沒有賦值或界說時, 將把本來的記載內容清為NULL, 最好在修正進步行非空校驗;
值N跨越界說的長度會失足, 最好在拔出進步行長度校驗..
留意事項:
A. 以上SQL語句對表都加上了行級鎖,
確認完成後, 必需加上事物處置停止的敕令 COMMIT 能力正式失效,
不然轉變紛歧定寫入數據庫裡.
假如想撤回這些操作, 可以用敕令 ROLLBACK 回復復興.
B. 在運轉INSERT, DELETE 和 UPDATE 語句前最好預算一下能夠操作的記載規模,
應當把它限制在較小 (一萬筆記錄) 規模內,. 不然ORACLE處置這個事物用到很年夜的回退段.
法式呼應慢乃至掉去呼應. 假如記載數上十萬以上這些操作, 可以把這些SQL語句分段分次完成,
其間加上COMMIT 確認事物處置.
二.數據界說 (DDL) 部門
1.CREATE (創立表, 索引, 視圖, 同義詞, 進程, 函數, 數據庫鏈接等)
ORACLE經常使用的字段類型有
CHAR 固定長度的字符串
VARCHAR2 可變長度的字符串
NUMBER(M,N) 數字型M是位數總長度, N是小數的長度
DATE 日期類型
創立表時要把較小的不為空的字段放在後面, 能夠為空的字段放在前面
創立表時可以用中文的字段名, 但最好照樣用英文的字段名
創立表時可以給字段加上默許值, 例如 DEFAULT SYSDATE
如許每次拔出和修正時, 不消法式操作這個字段都能獲得舉措的時光
創立表時可以給字段加上束縛前提
例如 不許可反復 UNIQUE, 症結字 PRIMARY KEY
2.ALTER (轉變表, 索引, 視圖等)
轉變表的稱號
ALTER TABLE 表名1 TO 表名2;
在表的前面增長一個字段
ALTER TABLE表名 ADD 字段名 字段名描寫;
修正內外字段的界說描寫
ALTER TABLE表名 MODIFY字段名 字段名描寫;
給內外的字段加上束縛前提
ALTER TABLE 表名 ADD CONSTRAINT 束縛名 PRIMARY KEY (字段名);
ALTER TABLE 表名 ADD CONSTRAINT 束縛名 UNIQUE (字段名);
把表放在或掏出數據庫的內存區
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;
3.DROP (刪除表, 索引, 視圖, 同義詞, 進程, 函數, 數據庫鏈接等)
刪除表和它一切的束縛前提
DROP TABLE 表名 CASCADE CONSTRAINTS;
4.TRUNCATE (清空內外的一切記載, 保存表的構造)
TRUNCATE 表名;
三.查詢語句 (SELECT) 部門
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 前提;
字段名可以帶入函數
例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名),
TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')
NVL(EXPR1, EXPR2)函數
說明:
IF EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1
DECODE(AA﹐V1﹐R1﹐V2﹐R2....)函數
說明:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
LPAD(char1,n,char2)函數
說明:
字符char1按制訂的位數n顯示,缺乏的位數用char2字符串調換右邊的空位
字段名之間可以停止算術運算
例如: (字段名1*字段名1)/3
查詢語句可以嵌套
例如: SELECT …… FROM
(SELECT …… FROM表名1, [表名2, ……] WHERE 前提) WHERE 前提2;
兩個查詢語句的成果可以做聚集操作
例如: 並集UNION(去失落反復記載), 並集UNION ALL(不去失落反復記載), 差集MINUS, 交集INTERSECT
分組查詢
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1
[HAVING 前提] ;
兩個以上表之間的銜接查詢
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名 [ AND ……] ;
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;
有(+)號的字段地位主動補空值
查詢成果集的排序操作, 默許的排序是升序ASC, 降序是DESC
SELECT字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
ORDER BY字段名1, 字段名2 DESC;
字符串隱約比擬的辦法
INSTR(字段名, ‘字符串')>0
字段名 LIKE ‘字符串%' [‘%字符串%']
每一個表都有一個隱含的字段ROWID, 它標志著記載的獨一性.
四.ORACLE裡經常使用的數據對象 (SCHEMA)
1.索引 (INDEX)
CREATE INDEX 索引名ON 表名 ( 字段1, [字段2, ……] );
ALTER INDEX 索引名 REBUILD;
一個表的索引最好不要跨越三個 (特別的年夜表除外), 最好用單字段索引, 聯合SQL語句的剖析履行情形,
也能夠樹立多字段的組合索引和基於函數的索引
ORACLE8.1.7字符串可以索引的最年夜長度為1578 單字節
ORACLE8.0.6字符串可以索引的最年夜長度為758 單字節
ORACLE DOC上說字符串最年夜可以建索引的長度約是:數據塊的年夜小(db_block_size)*40%
2.視圖 (VIEW)
CREATE VIEW 視圖名AS SELECT …. FROM …..;
ALTER VIEW視圖名 COMPILE;
視圖僅是一個SQL查詢語句, 它可以把表之間龐雜的關系簡練化.
3.同義詞 (SYNONMY)
CREATE SYNONYM同義詞名FOR 表名;
CREATE SYNONYM同義詞名FOR 表名@數據庫鏈接名;
4.數據庫鏈接 (DATABASE LINK)
CREATE DATABASE LINK數據庫鏈接名CONNECT TO 用戶名 IDENTIFIED BY 暗碼 USING ‘數據庫銜接字符串';
數據庫銜接字符串可以用NET8 EASY CONFIG或許直接修正TNSNAMES.ORA裡界說.
數據庫參數global_name=true時請求數據庫鏈接稱號跟遠端數據庫稱號一樣
數據庫全局稱號可以用以下敕令查出
SELECT * FROM GLOBAL_NAME;
查詢遠端數據庫裡的表
SELECT …… FROM 表名@數據庫鏈接名;
五.權限治理 (DCL) 語句
1.GRANT 賦於權限
經常使用的體系權限聚集有以下三個:
CONNECT(根本的銜接), RESOURCE(法式開辟), DBA(數據庫治理)
經常使用的數據對象權限有以下五個:
ALL ON 數據對象名, SELECT ON 數據對象名, UPDATE ON 數據對象名,
DELETE ON 數據對象名, INSERT ON 數據對象名, ALTER ON 數據對象名
GRANT CONNECT, RESOURCE TO 用戶名;
GRANT SELECT ON 表名 TO 用戶名;
GRANT SELECT, INSERT, DELETE ON表名 TO 用戶名1, 用戶名2;
2.REVOKE 收受接管權限
REVOKE CONNECT, RESOURCE FROM 用戶名;
REVOKE SELECT ON 表名 FROM 用戶名;
REVOKE SELECT, INSERT, DELETE ON表名 FROM 用戶名1, 用戶名2;