SQL必知必會(huì)----第四版(一)

記錄自己學(xué)習(xí)這本書的過程
此篇文章包括檢索、排序檢索數(shù)據(jù)和過濾數(shù)據(jù)

通往其他文章的入口:
SQL必知必會(huì)----第四版(二)
SQL必知必會(huì)----第四版(三)
SQL必知必會(huì)----第四版(四)
SQL必知必會(huì)----第四版(五)
SQL必知必會(huì)----第四版(六)
SQL必知必會(huì)----第四版(七)

所有例子都基于product表
product表.png

一、檢索

檢索的關(guān)鍵為SELECT

  • 檢索表中一列數(shù)據(jù)
SELECT p_country 
FROM product;
檢索表中一列數(shù)據(jù).png

??多條SQL語句必須以;分隔。單條SQL語句有的需要加,有的不需要加。即使不一定需要,加上分號(hào)也肯定沒有壞處。
??SQL語句是不區(qū)分大小寫的,但是表名、列名和值可能有所不同。
??SQL語句可以寫成長長的一行,也可以分寫在多行,但是一定要注意空格,不要被省略。

  • 檢索表中多列數(shù)據(jù)
SELECT p_id, p_name, p_country 
FROM product;
檢索表中多列數(shù)據(jù).png

??在選擇多個(gè)列時(shí),一定要在列名之間加上逗號(hào),但是最后一個(gè)列名后一不加。

  • 檢索所有列
SELECT * 
FROM product;

??除非你確實(shí)需要表中的每一項(xiàng),否則最好別使用*通配符,檢索不需要的列通常會(huì)降低檢索和應(yīng)用程序的性能。如圖product.png,最上方。

  • 檢索不同的值
SELECT DISTINCT p_price 
FROM product;

??DISTINCT關(guān)鍵字用作于所有列,不僅僅是跟在其后的那一類。
檢索不同的值.png
  • 限制結(jié)果
  1. 返回不超過3行的數(shù)據(jù)
SELECT id, p_name
FROM product 
LIMIT 3;
返回不超過3行的數(shù)據(jù).png
  1. 檢索從第3行起的2條數(shù)據(jù)
SELECT id, p_name
FROM product 
LIMIT 2 OFFSET 3;
檢索從第3行起的2條數(shù)據(jù).png
  • 使用注釋
SELECT p_name 
--這是一條注釋
FROM product;

??--之后的文本就是注釋。

/*SELECT p_name
FROM product;*/

??從/*開始,到*/結(jié)束,中間的任何內(nèi)容都是注釋。這種方式長用于給代碼加注釋。

二、排序檢索數(shù)據(jù)

  • 排序數(shù)據(jù)
SELECT id, p_country
FROM product
ORDER BY p_country;
排序數(shù)據(jù).png

??在指定一條ORDER BY子句時(shí),應(yīng)該保證它是SELECT語句中最后一條子句。
??通常,ORDER BY子句中使用的列將是為顯示而選擇的列。但是,實(shí)際上并不一定要這樣,用非檢索的列排序數(shù)據(jù)是完全合法的。

  • 按多個(gè)列排序
SELECT p_id, p_name, p_country
FROM product
ORDER BY p_id, p_country;

??首先按p_id,然后按p_country排序。
按多個(gè)列排序.png
  • 按列位置排序
SELECT id, p_name, p_country
FROM product
ORDER BY 2, 3;

??這里排序指定的是選擇列的相對(duì)位置而不是列名。首先按p_country,然后按p_price排序。
按列位置排序.png

??當(dāng)根據(jù)不出現(xiàn)在SELECT清單中的列進(jìn)行排序時(shí),不能采用這項(xiàng)技術(shù)。但是,如果有必要,可以混合使用實(shí)際列和相對(duì)列位置。

  • 指定排序方向
    默認(rèn)排序?yàn)樯蚺帕?,降序排列關(guān)鍵字為DESC。
SELECT p_name, p_country, p_price 
FROM product 
ORDER BY p_price DESC;

??以p_price降序排列。
指定排序方向-1.png
SELECT p_id, p_name, p_price 
FROM product 
ORDER BY p_id DESC, p_price;

??以p_id降序、p_price升序排列。
指定排序方向-2.png

