1. 程式人生 > >SQL基礎操作匯總

SQL基礎操作匯總

join 賬號 oracl mail lec width enc 比較 upd

SQL基礎操作匯總

技術分享圖片

一、表操作

1、表的創建(CREATE TABLE):

基本語句格式: CREATE TABLE table_name ( col_name datatype, ……);

解釋: table_name 為要創建的表的名稱(同一登錄用戶下表名必須唯一),col_name 為表中屬性的名稱,datatype 為屬性的相應數據類型,同一表中會有許多字段,也可以在字段數據類型後追加各種約束條件(具體見約束)。

例:技術分享圖片

2、表的修改(ALTER TABLE):

解釋所有對表進行修改的語句,開頭均以alter table+要修改的表的名稱,後面的一系列操作只需要追加相應的關鍵字語句即可,例如添加字段

ALTER TABLE table_name ADD col_name datatype

(修改表名)基本語句格式RENAME table_name TO new_table_name; (TO前面為原表名,後面為新的表名)

例:技術分享圖片

(添加字段)基本語句格式ALTER TABLE table_name ADD col_name datatype; (add關鍵字為添加字段使用)

例:技術分享圖片

(修改字段名稱)基本語句格式ALTER TABLE table_name RENAME COLUMN col_name TO new_col_name; (RENAME COLUMN為修改字段名的關鍵字,TO後面為新的名稱,前面為原名稱)

例:技術分享圖片

(修改字段數據類型)基本語句格式ALTER TABLE tbale_name MODIFY col_name datatype;

例:技術分享圖片

(刪除字段)基本語句格式ALTER TABLE table_name DROP COLUMN col_name; (drop column為字段刪除的關鍵字)

例:技術分享圖片

3、表的刪除(DROP TABLE\TRUNCATE TABLE):

①截斷方式刪除表:僅清空表中數據,不會刪除表,也不會刪除表中的字段。

基本語句格式TRUNCATE TABLE table_name;

例:技術分享圖片

②完全刪除方式刪除表:會將整個表刪除,包括表中數據和表的結構、字段。

基本語句格式DROP TABLE table_name;

例:技術分享圖片

4、向插入數據(INSERT INTO):

①純插入方式

基本語句格式:INSERT INTO table_name (col_name1,col_name2…… ) VALUES(value1,value2……);

解釋:values前的括號內為字段名集,後面為對應的值,值的數據類型必須與字段的數據類型一致,否則無法添加,同時,根據values前括號內的內容可以進行指定字段添加,例如:僅寫一個username字段,values後括號內僅一個“zhangsan”,即對單一字段添加值

例:技術分享圖片

②復制表數據

(在創建表時進行復制)基本語句格式:CREATE TABLE table_new AS SELECT col_name1,col_name2... | * FROM table_old;

解釋:將table_old表中數據復制到新表中,可以指定字段,也可全部復制,全部復制使用*,具體字段指定字段名即可。

例:技術分享圖片

(在添加時進行復制)基本語句格式:INSERT INTO table_new (col_name1,col_name2…… ) SELECT col-name1,col-name2... | * FROM table_old;

例:技術分享圖片

5、修改表中數據(UPDATE ):

(無條件更新)基本語句格式:UPDATE table_name SET col_name1 = value1,col_name2=value2……; (這種方式會將表中全部數據進行更新)

例:技術分享圖片

此例中將所有password字段值設為11111

(有條件更新)基本語句格式:UPDATE table_name SET col_name1=value1,col_name2=value2.. WHERE col-name=value...

例:技術分享圖片

6、刪除表中數據(DELETE):

①刪除全部數據:

基本語句格式:DELETE FROM table_name; 這一句與上文截斷的結果一致,刪除該表中全部數據。

②刪除具體某行的數據:

基本語句格式:DELETE FROM table_name WHERE col_name=value....;

例:技術分享圖片

二、約束

1、主鍵約束(PRIMARY | CONSTRAINT)

註:一張表僅能有一個主鍵約束,主鍵約束可以由多個字段構成(聯合主鍵,復合主鍵)。主鍵約束根據關鍵字PRIMARY KEY 和 CONSTRAINT來實現

