文章來源地址http://www.zghlxwxcb.cn/news/detail-667675.html
1.?在執(zhí)行語句之前,會先檢查下列事項
1.1.?是否有權(quán)限執(zhí)行該語句
1.2.?是否有權(quán)限訪問指定的數(shù)據(jù)
1.3.?語句的語法是否正確
2.?select子句
2.1.?select子句是select語句中的第一個子句,但最后才會被數(shù)據(jù)庫服務器評估
2.2.?決定哪些列應該包含在查詢的結(jié)果集中
2.3.?字面量
2.4.?表達式
2.5.?內(nèi)建函數(shù)調(diào)用
2.6.?用戶自定義函數(shù)調(diào)用
2.7.?select ?version(),database(),user()
2.8.?列的別名
2.8.1.?AS是可選項
2.9.?移除重復數(shù)據(jù)
2.9.1.?select后面直接添加關鍵字distinct來實現(xiàn)
2.10.?關鍵字all是默認的
2.10.1.?不需要指明
2.10.2.?如果不想讓服務器移除重復數(shù)據(jù)或者確定結(jié)果集中不會出現(xiàn)重復數(shù)據(jù),可以使用關鍵字all代替distinct
2.11.?生成一組不同的結(jié)果時需要對數(shù)據(jù)進行排序,這對于大型結(jié)果集會很耗時
2.12.?不要陷入為了確保沒有重復數(shù)據(jù)而使用distinct的陷阱,而應該花時間充分理解所處理的數(shù)據(jù),以便了解是否可能出現(xiàn)重復數(shù)據(jù)
3.?from子句
3.1.?定義了查詢要用到的數(shù)據(jù)表以及連接數(shù)據(jù)表的方式
3.2.?寬泛定義的數(shù)據(jù)表
3.2.1.?永久數(shù)據(jù)表(使用create table語句創(chuàng)建)
3.2.2.?派生數(shù)據(jù)表(由子查詢返回并保存在內(nèi)存中的行)
3.2.2.1.?子查詢由一對小括號包圍,可以出現(xiàn)在select語句的各個部分中
3.2.2.2.?子查詢的作用在于生成其他所有查詢子句中可見的派生數(shù)據(jù)表,以及與from子句中的其他數(shù)據(jù)表交互
3.2.3.?臨時數(shù)據(jù)表(保存在內(nèi)存中的易失數(shù)據(jù))
3.2.3.1.?mysql
-> CREATE TEMPORARY TABLE actors_j
-> (actor_id smallint(5),
-> first_name varchar(45),
-> last_name varchar(45)
-> );
3.2.3.2.?臨時保留在內(nèi)存中,會話結(jié)束后就消失了
3.2.3.3.?Oracle Database是一個例外,它會保留臨時數(shù)據(jù)表定義,以備后續(xù)會話使用
3.2.4.?虛擬數(shù)據(jù)表(使用create view語句創(chuàng)建)
3.2.4.1.?視圖是存儲在數(shù)據(jù)目錄中的查詢,其行為表現(xiàn)就像數(shù)據(jù)表,但是并沒有與之關聯(lián)的數(shù)據(jù)(這就是將其稱為虛擬數(shù)據(jù)表的原因)
3.2.4.2.?創(chuàng)建視圖時,不會生成或存儲額外的數(shù)據(jù)
3.2.4.3.?服務器只是保留select語句,以備后用
3.2.4.4.?創(chuàng)建視圖的原因各種各樣,包含對用戶隱藏列、簡化復雜的數(shù)據(jù)庫設計
4.?數(shù)據(jù)表鏈接
4.1.?如果from子句中出現(xiàn)多個數(shù)據(jù)表,則必須包含用于鏈接(link)這些數(shù)據(jù)表的條件
4.2.?定義數(shù)據(jù)表別名
4.2.1.?使用完整的數(shù)據(jù)表名稱
4.2.2.?為每個數(shù)據(jù)表指定別名,在查詢中使用該別名
4.2.3.?使用別名可以在不造成困惑的情況下(只要選擇合理的別名)編寫出更緊湊的語句
5.?where子句
5.1.?一種機制,用于過濾掉結(jié)果集中不想要的行
5.2.?在混用不同的運算符時,應該堅持使用括號對條件進行分組
5.2.1.?以便你自己、數(shù)據(jù)庫服務器和后續(xù)人員都能夠意見統(tǒng)一地修改代碼
6.?group by和having子句
6.1.?在返回結(jié)果集之前對數(shù)據(jù)進行處理,以便發(fā)現(xiàn)數(shù)據(jù)呈現(xiàn)的規(guī)律
7.?order by子句
7.1.?使用原始列數(shù)據(jù)或基于列數(shù)據(jù)的表達式對結(jié)果集進行排序的一種機制
7.2.?可以通過關鍵字asc和desc來指定升序排序或降序排序
7.3.?默認為按照升序排序,如果希望按照降序排序,需要加入desc關鍵字
7.4.?降序排序多用于評級查詢
7.5.?MySQL提供了limit子句以允許對數(shù)據(jù)進行排序,然后只保留前X行
7.6.?比如“顯示余額最多的前5個賬戶”
7.7.?通過數(shù)字占位符進行排序
7.7.1.?查詢使用select子句中的第3列,按照降序進行排序
7.7.2.?mysql
-> SELECT c.first_name, c.last_name,
-> time(r.rental_date) rental_time
-> FROM customer c
-> INNER JOIN rental r
-> ON c.customer_id = r.customer_id
-> WHERE date(r.rental_date) = '2005-06-14'
-> ORDER BY 3 desc;
7.7.3.?在編寫臨時查詢的時候使用位置引用列
7.8.?在編寫代碼時,則堅持按照名稱引用列
文章來源:http://www.zghlxwxcb.cn/news/detail-667675.html
到了這里,關于讀SQL學習指南(第3版)筆記04_查詢?nèi)腴T的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!