Oracle知識梳理(三)操做篇:SQL基礎操做彙總oracle
1、表操做spa
一、表的建立(CREATE TABLE):設計
基本語句格式: CREATE TABLE table_name ( col_name datatype, ……);blog
解釋: table_name 爲要建立的表的名稱(同一登陸用戶下表名必須惟一),col_name 爲表中屬性的名稱,datatype 爲屬性的相應數據類型,同一表中會有許多字段,也能夠在字段數據類型後追加各類約束條件(具體見約束)。table
例:class
二、表的修改(ALTER TABLE):email
解釋:全部對錶進行修改的語句,開頭均以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爲字段刪除的關鍵字)
例:
三、表的刪除(DROP TABLE\TRUNCATE TABLE):
①截斷方式刪除表:僅清空表中數據,不會刪除表,也不會刪除表中的字段。
基本語句格式:TRUNCATE TABLE table_name;
例:
②徹底刪除方式刪除表:會將整個表刪除,包括表中數據和表的結構、字段。
基本語句格式:DROP TABLE table_name;
例:
四、向插入數據(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;
例:
五、修改表中數據(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...
例:
六、刪除表中數據(DELETE):
①刪除所有數據:
基本語句格式:DELETE FROM table_name; 這一句與上文截斷的結果一致,刪除該表中所有數據。
②刪除具體某行的數據:
基本語句格式:DELETE FROM table_name WHERE col_name=value....;
例:
2、約束
一、主鍵約束(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 語句後面使用。
二、外鍵約束(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 語句後面使用。
三、非空約束(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;
四、惟一約束(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 ;
五、檢查約束(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 ;
3、查詢
一、運算符
算數運算符: +、-、*、/
比較運算符:> , >= , < , <= , = , <> 注:主要用在where關鍵字後面,結果爲布爾值
邏輯運算符:NOT, AND , OR 用以連接條件,對應着並,或,非。
表達式 = 操做數 + 運算符 這裏的操做數在oracle中能夠是變量,常量,字段
二、基本查找語句(SELECT)
基本語句格式:SELECT col-name1,col-name2... | * FROM table_name;
三、條件查詢(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的全部用戶的帳號和密碼信息
四、模糊查詢(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字母的全部用戶的用戶名
五、範圍查詢(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 ?;
六、並表查詢
並表查詢主要依附於表的連接(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;