日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

數據科學中90%的任務,可以借助這13條SQL語句解決。

結構化查詢語言 (SQL) 是一種用于管理和操作關系數據庫的編程語言。數據分析師和數據科學家廣泛使用SQL從大型數據集中發現規律。

SQL 是一種強大的工具,可用于執行各種數據操作任務,包括過濾、排序、分組和聚合數據。在本文中,我將介紹 13 個基本 SQL 語句,借助它們可解決數據科學中90%的任務。這些語句易于理解和實現,可以為使用 SQL 打下堅實的基礎。

無論你是剛接觸SQL 還是有一定的經驗,本文都可以為你提供處理數據的幫助和實用技巧。

 

1.選取數據

SELECT語句用于從數據庫中的一個或多個表中檢索數據。你應該掌握使用 SELECT 來搭配 WHERE、ORDER BY 和 GROUP BY 等不同函數對數據進行過濾、排序和分組。下面是一個 SELECT 語句的例子:

SELECT column1, column2, column3
FROM table_name
WHERE condition;

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

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

SELECT *
FROM customers
WHERE age >= 18;

2.連接

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

以下是 JOIN 語句的幾個示例:

內連接

INNER JOIN 僅返回兩個表中的列之間存在匹配項的行。這是一個例子:

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

在此示例中,orders表和customers表使用列customer_id進行連接。結果表將僅包含order_id和兩個表中的customer_name列之間存在匹配項的列customer_id。

左連接

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

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

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

右連接

RIGHT JOIN 返回右表中的所有行和左表中的匹配行。如果左表中沒有匹配項,則結果將包含 NULL 值。這是一個例子:

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

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

外連接

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

下面是一個 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列用于連接表。結果表將包括表中的所有行customers和表中的匹配行orders。如果表中沒有匹配項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列用于連接表。結果表將包括表中的所有行orders和表中的匹配行customers。如果表中沒有匹配項customers,該customer_name列將包含 NULL 值。

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

3. Where

WHERE 語句用于根據指定的條件過濾數據。你應該掌握使用 WHERE 來檢索滿足特定條件的數據。

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

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

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

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

4. 分組

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

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

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

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

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

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

5.Having

HAVING語句用于在GROUP BY語句分組后過濾數據。您應該掌握使用HAVING來根據特定條件過濾分組數據。

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

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

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

此查詢將返回所有客戶及其訂購產品總數的列表,但僅包括訂購總量至少為 50 件的客戶。GROUP BY子句用于按客戶對訂單進行分組,SUM函數用于計算每個客戶訂購的產品總數量,HAVING子句用于過濾結果只包含訂購了總數量的客戶至少50個單位。

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

customer_id | total_quantity
---------------------------
123        | 60
456        | 70

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

6. 窗口函數

SQL 中的窗口函數用于對與當前行相關的一組行執行計算。這些函數應用于一個窗口,該窗口是基于指定條件或分區的表中行的子集。以下是 SQL 中窗口函數的一些示例:

  1. ROW_NUMBER():此函數為分區內的每一行分配一個唯一的序列號。ROW_NUMBER() 函數的語法是:
SELECT column1, column2, ..., ROW_NUMBER () OVER ( ORDER  BY column1) AS row_num 
FROM table_name;

此查詢將返回一個結果集,其中包含一個附加列“row_num”,該列包含根據“column1”的順序分配給每一行的序號。

  1. SUM():此函數計算分區內列的總和。SUM() 函數的語法是:
SELECT column1, column2, ..., SUM (column3) OVER ( PARTITION  BY column1) AS column3_sum 
FROM table_name;

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

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

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

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

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

請注意,窗口函數的語法可能因所使用的特定數據庫管理系統 (DBMS) 而異。

7.UNION

在 SQL 中,UNION運算符用于將兩個或多個 SELECT 語句的結果組合成一個結果集。SELECT語句必須具有相同的列數,并且列必須具有兼容的數據類型。重復的行會自動從結果集中刪除。

下面是在 SQL 中使用 UNION 運算符的示例:

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

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

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

查詢的輸出結果如下所示:

name        | city| city
-------------------
John Smith  | New York
Jane Doe    | New York
Bob Johnson | New York
Samantha Lee| New York

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

8. CREATE

CREATE 語句用于創建新的數據庫表、視圖或其他數據庫對象。你應該掌握使用 CREATE 創建新表、視圖和其他數據庫對象的方法。下面是在 SQL 中使用CREATE 語句的示例:

假設我們要創建一個名為“customers”的新表,其中包含“id”、“name”、“emAIl”和“phone”列。我們可以使用 CREATE 語句來做到這一點:

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

此查詢將創建一個名為“customers”的新表,其中包含四列:“id”、“name”、“email”和“phone”。“id”列被定義為一個整數,并被設置為表的主鍵。“name”列定義為最大長度為 50 個字符的字符串,“email”和“phone”列也分別定義為最大長度為 100 和 20 個字符的字符串。

執行查詢后,我們可以將新行插入“customers”表并從中檢索數據:

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

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

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

在這個例子中,我們使用CREATE語句在數據庫中創建了一個新表,并在表中插入了一條新行。

9. INSERT

插入 INSERT 語句用于將數據插入數據庫表。你應該掌握使用 INSERT 向數據庫表中添加新數據。下面是在 SQL 中使用 INSERT 語句的示例:

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

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

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

執行查詢后,“students”表將有一個包含以下值的新行:

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

在這個例子中,我們使用INSERT語句在 "學生 "表中插入了一條新行。

10.UPDATE

更新 UPDATE語句用于修改數據庫表中的現有數據。你應該掌握使用 UPDATE 來更新表中一個或多個列的值。以下是在 SQL 中使用UPDATE語句的示例:

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

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

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

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

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

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

11.DELETE

刪除 DELETE 語句用于從數據庫表中刪除一行或多行。你應該掌握使用DELETE從表中刪除數據的方法。下面是在 SQL 中使用DELETE語句的示例:

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

從id = 1234的學生中刪除;

DELETE FROM students
WHERE id = 1234;

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

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

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

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

12.DROP

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

  1. DROP TABLE:此語句用于刪除現有表及其所有數據和索引。DROP TABLE 語句的語法是:
  2.  
DROP TABLE table_name;

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

DROP INDEX index_name ON table_name;

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

DROP VIEW view_name;

4. DROP PROCEDURE:該語句用于刪除一個現有的存儲過程。DROP PROCEDURE 語句的語法是:

DROP PROCEDURE procedure_name;

請注意,DROP 語句的確切語法可能因所使用的特定數據庫管理系統 (DBMS) 而異。此外,在使用 DROP 語句時要小心,因為它會永久刪除指定的對象以及所有關聯的數據和索引。請確保在使用 DROP 語句之前備份你的數據。

13.ALTER

改變 ALTER語句用于修改數據庫表或其他數據庫對象的結構。你應該掌握使用 ALTER 添加或刪除列、更改數據類型或修改表的其他方面。ALTER 語句的語法因被修改對象的類型而異,但一些常見的示例是:

  1. ALTER TABLE:該語句用于修改現有表的結構,例如添加或刪除列、更改數據類型或設置約束。ALTER TABLE 語句的語法是:
ALTER TABLE table_name
ADD 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:該語句用于修改現有索引的結構,例如添加或刪除列或更改索引類型。ALTER INDEX 語句的語法是:

ALTER INDEX index_name
ADD column_name,
DROP column_name;

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

ALTER VIEW view_name
AS select_statement;

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

轉載自公眾號 Python/ target=_blank class=infotextkey>Python學研大本營

分享到:
標簽:SQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定