本章將學(xué)習(xí)的內(nèi)容有:
創(chuàng)新互聯(lián)是專業(yè)的遷安網(wǎng)站建設(shè)公司,遷安接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行遷安網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
如何使用集合操作符,集合操作符用于將兩個或多個查詢返回的行組合起來
使用TRANSLATE函數(shù)
1、使用集合操作符
操作符 | 說明 |
UNION ALL | 返回各個查詢檢索出的所有行,包括重復(fù)行 |
UNION | 返回各個查詢檢索出的所有行,不包括重復(fù)行 |
INTERSECT | 返回兩個檢索鎖的共有行 |
MINUS | 返回將第二個查詢檢索出的行從第一個查詢檢索的行中去除之后的行 |
注意:當(dāng)使用集合操作符的時候,必須牢記這樣一條限制:所有查詢返回的列數(shù)以及列的類型必須匹配,但列名可以不同。
使用INTERSECT查找兩次檢索結(jié)果中有相同的結(jié)果
使用MINUS操作返回第一個結(jié)果去除第二個查詢結(jié)果之后的結(jié)果。(有興趣的童鞋可以自行測試下)
2、使用TRANSLATE函數(shù)
TRANSLATE(x,from_string,to_string)函數(shù)在x中查找from_string中的字符,并將其轉(zhuǎn)換成to_string中對應(yīng)的字符。
3、使用DECODE()函數(shù)
DECODE(value,search_value,result,default_value) 對value與search_value進(jìn)行比較。如果這兩個值相等,DECODE()返回result,否則返回default_value。
DECODE()允許在SQL中執(zhí)行if-then-else類型的邏輯處理。
4、使用CASE表達(dá)式
case表達(dá)式可以在SQL中實現(xiàn)if-then-else型邏輯,case表達(dá)式的工作方式與decode()類似,但是我們應(yīng)該使用case,因為它兼容ANSI,并且已經(jīng)成為SQL/92標(biāo)準(zhǔn)的一部分另外case表達(dá)式易讀。語法:
case search_expression
when expression1 then result1
when expression2 then result2
...
when expressionN then resultN
else default_result
end
5、使用分析函數(shù)
數(shù)據(jù)庫中有很多內(nèi)置的分析函數(shù),能夠執(zhí)行復(fù)雜的計算,例如查找每月銷量最高的商品類行,業(yè)績最佳的銷售員等。分析函數(shù)可以分為以下幾類。
評級函數(shù):可計算等級、百分比等
反百分比函數(shù):可計算對應(yīng)于百分點的數(shù)值
窗口函數(shù):可計算累積和移動總計
報表函數(shù):可計算注入市場占有率之類的結(jié)果
延遲與領(lǐng)先函數(shù):可獲得與當(dāng)前記錄的記錄為若干條記錄的那個記錄的值
首函數(shù)與末函數(shù):可獲得某個已經(jīng)排序的第一個和最后一個返回值
線性回歸函數(shù):可用一條普通最小平方回歸曲線來擬合一組數(shù)值對
5、修改表內(nèi)容
使用INSERT語句添加行
當(dāng)省略列的列表時,指定的順序必須與DESCRIBE命令輸出結(jié)果顯示的列的順序一致
要為控制指定NULL值
從一個表向另一個表復(fù)制行。要求:源表和目標(biāo)表的列數(shù)以及列的類型必須匹配
SQL>INSERT INTO cboss.fault_barrier_base_code(code_type,code_id) SELECT c.code_type,c.code_id FROM cboss.cboss_base_code WHERE c.serialno < 100
使用UPDATE語句修改行
使用RETURNING子句,返回使用聚合函數(shù)如AVG()計算的結(jié)果。
使用DELETE語句刪除行
6、數(shù)據(jù)庫的完整性
6.1、主鍵約束。主鍵的每一個值必須是唯一的primary key
6.2、外鍵約束。foreign key。。 references
6.3、使用默認(rèn)值default
6.4、使用MERGE合并行
6.5、數(shù)據(jù)庫事務(wù)(transaction)是一組SQL語句,這組SQL語句就是一個邏輯工作單元。事務(wù)是不可分割的SQL語句,其結(jié)果應(yīng)該作為一個整體永久性地修改數(shù)據(jù)庫的內(nèi)容
或者取消對數(shù)據(jù)庫的修改
6.5.1、事務(wù)的提交和回滾
事務(wù)提交需要執(zhí)行COMMIT語句,從而提交(commit)事務(wù)。要取消SQL語句的結(jié)果,需要執(zhí)行ROLLBACK語句,從而回滾(rollback)事務(wù),將所有行重新設(shè)置為原始狀態(tài)。
6.52、事務(wù)的開始與結(jié)束
事務(wù)是用來分割SQL語句的邏輯工作單元。事務(wù)既有起點也有終點。執(zhí)行DML語句的時候事務(wù)開始。執(zhí)行COMMIT或者ROLLBACK時事務(wù)結(jié)束。執(zhí)行DDL語句,如CREATE自動提交事務(wù)。執(zhí)行DCL語句,例如GRANT語句,自動提交事務(wù)。
6.5.3、設(shè)置保存點,SAVEPOINT,可以將修改回滾到保存點。這對一個大事務(wù)來說很有用。
6.5.4、事務(wù)的ACID特性
原子性(Atomic)事務(wù)是原子的,不可分割
一致性(Consist)事務(wù)必須確保數(shù)據(jù)庫的狀態(tài)保持一致,事務(wù)結(jié)束,數(shù)據(jù)庫狀態(tài)時結(jié)束,事務(wù)開始,數(shù)據(jù)庫狀態(tài)也是開始
隔離性(Isolated)多個事務(wù)之間是獨立運行的,互不影響
持久性(Durale)一旦事務(wù)被提交,數(shù)據(jù)的變化就會被永遠(yuǎn)的保留下來。
6.5.5、并發(fā)事務(wù)
Oracle數(shù)據(jù)庫軟件支持多個用戶同時與數(shù)據(jù)庫進(jìn)行交互,每個用戶都可以同時運行自己的事務(wù)。這種事務(wù)成為并發(fā)事務(wù)(concurrent transaction)。
要支持并發(fā)事務(wù),Oracle數(shù)據(jù)庫軟件必須保證表中的數(shù)據(jù)一直有效,這可以通過鎖(Lock)來實現(xiàn)。
7、用戶、特權(quán)和角色
創(chuàng)建用戶:
CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE default_tablespace] [TEMPORARY TABLESPACE temporary_tablespace]
給用戶授權(quán):
GRANT PRIVILIGE TO USER; 示例: GRANT CREATE,DROP,CONNECT TO USER_NAME; 查看用戶系統(tǒng)特權(quán) SELECT * FROM USER_SYS_PRIVS ORDER BY PRIVILEGE; 查看用戶對象特權(quán) SELECT * FROM USER_TAB_PRIVS; 撤銷用戶特權(quán) REMOVE PRIVELES FROM USER_NAME 示例 REMOVE CREATE,CONNECT FRMO USER_NAME;
角色(role)就是一組特權(quán),他可以分配給一個用戶或者其他角色
角色的優(yōu)點和特性:
并不是一次一個地將特權(quán)直接授予一個用戶,而是先創(chuàng)建角色,向該角色授予一些特權(quán),然后再將角色授予多個用戶和角色
在增加和刪除一個角色的某種特權(quán)時,被授予該角色的所有用戶和角色都會自動獲得新加的特權(quán)或者自動失去這種特權(quán)
可以將多個角色授予一個用戶或角色
可以為角色設(shè)置密碼
創(chuàng)建角色 CREATE ROLE user_manager; 設(shè)置密碼 CREATE ROLE admin_manager IDENTIFIED BY admin_password; #為角色授權(quán) GRANT PRIVILEGES ON TABLE_NAME TO USER_MANAGER; #將角色授予用戶 GRANT ROLE_NAME TO USER_NAME;