一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

數(shù)據(jù)大佬劃出的13條重點(diǎn)SQL語句,句句經(jīng)典!

 gjzh090 2023-08-03 發(fā)布于云南

數(shù)據(jù)科學(xué)中90%的任務(wù),可以借助這13條SQL語句解決。

結(jié)構(gòu)化查詢語言 (SQL) 是一種用于管理和操作關(guān)系數(shù)據(jù)庫(kù)的編程語言。數(shù)據(jù)分析師和數(shù)據(jù)科學(xué)家廣泛使用SQL從大型數(shù)據(jù)集中發(fā)現(xiàn)規(guī)律。

SQL 是一種強(qiáng)大的工具,可用于執(zhí)行各種數(shù)據(jù)操作任務(wù),包括過濾、排序、分組和聚合數(shù)據(jù)。在本文中,我將介紹 13 個(gè)基本 SQL 語句,借助它們可解決數(shù)據(jù)科學(xué)中90%的任務(wù)。這些語句易于理解和實(shí)現(xiàn),可以為使用 SQL 打下堅(jiān)實(shí)的基礎(chǔ)。

無論你是剛接觸SQL 還是有一定的經(jīng)驗(yàn),本文都可以為你提供處理數(shù)據(jù)的幫助和實(shí)用技巧。

數(shù)據(jù)大佬劃出的13條重點(diǎn)SQL語句,句句經(jīng)典!

1.選取數(shù)據(jù)

SELECT語句用于從數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)表中檢索數(shù)據(jù)。你應(yīng)該掌握使用 SELECT 來搭配 WHERE、ORDER BY 和 GROUP BY 等不同函數(shù)對(duì)數(shù)據(jù)進(jìn)行過濾、排序和分組。下面是一個(gè) SELECT 語句的例子:

SELECT column1, column2, column3FROM table_nameWHERE condition;

在此示例中column1,column2、 和column3是你要從中檢索數(shù)據(jù)的列的名稱,table_name是包含數(shù)據(jù)的表的名稱。該WHERE子句是可選的,但用于指定查詢檢索數(shù)據(jù)所必須滿足的條件。

下面是一個(gè)示例,它從名為“客戶”的表中選擇客戶年齡大于或等于 18 歲的所有記錄:

SELECT *FROM customersWHERE age >= 18;

2.連接

JOIN 語句用于合并數(shù)據(jù)庫(kù)中兩個(gè)或多個(gè)表的數(shù)據(jù)。你應(yīng)該掌握使用 JOIN 從多個(gè)表中檢索數(shù)據(jù)并根據(jù)需要指定連接類型(例如 INNER、LEFT、RIGHT、FULL OUTER)。

以下是 JOIN 語句的幾個(gè)示例:

內(nèi)連接

INNER JOIN 僅返回兩個(gè)表中的列之間存在匹配項(xiàng)的行。這是一個(gè)例子:

SELECT orders.order_id, customers.customer_nameFROM ordersINNER JOIN customersON orders.customer_id = customers.customer_id;

在此示例中,orders表和customers表使用列customer_id進(jìn)行連接。結(jié)果表將僅包含order_id和兩個(gè)表中的customer_name列之間存在匹配項(xiàng)的列customer_id。

左連接

LEFT JOIN 返回左表中的所有行和右表中的匹配行。如果右表中沒有匹配項(xiàng),則結(jié)果將包含 NULL 值。下面是一個(gè)例子:

SELECT customers.customer_name, orders.order_idFROM customersLEFT JOIN ordersON customers.customer_id = orders.customer_id;

本例中,customers表為左表,orders表為右表。該customer_id列用于連接表。結(jié)果表將包括表中的所有行customers和表中的匹配行orders。如果表中沒有匹配項(xiàng)orders,該order_id列將包含 NULL 值。

右連接

RIGHT JOIN 返回右表中的所有行和左表中的匹配行。如果左表中沒有匹配項(xiàng),則結(jié)果將包含 NULL 值。這是一個(gè)例子:

SELECT customers.customer_name, orders.order_id FROM customers RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