創建表時添加主鍵約束:

① CREATE TABLE table_name (col_name1 datatype PRIMARY KEY);//創建表時,直接對某一屬性指定為主鍵

②CONSTRAINT constraint_name PRIMARY KEY (col_name1,col_name2..);//表級約束,一般在創建表時,所有字段都完成後,最後追加這個語句,如下例子:

create table userinfo(

id number(6,0),

username varchar2(20),

rank varchar2(10),

constraint pk_key (id,username),

); //其中pk_key為人為命名的主鍵名稱

修改表時添加主鍵約束:ADD CONSTRAINT constraint_name PRIMARY KEY(col_name1,col_name2..);//一般跟在 ALTER TABLE table table_name後,進行主鍵追加,如下例子:

ALTER TABLE userinfo ADD CONSTRAINT pk_id (id );

修改主鍵約束名稱:RENAME CONSTRAINT old_name TO new_name; //用在ALTER TABLE table_name 後面,進行主鍵名稱的更改,如下例子:

ALTER TABLE userinfo RENAME CONSTRAINT pk_id TO pk_newid;

刪除主鍵約束:

①DROP CONSTRAINT constraint_name ; //徹底刪除名稱為constraint_name的主鍵約束,跟在ALTER TABLE table_name 後使用。

②DISABLE|ENABLE CONSTRAINT constraint_name;//這種方式為 禁用 | 開啟 主鍵約束,並沒有實質的刪除,同樣是跟在ALTER TABLE table_name 語句後面使用。

2、外鍵約束(REFERENCES)

創建表時添加外鍵約束:

①CREATE TABLE table1(col_name1 datatype REFERENCES table2(col-name));//通過關鍵字REFERENCES,選擇table2中的字段作為外鍵,被引用的字段必須為table2的主鍵

②CONSTRAINT constraint_name FOREIGN KEY( col_name1,col_name2...) REFERENCES table2(col-name,col-name)[ON DELETE CASCADE ] //表級設置,同時指定級聯刪除,所謂級聯刪除就是,我們主表中的一條數據被刪除,那麽從表中引用主表字段的這一行數據也會被刪除(通過ON DELETE CASCADE)。

修改表時設置外鍵約束:ADD CONSTRAINT constraint_name FOREIGN KEY( col_name1,col_name2...) REFERENCES table2(col-name,col-name)[ON DELETE CASCADE ]//跟在修改表語句後使用

刪除外鍵約束:

①DROP CONSTRAINT constraint_name ; //徹底刪除名稱為constraint_name的外約束,跟在ALTER TABLE table_name 後使用。

②DISABLE|ENABLE CONSTRAINT constraint_name;//這種方式為 禁用 | 開啟 外鍵約束,並沒有實質的刪除,同樣是跟在ALTER TABLE table_name 語句後面使用。

3、非空約束(NOT NULL)

創建時添加非空約束:CREATE TABLE table_name (col_name datype NOT NULL);

修改表時添加非空約束:ALTER TABLE tbale_name MODIFY col_name datatype NOT NULL;

刪除非空約束:ALTER TABLE tbale_name MODIFY col_name datatype NULL;

4、唯一約束(UNIQUE)

註:唯一約束可以有多個,而主鍵約束僅限一個,兩者都有唯一限制

創建時添加非空約束:CREATE TABLE table_name (col_name datype UNIQUE); 或者 CONSTRAINT constraint_name UNIQUE (col-name,col-name);

修改表時添加非空約束:ALTER TABLE tbale_name ADD CONSTRAINT constraint_name UNIQUE (col-name,col-name);

刪除非空約束:DISABLE|ENABLE CONSTRAINT constraint_name; 或者 DROP CONSTRAINT constraint_name ;

5、檢查約束(CHECK)

註:檢查約束就是限制數據的實際意義,比如現實生活中工資不會出現負數,所以在表設計的時候,工資字段就要設置檢查約束,使其大於等於0

創建表的時候添加檢查約束:CREATE TABLE table_name (col_name datype CHECK( 具體的約束條件 )); 或者 CONSTRAINT constraint_name CHECK (條件);