??DESC關(guān)鍵字只應(yīng)用到位于其前面的列名。
??如果想在多個(gè)列上進(jìn)行降序排列,必須對(duì)每一列指定DESC關(guān)鍵字。
??DESC是DESCENDING的縮寫,這兩個(gè)關(guān)鍵字都可以使用。與DESC相對(duì)的是ASC(或ASCENDING),在升序排序時(shí)可以指定它。但實(shí)際上,ASC沒有多大用處,因?yàn)樯蚴悄J(rèn)的。

三、過濾數(shù)據(jù)

  • 使用WHERE子句
SELECT p_name, p_count 
FROM product 
WHERE p_count = 5;

這條語句從product表中檢索兩列,但不反回所有行,只返回p_count值為5的行。
WHERE-1.png

??數(shù)據(jù)也可以在應(yīng)用層過濾。為此,SQL的SELECT語句為客戶端應(yīng)用檢索出超過實(shí)際所需的數(shù)據(jù),然后客戶端代碼對(duì)返回?cái)?shù)據(jù)進(jìn)行循環(huán),提取出需要的行。通常,這種做法極其不妥。優(yōu)化數(shù)據(jù)庫后可以更快速地對(duì)數(shù)據(jù)進(jìn)行過濾。而讓客戶端應(yīng)用(或開發(fā)語言)處理數(shù)據(jù)庫的工作將會(huì)極大地影響應(yīng)用的性能,并且使所創(chuàng)建的應(yīng)用完全不具備可伸縮性。此外,如果在客戶端過濾數(shù)據(jù),服務(wù)器不得不通過網(wǎng)絡(luò)發(fā)送多余的數(shù)據(jù),這將導(dǎo)致網(wǎng)絡(luò)寬帶的浪費(fèi)。
??在同時(shí)使用ORDER BY和WHERE子句時(shí),應(yīng)該讓ORDER BY位于WHERE之后。

  • WHERE子句操作符
操作符 說明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 在指定的兩個(gè)值之間
IS NULL 為NULL值
SELECT p_name, p_price
FROM product
WHERE p_price < 5;

??列出所有p_price小與5的數(shù)據(jù)。
WHERE-2.png
SELECT p_name, p_price
FROM product
WHERE p_price <= 4.6;

??列出所有p_price小與等于4.6的數(shù)據(jù)。
WHERE-3.png
SELECT p_name, p_country
FROM product
--p_country p_country != 'CN'
WHERE p_country <> 'CN'; 

??列出所有p_country不等于CN的數(shù)據(jù)。
WHERE-4.png
SELECT id, p_name
FROM product
WHERE id BETWEEN 2 AND 5;

??在使用BETWEEN時(shí),必須指定兩個(gè)值,所需范圍的低端紙和高端值。這兩個(gè)值必須使用AND關(guān)鍵字分隔。BETWEEN匹配范圍中所有的值,包括指定的開始值和結(jié)束值。
WHERE-5.png
SELECT p_name
FROM product
WHERE p_name IS NULL;

??列出所有p_name值為NULL的所有數(shù)據(jù)。
不好意思,這個(gè)沒圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 表 存儲(chǔ)在表中的數(shù)據(jù)是同一種類型的數(shù)據(jù)或清單。 數(shù)據(jù)庫中的表有為一個(gè)名字來標(biāo)識(shí)自己。 表具有一些特性,這些特性定義...
    蛐蛐囍閱讀 1,471評(píng)論 0 7
  • 第三課: 排序檢索數(shù)據(jù) distinct關(guān)鍵字:distinct 列名1,列名2,列名3DISTINCT 關(guān)鍵字會(huì)...
    VictorBXv閱讀 1,619評(píng)論 0 8
  • 數(shù)據(jù)庫入門 數(shù)據(jù)庫: 保存有組織的數(shù)據(jù)的容器(通常是一個(gè)文件或一組文件).數(shù)據(jù)庫軟件應(yīng)該稱為 DBMS(DataB...
    Mjericho閱讀 578評(píng)論 0 0
  • 小時(shí)候,我是一個(gè)安靜的女孩子,卻對(duì)這個(gè)世界充滿好奇,為此也曾拆散不少物件,只想看看他們里面都是什么??? 長大了,依...
    簡(jiǎn)一_閱讀 614評(píng)論 0 1
  • 富蘭克林從小家境一般,家里十幾個(gè)孩子,他是老小,學(xué)習(xí)非常優(yōu)異,但由于家庭情況被迫轉(zhuǎn)向職業(yè)中專。畢業(yè)以后跟著自己家里...
    孤獨(dú)的藏書人閱讀 397評(píng)論 0 0

友情鏈接更多精彩內(nèi)容