本例中,orders表為左表,customers表為右表。該customer_id列用于連接表。結(jié)果表將包括表中的所有行orders和表中的匹配行customers。如果表中沒有匹配項(xiàng)customers,該customer_name列將包含 NULL 值。

外連接

SQL 中的 OUTER JOIN 用于返回一個(gè)或兩個(gè)表中的所有行,包括不匹配的行。OUTER JOIN 有兩種類型:LEFT OUTER JOIN 和 RIGHT OUTER JOIN。

下面是一個(gè) LEFT OUTER JOIN 的例子:

SELECT customers.customer_name, orders.order_id FROM customers LEFT  OUTER  JOIN orders ON customers.customer_id = orders.customer_id;

本例中,customers表為左表,orders表為右表。該customer_id列用于連接表。結(jié)果表將包括表中的所有行customers和表中的匹配行orders。如果表中沒有匹配項(xiàng)orders,該order_id列將包含 NULL 值。

下面是 RIGHT OUTER JOIN 的示例:

SELECT customers.customer_name, orders.order_id FROM customers RIGHT OUTER JOIN orders ON customers.customer_id = orders.customer_id;

本例中,orders表為左表,customers表為右表。該customer_id列用于連接表。結(jié)果表將包括表中的所有行orders和表中的匹配行customers。如果表中沒有匹配項(xiàng)customers,該customer_name列將包含 NULL 值。

值得注意的是,某些數(shù)據(jù)庫(kù)可能不支持 RIGHT OUTER JOIN,但您可以通過使用 LEFT OUTER JOIN 并交換表的順序來獲得相同的結(jié)果。

3. Where

WHERE 語句用于根據(jù)指定的條件過濾數(shù)據(jù)。你應(yīng)該掌握使用 WHERE 來檢索滿足特定條件的數(shù)據(jù)。

以下是在 SQL 中使用“where”語句從表中過濾數(shù)據(jù)的示例:

假設(shè)我們有一個(gè)名為“employees”的表,其中包含“name”、“department”和“salary”列。我們可以使用“where”語句僅選擇在“銷售”部門工作且薪水大于 $50,000 的員工:

SELECT name, department, salary FROM employees WHERE department =  'Sales'  AND salary >  50000 ;

此查詢將返回在“銷售”部門工作且薪水大于 $50,000 的所有員工的列表,并在結(jié)果中顯示他們的姓名、部門和薪水。

4. 分組

GROUP BY 語句用于根據(jù)一個(gè)或多個(gè)列對(duì)數(shù)據(jù)進(jìn)行分組,聚合函數(shù)(例如 COUNT、SUM、AVG)可用于計(jì)算分組數(shù)據(jù)的匯總。你應(yīng)該掌握使用 GROUP BY 來按類別分析數(shù)據(jù)。

假設(shè)我們有一個(gè)名為“employees”的表,其中包含“name”、“department”和“salary”列。我們可以使用 GROUP BY 語句按部門對(duì)員工進(jìn)行分組,并計(jì)算每個(gè)部門的平均工資:

SELECT department, AVG (salary) as avg_salary FROM employees GROUP BY department;

此查詢將返回所有部門的列表和每個(gè)部門的平均工資,計(jì)算方法是將該部門員工的所有工資總和除以該部門的員工人數(shù)。GROUP BY子句用于按部門對(duì)員工進(jìn)行分組,AVG函數(shù)用于計(jì)算每個(gè)部門的平均工資。

department | avg_salary-----------------------Sales      | 65000Marketing  | 55000Engineering| 80000

在此示例中,我們可以看到銷售部門的平均工資為 65,000 美元,市場(chǎng)部的平均工資為 55,000 美元,工程部的平均工資為 80,000 美元。

5.Having

HAVING語句用于在GROUP BY語句分組后過濾數(shù)據(jù)。您應(yīng)該掌握使用HAVING來根據(jù)特定條件過濾分組數(shù)據(jù)。

下面是在 SQL 中使用HAVING子句的示例:

