SQL基礎操作匯總
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!
基本語句格式1:SELECT * FROM table1 LEFT OUTER JOIN table2 on table1.col-name1=table2.col-name1;
基本語句格式2:SELECT* 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基礎操作匯總