日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

sql 减法_SQL学习笔记整理(持更)

發(fā)布時(shí)間:2025/3/20 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql 减法_SQL学习笔记整理(持更) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從零開始學(xué)習(xí)SQL,在這里分享自己的筆記,主要通過自己看的、做的例題映射知識點(diǎn)。入門級SQL 應(yīng)知應(yīng)會(huì)Key Point與例題。雖然這個(gè)筆記不是最全面深入的,但一定必含小白入門必懂基礎(chǔ)要點(diǎn)(非常基礎(chǔ)),還有常常不小心就會(huì)踩的坑都在這里了,主要針對知識點(diǎn)在實(shí)際應(yīng)用中的理解。數(shù)據(jù)練習(xí)可以自己找其他做比如SQLZOO。

可樂:SQL ZOO習(xí)題筆記

由于這里有些語句打出來無法突出,采取截圖,層次展現(xiàn)更直觀清晰。 剛開始看的內(nèi)容有限,待學(xué)習(xí)完后,希望能分享出系統(tǒng)的筆記,會(huì)在這里持續(xù)更新。

PART 1 查詢基礎(chǔ)

2.字符串日期 使用 ' ' ;數(shù)字無需單引號,直接書寫

3.數(shù)據(jù)庫創(chuàng)建 CREATE DATABASE Shop;

4.SELECT

常數(shù)查詢(可理解為賦值)

選擇記錄:WHERE

可以不選取出作為查詢條件的列

2.算術(shù)運(yùn)算符 :+ — * /

-- 所有包含 NULL 的計(jì)算,結(jié)果肯定是 NULL 。

3.比較運(yùn)算符: <>

  • 思考:如下對字符串使用大于等于或者小于等于不等號時(shí)會(huì)得到什么樣的結(jié)果?(字典順序)

  • 不能對 含 NULL 列 使用比較運(yùn)算符(用IS NOT NULL)

4.邏輯運(yùn)算符

SELECT product_name, product_type, regist_date FROM Product WHERE product_type = ' 辦公用品 ' AND ( regist_date = '2009-09-11'OR regist_date = '2009-09-20');

SQL中的邏輯運(yùn)算是包含對真、假和不確定(UNKNOW)進(jìn)行運(yùn)算的三值邏輯。

含有 NULL 時(shí)的真值:


part2 聚合&排序

聚合?指將多行匯聚成一行

  • 聚合函數(shù)會(huì)將 NULL 排除在外。但 COUNT (*)例外,并不會(huì)排除 NULL 。
  • COUNT(*) 會(huì)得到含 NULL 的數(shù)據(jù)行數(shù),而 COUNT (列名) 會(huì)得到 NULL 外的數(shù)據(jù)行數(shù)。
  • 聚合函數(shù)只能跟在SELECT子句后

聚合函數(shù):

COUNT : 計(jì)算表中的記錄數(shù)(行數(shù))

SELECT COUNT(*), COUNT(col_1)FROM NullTbl;

SUM/AVG:不用于字符串類型數(shù)據(jù)

SELECT SUM(sale_price), SUM(purchase_price) FROM Product;

MAX/MIN:適用于任何數(shù)據(jù)類型的列。即只要是能夠排序的數(shù)據(jù),就肯定有最大值和最小值。

part 3

1.表

表的創(chuàng)建 (表名不能重復(fù),名稱必須以英文開頭)

CREATE TABLE Product(product_id CHAR(4) NOT NULL,product_name VARCHAR(100) NOT NULL,sale_price INTEGER DEFAULT 0,regist_date DATE , PRIMARY KEY (product_id));

表的刪除與更新

2.表中數(shù)據(jù)

向表中插入數(shù)據(jù):INSERT INTO VALUES

INSERT INTO Product (product_id, product_name, sale_price, regist_date) VALUES ('0005', ' 鍋 ', DEFAULT, '2009-01-15');

-- 對表進(jìn)行全列 INSERT 時(shí),可以省略表名后的列清單。即INSERT INTO Product VALUES( );

Duplicate data:INSERT INTO SELECT FROM

-- 將商品表中的數(shù)據(jù)生成新列復(fù)制到商品復(fù)制表中

INSERT INTO ProductType (product_type, sum_sale_price, sum_purchase_price) SELECT product_type, SUM(sale_price), SUM(purchase_price) FROM Product GROUP BY product_type;