假設(shè)有一個(gè)名為“orders”的表,其中包含“order_id”、“customer_id”、“product_id”和“quantity”列。目標(biāo)是找到訂購(gòu)了至少 50 件產(chǎn)品的客戶。可以使用GROUP BY子句將訂單按客戶分組,計(jì)算出每個(gè)客戶訂購(gòu)的每種產(chǎn)品的總數(shù)量。然后,可以使用 HAVING 子句來過濾結(jié)果,以僅包括訂購(gòu)總量至少為 50 件的客戶:

SELECT customer_id, SUM (quantity) AS total_quantity FROM orders GROUP BY customer_id HAVING SUM (quantity) >= 50 ;

此查詢將返回所有客戶及其訂購(gòu)產(chǎn)品總數(shù)的列表,但僅包括訂購(gòu)總量至少為 50 件的客戶。GROUP BY子句用于按客戶對(duì)訂單進(jìn)行分組,SUM函數(shù)用于計(jì)算每個(gè)客戶訂購(gòu)的產(chǎn)品總數(shù)量,HAVING子句用于過濾結(jié)果只包含訂購(gòu)了總數(shù)量的客戶至少50個(gè)單位。

查詢的輸出看起來像這樣:

customer_id | total_quantity---------------------------123        | 60456        | 70

在此示例中可以看到,客戶 123 總共訂購(gòu)了 60 件產(chǎn)品,客戶 456 總共訂購(gòu)了 70 件產(chǎn)品。這兩個(gè)客戶都滿足 HAVING 子句中指定的條件,該條件要求總數(shù)量至少為 50 個(gè)單位。

6. 窗口函數(shù)

SQL 中的窗口函數(shù)用于對(duì)與當(dāng)前行相關(guān)的一組行執(zhí)行計(jì)算。這些函數(shù)應(yīng)用于一個(gè)窗口,該窗口是基于指定條件或分區(qū)的表中行的子集。以下是 SQL 中窗口函數(shù)的一些示例:

  1. ROW_NUMBER():此函數(shù)為分區(qū)內(nèi)的每一行分配一個(gè)唯一的序列號(hào)。ROW_NUMBER() 函數(shù)的語法是:
SELECT column1, column2, ..., ROW_NUMBER () OVER ( ORDER BY column1) AS row_num FROM table_name;

此查詢將返回一個(gè)結(jié)果集,其中包含一個(gè)附加列“row_num”,該列包含根據(jù)“column1”的順序分配給每一行的序號(hào)。

  1. SUM():此函數(shù)計(jì)算分區(qū)內(nèi)列的總和。SUM() 函數(shù)的語法是:
SELECT column1, column2, ..., SUM (column3) OVER ( PARTITION  BY column1) AS column3_sum FROM table_name;

此查詢將返回一個(gè)結(jié)果集,其中包含一個(gè)附加列“column3_sum”,該列包含基于“column1”的值的每個(gè)分區(qū)的“column3”的總和。

  1. RANK():此函數(shù)根據(jù)指定列的值為分區(qū)內(nèi)的每一行分配排名。RANK() 函數(shù)的語法是:
SELECT column1, column2, ..., RANK () OVER ( PARTITION BY column1 ORDER BY column3 DESC ) AS rank_num FROM table_name;

此查詢將返回一個(gè)結(jié)果集,其中包含一個(gè)附加列“rank_num”,該列包含每個(gè)分區(qū)中每行的排名,基于“column3”的降序。

  1. AVG():此函數(shù)計(jì)算分區(qū)內(nèi)列的平均值。AVG() 函數(shù)的語法是:
SELECT column1, column2, ..., AVG (column3) OVER ( PARTITION  BY column1) AS column3_avg FROM table_name;

此查詢將返回一個(gè)結(jié)果集,其中包含一個(gè)附加列“column3_avg”,該列包含基于“column1”的值的每個(gè)分區(qū)的“column3”的平均值。

請(qǐng)注意,窗口函數(shù)的語法可能因所使用的特定數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS) 而異。

7.UNION