修改表時添加檢查約束:ALTER TABLE tbale_name ADD CONSTRAINT constraint_name CHECK (條件);

刪除檢查約束:DISABLE|ENABLE CONSTRAINT constraint_name; 或者 DROP CONSTRAINT constraint_name ;

三、查詢

1、運算符

算數運算符: +、-、*、/

比較運算符:> , >= , < , <= , = , <> 註:主要用在where關鍵字後面,結果為布爾值

邏輯運算符:NOT, AND , OR 用以鏈接條件,對應著並,或,非。

表達式 = 操作數 + 運算符 這裏的操作數在oracle中可以是變量,常量,字段

2、基本查找語句(SELECT)

基本語句格式:SELECT col-name1,col-name2... | * FROM table_name;

3、條件查詢(SELECT .... WHERE ...)

基本語句格式:SELECT col-name1,col-name2... | * FROM table_name WHERE 具體的條件表達式

例如: SELECT username,password FROM userinfo WHERE id>=1 AND salary >500; //查詢id大於1,工資大於500的所有用戶的賬號和密碼信息

4、模糊查詢(LIKE)

LIKE運算符可以歸為比較運算符的一種,通過 LIKE 關鍵字配合通配符 ‘_,%’ 構成實現模糊查詢的表達式,放置where後面即可。

" _ " : 一個 ‘ _ ‘僅能代替一個字符,例如 a_,代表首字母為a,後面僅有一位字符的組合。

" % ":代表0個或多個字符,不限個數,例如 %a,代表末尾為a的所有字符組合

基本語句格式:SELECT * | col-name1,col-name2... FROM table_name WHERE col-name LIKE ‘ 通配符組成的信息 ‘

例如: SELECT * FROM userinfo WHERE username LIKE ‘a% ’ //查詢用戶名以a為首字母的所有信息

SELECT email FROM userinfo WHERE username LIKE ‘_a% ’ // 查詢用戶名第二個字符為a的郵箱

SELECT username FROM userinfo WHERE username LIKE ‘%a% ’ //查詢用戶名中包含a字母的所有用戶的用戶名

5、範圍查詢(BETWEEN.....AND....)

主要通過 between and 的組合構成某項屬性的範圍條件,與之前的條件查詢中運用<,>運算符進行條件查詢效果一致,同時進行條件表達式組合時也可以配合NOT 進行組合,例如 NOT BETWEEN 30 AND 50,即是查小於30和大於50的範圍

基本語句格式: SELECT * | col-name1,col-name2... FROM table_name WHERE col-name BETWEEN ? AND ?;

6、並表查詢

並表查詢主要依附於表的鏈接(JOIN),表的鏈接分為,內連接,外連接,交叉連接。

內連接基本語句格式:SELECT *FROM table1 [inner] join table2 on table1.字段1=table2.字段1....;

內連接基本語句格式2:SELECT * FROM table1,table2 WHERE table1.字段1=table2.字段1....;

交叉連接:表與表之間做笛卡兒積,SELECT * FROM table1,table2....

外連接又可細分為左外連接,右外連接和全連接

①左外連接:LEFT OUTER JOIN

左側的表中的全部數據都會被顯示出來,但是右側表的數據,只有和左側匹配上的字段才會被查詢出來!否則都會顯示null!

基本語句格式1SELECT * FROM table1 LEFT OUTER JOIN table2 on table1.col-name1=table2.col-name1;

基本語句格式2SELECT* FROM table1 LEFT OUTER JOIN table2 where table1.col-name1=table2.col-name1;

②右外連接:RIGHT OUTER JOIN

右側的表中的全部數據都會被顯示出來,但是左側表的數據,只有和右側匹配上的字段才會被查詢出來!否則都會顯示null!

基本語句格式1:SELECT * FROM table1 RIGHT OUTER JOIN table2 on table1.col-name1=table2.col-name1;

基本語句格式2:SELECT* FROM table1 RIGHT OUTER JOIN table2 where table1.col-name1=table2.col-name1;

③全外連接:FULL/ALL OUTER JOIN

基本語句格式:SELECT * FROM table1 FULL OUTER JOIN table2 on table1.col-name1=table2.col-name1;

SQL基礎操作匯總