--INSERT 語句的 SELECT 語句中,可以使用 WHERE 子句或 GROUP BY 子句等任何SQL語法 (但使用 ORDER BY 子句并不會(huì)產(chǎn)生任何效果,因?yàn)闊o法保證表內(nèi)部記錄的排列順序)

對查詢結(jié)果數(shù)據(jù)進(jìn)行排序 :ORDER BY

▲子句的書寫順序

1. SELECT 子句 → 2. FROM 子句 → 3. WHERE 子句 → 4. GROUP BY 子句 →5. HAVING 子句 → 6. ORDER BY 子句

降序(默認(rèn)升序ASC):SELECT *

FROM Product

ORDER BY regist_date DESC, sale_price;

辨: ORDER BY 子句中可使用 SELECT 子句中定義的別名

ORDER BY 子句中可使用 SELECT 子句中未使用的列和聚合函數(shù)。

排序鍵中包含 NULL 時(shí),會(huì)在開頭或末尾進(jìn)行匯總。

對數(shù)據(jù)進(jìn)行分組:GROUP BY(切蛋糕的刀)

GROUP BY 聚合鍵(分組列)

聚合鍵中包含 NULL 時(shí),在結(jié)果中會(huì)以“不確定”行(空行)的形式表現(xiàn)出來。

▲GROUP BY 和 WHERE 并用時(shí) SELECT 語句的執(zhí)行順序

FROM → WHERE → GROUP BY → SELECT

使用聚合函數(shù)時(shí), SELECT 子句中只能存在以下三種元素。

● 常數(shù):數(shù)字 123,或者字符串 ' 測試 ' 這樣寫在 SQL 語句中的固定值

● 聚合函數(shù)

● GROUP BY 子句中指定的列名(也就是聚合鍵)

NOTE:把聚合鍵之外的列名書寫在 SELECT 子句之中.X

GROUP BY 子句時(shí), SELECT 子句中不能出現(xiàn)聚合鍵之外的列名。

GROUP BY 子句的結(jié)果隨機(jī)排序

-- 用WHERE 子句指定條件時(shí)不能跟聚合函數(shù),HAVING出現(xiàn)。

辨:“想要?jiǎng)h除選擇結(jié)果中的重復(fù)記錄”時(shí)使用 DISTINCT ,

“想要計(jì)算匯總結(jié)果”時(shí)使用 GROUP BY 。

辨析HAVING 與WHERE

HAVING 子句的構(gòu)成要素:常數(shù)、聚合函數(shù)、聚合鍵

SELECT product_type, COUNT(*)

FROM Product

GROUP BY product_type

HAVING COUNT(*) = 2;

辨:聚合鍵所對應(yīng)的條件不應(yīng)寫在 HAVING 子句當(dāng)中,而應(yīng)寫在 WHERE 子句當(dāng)中。

數(shù)據(jù)的刪除 : DROP; DELETE FROM

① DROP TABLE 語句可以將表完全刪除

② DELETE 保留數(shù)據(jù)表,僅刪除全部數(shù)據(jù)行

DELETE FROM Product

WHERE sale_price >= 4000;

-- 確認(rèn)刪除后的結(jié)果

SELECT * FROM Product;

NOTE:① DELETE 語句中不能用 GROUP BY 、HAVING 和 ORDER BY 三類子句,只能用 WHERE 子 句。 (理解:刪除后條件查詢、排序等失效)

② 只能刪除表中全部數(shù)據(jù)的 TRUNCATE Product;

數(shù)據(jù)重復(fù)行的刪除:SELECT DINSTINCT FROM

-- DISTINCT 關(guān)鍵字只能用在第一個(gè)列名之前。不能寫成 r _ date , DISTINCT p _type 。

可使用聚合函數(shù)刪除重復(fù)值

SELECT SUM(DISTINCT sale_price)FROM Product;

數(shù)據(jù)的更改(更新):UPDATE SET WHERE

UPDATE Product SET sale_price = sale_price * 10,purchase_price = purchase_price / 2 WHERE product_type = ' 廚房用具 '; -- 確認(rèn)更新內(nèi)容 SELECT * FROM Product ORDER BY product_id;

使用 NULL 進(jìn)行更新

UPDATE ProductSET regist_date = NULLWHERE product_id = '0008';

NOTE:使用 UPDATE 語句可以將值清空為 NULL (但只限于未設(shè)置 NOT NULL 約束的列)。