在 SQL 中,UNION運(yùn)算符用于將兩個(gè)或多個(gè) SELECT 語句的結(jié)果組合成一個(gè)結(jié)果集。SELECT語句必須具有相同的列數(shù),并且列必須具有兼容的數(shù)據(jù)類型。重復(fù)的行會(huì)自動(dòng)從結(jié)果集中刪除。

下面是在 SQL 中使用 UNION 運(yùn)算符的示例:

假設(shè)我們有兩個(gè)名為“customers”和“employees”的表,都有“name”和“city”列。我們想創(chuàng)建一個(gè)包含所有居住在紐約市的人(包括客戶和員工)的列表。我們可以使用 UNION 運(yùn)算符來組合兩個(gè) SELECT 語句的結(jié)果:

SELECT name, city FROM customers WHERE city = 'New York' UNION SELECT name, city FROM employees WHERE city = 'New York' ;

此查詢將返回居住在紐約市的所有人的列表,包括客戶和員工。第一個(gè) SELECT 語句檢索居住在紐約市的所有客戶,第二個(gè) SELECT 語句檢索居住在紐約市的所有員工。UNION 運(yùn)算符組合這兩個(gè) SELECT 語句的結(jié)果并刪除任何重復(fù)的行。

查詢的輸出結(jié)果如下所示:

name        | city| city-------------------John Smith  | New YorkJane Doe    | New YorkBob Johnson | New YorkSamantha Lee| New York

在這個(gè)例子中,可以看到有四個(gè)人住在紐約市,兩個(gè)來自“customers”表,兩個(gè)來自“employees”表,UNION 運(yùn)算符將兩個(gè) SELECT 語句的結(jié)果組合成一個(gè)單個(gè)結(jié)果集。

8. CREATE

CREATE 語句用于創(chuàng)建新的數(shù)據(jù)庫(kù)表、視圖或其他數(shù)據(jù)庫(kù)對(duì)象。你應(yīng)該掌握使用 CREATE 創(chuàng)建新表、視圖和其他數(shù)據(jù)庫(kù)對(duì)象的方法。下面是在 SQL 中使用CREATE 語句的示例:

假設(shè)我們要?jiǎng)?chuàng)建一個(gè)名為“customers”的新表,其中包含“id”、“name”、“email”和“phone”列。我們可以使用 CREATE 語句來做到這一點(diǎn):

CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100), phone VARCHAR(20));

此查詢將創(chuàng)建一個(gè)名為“customers”的新表,其中包含四列:“id”、“name”、“email”和“phone”。“id”列被定義為一個(gè)整數(shù),并被設(shè)置為表的主鍵?!皀ame”列定義為最大長(zhǎng)度為 50 個(gè)字符的字符串,“email”和“phone”列也分別定義為最大長(zhǎng)度為 100 和 20 個(gè)字符的字符串。

執(zhí)行查詢后,我們可以將新行插入“customers”表并從中檢索數(shù)據(jù):

INSERT INTO customers (id, name, email, phone)VALUES (1, 'John Doe', 'johndoe@example.com', '555-555-1234');SELECT * FROM customers;

此查詢將在“customers”表中插入一個(gè)新行,ID 為 1,姓名為“John Doe”,電子郵件為“ johndoe@example.com ”,電話號(hào)碼為“555–555–1234” . 第二個(gè)查詢將從“customers”表中檢索所有行,其中包括我們剛剛插入的新行:

id | name | email | phone--------------------------------------------1 | John Doe | johndoe@example.com | 555-555-1234

在這個(gè)例子中,我們使用CREATE語句在數(shù)據(jù)庫(kù)中創(chuàng)建了一個(gè)新表,并在表中插入了一條新行。

9. INSERT

插入 INSERT 語句用于將數(shù)據(jù)插入數(shù)據(jù)庫(kù)表。你應(yīng)該掌握使用 INSERT 向數(shù)據(jù)庫(kù)表中添加新數(shù)據(jù)。下面是在 SQL 中使用 INSERT 語句的示例:

假設(shè)我們有一個(gè)名為“students”的表,其中包含“id”、“name”、“major”和“gpa”列。我們想在表中插入一個(gè)新行,記錄 ID 為 1234、姓名為“John Doe”、主修“計(jì)算機(jī)科學(xué)”且 GPA 為 3.5 的學(xué)生。我們可以使用 INSERT 語句來做到這一點(diǎn):

