DELETE:刪除已有表的數(shù)據(jù)
UPDATE:更新已有表的數(shù)據(jù)
INSERT:向已有表中插入數(shù)據(jù)
注:DELETE,UPDATE和INSERT是否直接提交取決與執(zhí)行語句所在的環(huán)境。
在執(zhí)行時注意事務(wù)日志滿的情況。
1、select時,注意索引謂詞和非索引謂詞,盡量在有索引的列上使用索引謂詞。
謂詞類型 可索引 注 釋
Col∝con Y ∝代表>;,>;=,=,<=,<,但是<>;不是可索引的。
Col between con1 and con2 Y 在匹配系列中必須是最后的。
Col in list Y 僅對一個匹配列
Col is null Y
Col like ‘xyz%’ Y 模糊匹配%在后面。
Col like ‘%xyz’ N 模糊匹配%在前面。
Col1∝Col2 N Col1和col2來自同一個表
Col∝Expression N 例如:c1(c1+1)/2
Pred1 and Pred2 Y Pred1和Pred2都是可索引的,指相同索引的列
Pred1 or Pred2 N 除了(c1=a or c1=b)外,他可以被認(rèn)為是c1 in(a,b)
Not Pred1 N 或者任何的等價形式:Not between,Not in,Not like等等。
使用索引的例子介紹:
<1>;、單個表上索引查詢的介紹 :
A:select * from t1 where c1 = 10;
在c1列上無索引,如何檢索
在c1列上有索引,如何檢索
B:select * from t1 where c1 =10 and c2 between 5 and 10 and c3 like ‘A%’
僅在c1列上有索引
在c1,c2和c3列上有單獨的索引
在c1,c2和c3列上有聯(lián)合索引
此處可以填加索引匹配規(guī)則和高級規(guī)則,比較難理解!
<2>;、兩個或多個表上索引查詢的介紹:
(1)、使用循環(huán)嵌套法執(zhí)行查詢
A:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t1.c2 =t2.c3
介紹查詢的方法,看看哪列上最需要索引。
B:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t2.c4 = 10 and t1.c2 =t2.c3
(2)、使用歸并連接執(zhí)行連接查詢
例:select t1.c1,t1.c2,t2.c3,t2.c4 from t1,t2 where t1.c1=10 and t2.c4 = 10 and t1.c2 =t2.c3
(3)、三個以上的表進行連接查詢采取的規(guī)則或者方法
(2)、GROUP BY:實現(xiàn)簡單分組的功能,當(dāng)用group by時,查詢選擇列中除了在group by中出現(xiàn)的和常量外,其他的列上要用分組函數(shù)?梢允褂靡恍┓纸M函數(shù)實現(xiàn)一些列不在group by中出現(xiàn),min,max等。
(3)、HAVING的使用,對一些分組列進行條件判斷。
(4)、ORDER BY子句使得SQL在顯示查詢結(jié)果時將各返回行按順序排列,返回行的排列順序由ORDER BY 子句指定的表達式的值確定。
2、DELETE:從表中刪除記錄
語法格式:
DELETE FROM tablename WHERE (conditions)
3、INSERT:向表中插入記錄
語法格式:
INSERT INTO tablename (col1,col2,…) VALUES (value1,value2,…);
INSERT INTO tablename (col1,col2,…) VALUES (value1, value2,…), (value1, value2,…),……
Insert不會等待任何程序,不會導(dǎo)致鎖定。
4、UPDATE:
語法格式:
UPDATE tabname SET (col1=values1,col2=values2,…) WHERE (conditions);
注:update的速度比較慢,要在相應(yīng)列上建立索引。
1、GRANT:所有著或者管理員把訪問權(quán)限賦給其他用戶
語法格式:
grant [all privileges|privileges,….] on tabname | viewname to [public|user,….]
2、REVOKE:取消某一用戶的某中訪問權(quán)限
語法格式:
Revoke [all privileges|privileges,….] on tabname | viewname from [public|user,….]
注:不能取消實例級別的用戶的任何權(quán)限,他們不是通過grant授權(quán)的,是通過組實現(xiàn)的權(quán)限。
3、COMMIT:把事務(wù)中所做的修改永久化記錄到數(shù)據(jù)庫。
語法格式:
commit [work]
4、ROLLBACK:將上次提交以來所做的更改全部撤消。
語法格式:
Rollback [work]
高級sql簡單介紹
一、查詢間使用運算詞
A: UNION 運算符
UNION 運算符通過組合其他兩個結(jié)果表(例如 TABLE1 和 TABLE2)并消去表中任何重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。
B: EXCEPT 運算符
EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復(fù)行。
C: INTERSECT 運算符
INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng) ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復(fù)行。
注:使用運算詞的幾個查詢結(jié)果行必須是一致的。
二、外連接
A、left outer join:
左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。
B:right outer join:
右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。
C:full outer join:
全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。
注:復(fù)合外連接按照從左到右的順序執(zhí)行連接,左邊連接的結(jié)果集和右邊連接
三、超級分組和移動函數(shù)
A:grouping sets:用來在單個sql中形成多級分組。
例:select company_id,node_id,count(customer_id) from customer group by grouping sets(company_id,node_id)
B:rollup:可以在單個數(shù)據(jù)庫操作中形成多個分組。
例:select company_id,node_id,count(customer_id) from customer group by rollup(company_id,node_id)
注:rollup操作不是可交換的操作,指定用戶組的順序是很重要的。
C:cube: 生成分組表中分組的所有組合。
例:select company_id,node_id,count(customer_id) from customer group by cube(company_id,node_id)
D:over:移動函數(shù)可以幫助實現(xiàn)移動的數(shù)據(jù)分析
Select date,avg(qty) over(order by date rows between 1 preceding and 1 following) as values from sale