PART 4 視圖 (CREATE VIEW AS )與復(fù)雜查詢

表:通過 INSERT 語句將數(shù)據(jù)保存到數(shù)據(jù)庫之中,而數(shù)據(jù)庫中的數(shù)據(jù)實(shí)際上會(huì)被保存到計(jì)算機(jī)的存儲設(shè)備(通常是硬盤)中。

視圖保存的是從表中取出數(shù)據(jù)所使用的 SELECT 語句(了解,不用區(qū)分)

1 創(chuàng)建視圖

視圖的限制:

① ——定義視圖時(shí)不能使用 ORDER BY 子句

② 視圖和表需要同時(shí)進(jìn)行更新,因此通過匯總得到的視圖無法進(jìn)行更新。

2 子查詢:一次性視圖( SELECT 語句)

根據(jù)商品種類統(tǒng)計(jì)商品數(shù)量的視圖:

標(biāo)量子查詢:必須而且只能返回表中某一行的某一列的值

標(biāo)量子查詢的書寫位置并不僅僅局限于 WHERE 子句中,通常任何可

以使用單一值的位置都可以使用。也就是說,能夠使用常數(shù)或者列名的

地方,無論是 SELECT 子句、 GROUP BY 子句、 HAVING 子句,還是

ORDER BY 子句,幾乎所有的地方都可以使用。

在 WHERE 子句中使用子查詢時(shí),該子查詢的結(jié)果必須是單一的。

關(guān)聯(lián)子查詢:(細(xì)切分的組內(nèi)進(jìn)行比較時(shí)使用)

關(guān)聯(lián)子查詢按照商品種類對平均銷售單價(jià)進(jìn)行比較

Question編寫一條 SQL 語句,創(chuàng)建一幅包含如下數(shù)據(jù)的視圖(名稱為 AvgPriceByType )。

answer

PART 5函數(shù) 謂詞

謂詞:LIKE、OR 、IN 、BETWEEN 、EXISTS(記錄)

謂詞的作用就是“判斷是否存在滿足某種條件的記錄”。如果存在這樣的記錄就返回真( TRUE ),如果不存在就返回假( FALSE )。

IN 謂詞—— OR 的簡便用法

eg:

通常指定關(guān)聯(lián)子查詢作為 EXIST 的參數(shù)。

作為 EXIST 參數(shù)的子查詢中經(jīng)常會(huì)使用 SELECT * 。

case

CASE 表達(dá)式可進(jìn)行行列轉(zhuǎn)換

PART6 表的加減法與聯(lián)結(jié)

1,加減法:以行方向?yàn)閱挝贿M(jìn)行操作,即增加記錄行數(shù)

SELECT product_id, product_name FROM Product UNION SELECT product_id, product_name FROM Product2 ORDER BY product_id;

-- UNION 等集合運(yùn)算符通常都會(huì)除去重復(fù)的記錄。使用UNION ALL 選項(xiàng),可以保留重復(fù)行。

-- 選取表中公共部分—— INTERSECT(交集) ;

--減法運(yùn)算(注意被減數(shù)與減數(shù)位置) EXCEPT (差集)

條件:列數(shù)必須相同,列的類型必須一致, ORDER BY 子句只能在最后使用一次

2 聯(lián)結(jié):以列為單位對表進(jìn)行聯(lián)結(jié)

內(nèi)聯(lián)結(jié):eg

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, P.sale_price FROM ShopProduct AS SP INNER JOIN Product AS P ON SP.product_id = P.product_id WHERE SP.shop_id = '000A';

3張表聯(lián)結(jié):

--進(jìn)行聯(lián)結(jié)時(shí)需要在 FROM 子句中使用多張表。

ON (聯(lián)結(jié)鍵),要書寫在 FROM 和 WHERE 之間。

SELECT 子句中的列需要按照“ < 表的別名 > . < 列名 > ”的格式進(jìn)行書寫。

外聯(lián)結(jié) ——選取出單張表中全部的信息

SELECT SP.shop_id, SP.shop_name, SP.product_id, P.product_name, P.sale_price FROM ShopProduct AS SP RIGHT OUTER JOIN Product AS P ON SP.product_id = P.product_id;

--指定主表的關(guān)鍵字是 LEFT 和 RIGHT

總結(jié)

以上是生活随笔為你收集整理的sql 减法_SQL学习笔记整理(持更)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。