INSERT INTO students (id, name, major, gpa)VALUES (1234, 'John Doe', 'Computer Science', 3.5);

此查詢將向“students”表中插入一個(gè)新行,其中包含“id”、“name”、“major”和“gpa”列的指定值。INSERT 語句指定我們要插入的表的名稱,后面是我們要插入值的列列表。然后我們使用 VALUES 關(guān)鍵字來指定我們想要插入到每一列中的值,按照列的列出順序。

執(zhí)行查詢后,“students”表將有一個(gè)包含以下值的新行:

id | name | major | gpa-----------------------------------------1234 | John Doe | Computer Science | 3.5

在這個(gè)例子中,我們使用INSERT語句在 '學(xué)生 '表中插入了一條新行。

10.UPDATE

更新 UPDATE語句用于修改數(shù)據(jù)庫(kù)表中的現(xiàn)有數(shù)據(jù)。你應(yīng)該掌握使用 UPDATE 來更新表中一個(gè)或多個(gè)列的值。以下是在 SQL 中使用UPDATE語句的示例:

假設(shè)我們有一個(gè)名為“students”的表,其中包含“id”、“name”、“major”和“gpa”列。我們想更新 ID 為 1234 的學(xué)生的專業(yè)和 GPA。我們可以使用UPDATE語句來執(zhí)行此操作:

UPDATE studentsSET major = 'Mathematics', gpa = 3.7WHERE id = 1234;

此查詢將更新 ID 為 1234 的“students”表中行的“major”和“gpa”列。UPDATE 語句指定我們要更新的表的名稱,然后是 SET 關(guān)鍵字和列表,以及要更新的列值對(duì)。然后,我們使用 WHERE 子句指定要更新的行。在本例中,我們想要更新 ID 為 1234 的行,因此我們指定“WHERE id = 1234”。

執(zhí)行查詢后,“students”表將在 ID 為 1234 的行中更新“major”和“gpa”列的值:

id | name | major | gpa--------------------------------------1234 | John Doe | Mathematics | 3.7

在這個(gè)例子中,我們使用UPDATE語句更新了 'students'表中某一行的 '專業(yè) '和 'gpa '列。

11.DELETE

刪除 DELETE 語句用于從數(shù)據(jù)庫(kù)表中刪除一行或多行。你應(yīng)該掌握使用DELETE從表中刪除數(shù)據(jù)的方法。下面是在 SQL 中使用DELETE語句的示例:

假設(shè)我們有一個(gè)名為“students”的表,其中包含“id”、“name”、“major”和“gpa”列。我們想從表中刪除 ID 為 1234 的學(xué)生。我們可以使用DELETE語句來做到這一點(diǎn):

從id = 1234的學(xué)生中刪除;

DELETE FROM studentsWHERE id = 1234;

此查詢將從“students”表中刪除 ID 為 1234 的行。DELETE語句指定我們要從中刪除的表的名稱, WHERE 子句用于指定要?jiǎng)h除的行。在本例中,我們要?jiǎng)h除 ID 為 1234 的行,因此我們指定“WHERE id = 1234”。

執(zhí)行查詢后,“students”表將不再有 ID 為 1234 的行:

id | name | major | gpa--------------------------------------5678 | Jane Doe | Computer Science | 3.5

在這個(gè)例子中,我們使用DELETE語句從'students'表中刪除了一條記錄。

12.DROP

刪除DROP 語句用于刪除數(shù)據(jù)庫(kù)表或其他數(shù)據(jù)庫(kù)對(duì)象。你應(yīng)該掌握使用 DROP 從數(shù)據(jù)庫(kù)中刪除不必要的表或其他對(duì)象。DROP 語句的語法因被刪除對(duì)象的類型而異,一些常見的示例如下所示:

  1. DROP TABLE:此語句用于刪除現(xiàn)有表及其所有數(shù)據(jù)和索引。DROP TABLE 語句的語法是:

DROP TABLE table_name;

