13個SQL語句:解決90%的數(shù)據(jù)科學問題!你都知道哪些?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
「前言」"歡迎進入SQL的奇妙世界,這是一種被數(shù)據(jù)分析師和數(shù)據(jù)科學家視為寶藏的編程語言。想象一下,有一天你醒來,發(fā)現(xiàn)自己被成堆的數(shù)據(jù)包圍。別擔心,SQL就像一根魔法棒,可以幫助你從這些混亂數(shù)據(jù)中抽絲剝繭。 使用SQL,你可以像魔術師一樣操作數(shù)據(jù),無論是過濾、排序、分組還是聚合數(shù)據(jù)。在這篇文章中,我們將介紹13個必備SQL語句,它們就像你的數(shù)據(jù)科學工具箱里的瑞士軍刀,簡單易學,卻能幫你解決90%的數(shù)據(jù)任務問題。 無論你是SQL新手,還是已經在數(shù)據(jù)海洋里暢游的老手,這篇文章都會像一盞燈塔,照亮你數(shù)據(jù)處理的道路。讓我們開始吧,一起揭開SQL的神秘面紗,發(fā)現(xiàn)其中的樂趣和實用技巧吧!" . . . 1. 檢索(SELECT)
SELECT column1, column2, column3FROM table_nameWHERE condition; 在這個例子中,column1、column2和column3是您想要從中檢索數(shù)據(jù)的列的名稱, 示例:從顧客表中選擇客戶年齡大于或等于18歲的所有記錄 SELECT *FROM customersWHERE age >= 18; . . . 2. 連接(JOIN)
2.1 內連接(INNER JOIN)內連接只返回兩張表中滿足連接條件且指定列的所有匹配行。例如下面的示例: SELECT e.employee_name, d.department_nameFROM employees eINNER JOIN departments dON e.department_id = d.department_id; 在這個示例中,員工表(employees)和部門表(departments)使用 2.2 左連接(LEFT JOIN)也叫左外連接(LEFT OUTER JOIN),它會返回左表的所有行和右表中的匹配行,如果右表中不滿足匹配條件,則結果中對應列的行以 SELECT customers.customer_name, orders.order_idFROM customersLEFT JOIN ordersON customers.customer_id = orders.customer_id; 在這個例子中,顧客表(customers)是左表,訂單表(orders)是右表。使用 2.3 右連接(RIGHT JOIN)也叫右外連接(RIGHT OUTER JOIN),與左連接剛好相反,右連接的結果集會返回右表的所有行和左表中的匹配行,如果左表中不滿足匹配條件,則結果中對應列的行以 SELECT customers.customer_name, orders.order_idFROM customersRIGHT JOIN ordersON customers.customer_id = orders.customer_id; 在這個例子中,訂單表(orders)是左表,顧客表(customers)是右表。使用 2.4 全連接(FULL JOIN)也叫全外連接(FULL OUTER JOIN),其結果集會返回兩張表的所有行,包括非匹配行(以 SELECT e.employee_name, d.department_nameFROM employees eFULL OUTER JOIN departments dON e.department_id = d.department_id; 以上示例將返回所有員工和部門的信息,包括還未分配部門的新員工(部門名稱以
. . . 3. 過濾(WHERE)
以下是在SQL中使用 假設我們有一個名為“employees”的表,其中包含 SELECT name, department, salaryFROM employeesWHERE department = 'Sales' AND salary > 50000; 這個查詢將返回所有在“Sales”(銷售)部門工作且薪水超過50,000美元的員工名單,查詢結果中會顯示他們的姓名、部門和薪水。 . . . 4. 分組(GROUP BY)
假設我們有一個名為“employees”的表,其中包含 SELECT department, AVG(salary) as avg_salaryFROM employeesGROUP BY department; 這個查詢將返回所有部門及其平均薪水的列表,該平均薪水是通過計算該部門所有員工薪水之和然后除以該部門員工數(shù)得出的。 如果有需要,我們還可以按部門平均薪水降序輸出結果: SELECT department, AVG(salary) as avg_salaryFROM employeesGROUP BY departmentORDER BY avg_salary DESC; . . . 5. 過濾(HAVING)這個過濾與 以下是SQL中使用 假設我們有一個名為“orders”的表,其中包含 SELECT customer_id, SUM(quantity) AS total_quantityFROM ordersGROUP BY customer_idHAVING SUM(quantity) >= 50; 這個查詢將返回所有客戶及其訂購的產品總數(shù)量的列表,但只包括那些產品總數(shù)不低于50的客戶。 . . . 6. 窗口函數(shù)SQL中的窗口函數(shù)用于對與當前行相關的一組行執(zhí)行計算。這些函數(shù)應用于一個窗口,即根據(jù)指定條件或分區(qū)從表中選取的行的子集。以下是SQL中一些窗口函數(shù)的示例:
ROW_NUMBER() OVER ( [PARTITION BY partition_expression, ... ] ORDER BY sort_expression [ASC | DESC], ...)
示例: SELECT EmployeeID, Department, Salary, ROW_NUMBER() OVER ( PARTITION BY Department ORDER BY Salary DESC ) AS RowNumFROM Employees; 這個查詢將返回每個員工的編號、部門、薪水以及在部門內的薪水排名(由高到低)。
SELECT column1, column2, ..., SUM(column3) OVER (PARTITION BY column1) AS column3_sumFROM table_name; 這個查詢將返回一個結果集,并帶有一個額外的列
SELECT column1, column2, ..., RANK() OVER (PARTITION BY column1 ORDER BY column3 DESC) AS rank_numFROM table_name; 這個查詢將返回一個結果集,并帶有一個額外的列
SELECT column1, column2, ..., AVG(column3) OVER (PARTITION BY column1) AS column3_avgFROM table_name; 這個查詢將返回一個結果集,并帶有一個額外的列
. . . 7. 組合(UNION)在SQL中, 以下是在SQL中使用 假設我們有兩個表“customers”(客戶)和“employees”(員工),它們都包含 SELECT name, cityFROM customersWHERE city = 'New York'UNIONSELECT name, cityFROM employeesWHERE city = 'New York'; 這個查詢將返回所有住在紐約市的人的名單,包括客戶和員工。第一個
. . . 8. 創(chuàng)建(CREATE)
假設我們想要創(chuàng)建一個名為“customers”的新表,其中包含 CREATE TABLE customers ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100), phone VARCHAR(20)); 這個查詢將創(chuàng)建一個名為“customers”的新表,包含四列:“id”(編號)、“name”(姓名)、“email”(電子郵件)和“phone”(電話)。其中,“id”列被定義為整數(shù)類型,并設置為表的主鍵?!皀ame”列被定義為最大長度為50個字符的字符串,而“email”和“phone”列也被定義為字符串,其最大長度分別為100和20個字符。 在執(zhí)行這個查詢之后,我們可以對“customers”表進行常規(guī)的增( INSERT INTO customers (id, name, email, phone)VALUES (1, 'Jack Zhang', 'jackzhang@example.com', '18888888888'); SELECT * FROM customers; 這個查詢將向“customers”表中插入一行新數(shù)據(jù),包括編號為1、姓名為“Jack Zhang”、電子郵件為“jackzhang@example.com”和電話號碼為“18888888888”。第二個查詢將從“customers”表中檢索所有行,其中包括我們剛剛插入的新行: id | name | email | phone--------------------------------------------1 | Jack Zhang | jackzhang@example.com | 18888888888 在這個例子中,我們使用 . . . 9. 插入(INSERT)
假設我們有一個名為“students”的表,其中包含 INSERT INTO students (id, name, major, gpa)VALUES (1234, 'Jack Zhang', 'Software Engineering', 3.5); 這個查詢將向“students”表中插入一行新數(shù)據(jù),并為 在執(zhí)行這個查詢之后,“students”表將包含一行新數(shù)據(jù),其值如下: id | name | major | gpa-----------------------------------------1234 | Jack Zhang | Software Engineering | 3.5 在這個示例中,我們使用 . . . 10. 更新(UPDATE)
假設我們有一個名為“students”的表,其中包含 UPDATE studentsSET major = 'Computer Science', gpa = 3.7WHERE id = 1234; 這個查詢將更新“students”表中編號為1234的行的 在執(zhí)行這個查詢之后,“students”表中編號為1234的行的 id | name | major | gpa--------------------------------------1234 | John Doe | Computer Science | 3.7 . . . 11. 刪除(DELETE)記錄
假設我們有一個名為“students”的表,其中包含 DELETE FROM studentsWHERE id = 1234; 這個查詢將從“students”表中移除編號為1234的行。 在執(zhí)行這個查詢之后,“students”表將不再包含編號為1234的行。 . . . 12. 刪除(DROP)數(shù)據(jù)庫對象
DROP TABLE table_name;
DROP INDEX index_name ON table_name;
DROP VIEW view_name;
DROP PROCEDURE procedure_name;
. . . 13. 修改(ALTER)
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;
ALTER INDEX index_nameADD column_name,DROP column_name;
ALTER VIEW view_nameAS select_statement; 請注意, 該文章在 2024/1/22 12:05:38 編輯過 |
關鍵字查詢
相關文章
正在查詢... |