2. DROP INDEX:該語句用于從表中刪除現(xiàn)有索引。DROP INDEX 語句的語法是:

DROP INDEX index_name ON table_name;

3. DROP VIEW:該語句用于刪除現(xiàn)有視圖。DROP VIEW 語句的語法是:

DROP VIEW view_name;

4. DROP PROCEDURE:該語句用于刪除一個(gè)現(xiàn)有的存儲(chǔ)過程。DROP PROCEDURE 語句的語法是:

DROP PROCEDURE procedure_name;

請(qǐng)注意,DROP 語句的確切語法可能因所使用的特定數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS) 而異。此外,在使用 DROP 語句時(shí)要小心,因?yàn)樗鼤?huì)永久刪除指定的對(duì)象以及所有關(guān)聯(lián)的數(shù)據(jù)和索引。請(qǐng)確保在使用 DROP 語句之前備份你的數(shù)據(jù)。

13.ALTER

改變 ALTER語句用于修改數(shù)據(jù)庫(kù)表或其他數(shù)據(jù)庫(kù)對(duì)象的結(jié)構(gòu)。你應(yīng)該掌握使用 ALTER 添加或刪除列、更改數(shù)據(jù)類型或修改表的其他方面。ALTER 語句的語法因被修改對(duì)象的類型而異,但一些常見的示例是:

  1. ALTER TABLE:該語句用于修改現(xiàn)有表的結(jié)構(gòu),例如添加或刪除列、更改數(shù)據(jù)類型或設(shè)置約束。ALTER TABLE 語句的語法是:
ALTER TABLE table_nameADD column_name data_type [constraint],MODIFY column_name data_type [constraint],DROP column_name,ADD CONSTRAINT constraint_name constraint_definition,DROP CONSTRAINT constraint_name;

2. ALTER INDEX:該語句用于修改現(xiàn)有索引的結(jié)構(gòu),例如添加或刪除列或更改索引類型。ALTER INDEX 語句的語法是:

ALTER INDEX index_nameADD column_name,DROP column_name;

3. ALTER VIEW:此語句用于修改現(xiàn)有視圖的定義,例如更改用于創(chuàng)建它的SELECT 語句。ALTER VIEW 語句的語法是:

ALTER VIEW view_nameAS select_statement;

請(qǐng)注意,ALTER 語句的確切語法和窗口函數(shù)的語法可能因所使用的特定數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS) 而異。

轉(zhuǎn)載自公眾號(hào) Python學(xué)研大本營(yíng)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产精品熟女在线视频| 在线视频三区日本精品| 婷婷激情五月天丁香社区 | 欧美91精品国产自产| 色哟哟哟在线观看视频| 自拍偷拍福利视频在线观看| 麻豆tv传媒在线观看| 欧美日韩乱码一区二区三区| 又色又爽又无遮挡的视频 | 大香蕉久久精品一区二区字幕| 欧美一级片日韩一级片| 欧美日韩国产综合特黄| 国产精品视频一区二区秋霞| 国产精品欧美日韩中文字幕| 日韩免费成人福利在线| 激情五月天深爱丁香婷婷| 免费观看在线午夜视频| 国产福利一区二区三区四区| 日韩一区二区三区四区乱码视频| 大香蕉精品视频一区二区| 91欧美一区二区三区成人| 麻豆蜜桃星空传媒在线观看| 国产精品福利精品福利| 人妻熟女欲求不满一区二区| 亚洲精品中文字幕无限乱码| 韩国日本欧美国产三级| 色无极东京热男人的天堂| 99久久人妻中文字幕| 91人妻人人精品人人爽| 狠色婷婷久久一区二区三区| 国产精品午夜一区二区三区| 性欧美唯美尤物另类视频 | 久草国产精品一区二区| 亚洲精品中文字幕欧美| 午夜精品成年人免费视频| 最新午夜福利视频偷拍| 日韩免费午夜福利视频| 国产亚洲精品岁国产微拍精品| 殴美女美女大码性淫生活在线播放| 亚洲午夜福利视频在线| 欧美韩日在线观看一区|