面試題:基礎的sql命令

基礎的 SQL 命令主要用于對數據庫進行查詢、新增、修改、刪除等操作,可分為以下幾類:

一、數據查詢(SELECT)

用于從表中獲取數據,是最常用的命令。
基本語法

SELECT 列名1, 列名2... FROM 表名 WHERE 條件;
  • 示例:查詢students表中所有 18 歲以上的學生姓名和年齡
    SELECT name, age FROM students WHERE age > 18;
    
  • 常用擴展:DISTINCT(去重)、ORDER BY(排序)、LIMIT(限制結果數量)等。

我來擴寫這個 SQL 查詢,加入 DISTINCT、ORDER BY 和 LIMIT 等常用擴展功能:

-- 查詢18歲以上不重復的學生姓名和年齡,按年齡降序排列,年齡相同的按姓名升序排列,只返回前20條記錄
SELECT DISTINCT name, age 
FROM students 
WHERE age > 18 
ORDER BY age DESC, name ASC 
LIMIT 20;

這個擴展查詢包含以下功能:

  1. DISTINCT?- 確保返回的結果中沒有重復的行

  2. WHERE age > 18?- 篩選條件,只返回18歲以上的學生

  3. ORDER BY age DESC, name ASC?- 先按年齡降序排列,年齡相同的再按姓名升序排列

  4. LIMIT 20?- 只返回前20條記錄

如果需要更復雜的查詢,還可以考慮:

  • 添加 GROUP BY 進行分組

  • 使用 HAVING 對分組結果進行篩選

  • 使用 JOIN 連接其他表

  • 添加 OFFSET 實現分頁功能

我將擴展這個 SQL 查詢,加入?GROUP BYHAVINGJOIN?和?OFFSET?分頁功能,同時保持之前的?DISTINCTORDER BY?和?LIMIT?條件:

假設場景:

  • students?表存儲學生信息(id,?name,?age,?class_id

  • classes?表存儲班級信息(id,?class_name,?teacher_id

  • exam_scores?表存儲考試成績(student_id,?score

查詢目標:

"查詢18歲以上、平均分≥60分的學生姓名、年齡和班級名稱,按年齡降序排列,并實現分頁(每頁10條記錄)"

完整 SQL:

SELECT s.name,s.age,c.class_name,AVG(e.score) AS avg_score
FROM students s
LEFT JOIN classes c ON s.class_id = c.id
LEFT JOIN exam_scores e ON s.id = e.student_id
WHERE s.age > 18
GROUP BY s.id, s.name, s.age, c.class_name
HAVING AVG(e.score) >= 60
ORDER BY s.age DESC,s.name ASC
LIMIT 10 OFFSET 0;  -- 第一頁(0-10條記錄)

關鍵功能說明:

  1. JOIN(連接表):

    • 連接?students?和?classes?獲取班級名稱

    • 連接?students?和?exam_scores?計算平均分

  2. GROUP BY(分組):

    • 按學生ID、姓名、年齡和班級名稱分組

    • 確保聚合函數(如?AVG)正確計算每個學生的平均分

  3. HAVING(篩選分組):

    • 篩選出平均分≥60的學生(WHERE?不能用于聚合條件)

  4. DISTINCT(去重):

    • 由于?GROUP BY?已經確保唯一性,這里可以省略?DISTINCT

  5. ORDER BY(排序):

    • 優先按年齡降序(DESC),其次按姓名升序(ASC

  6. LIMIT + OFFSET(分頁):

    • LIMIT 10?每頁10條

    • OFFSET 0?從第1條開始(第2頁改為?OFFSET 10

進階擴展:

  • 如果需要計算總頁數,可結合?COUNT(*) OVER()?窗口函數:

    SELECT s.name,s.age,c.class_name,AVG(e.score) AS avg_score,COUNT(*) OVER() AS total_count
    FROM ...

二、數據插入(INSERT)

用于向表中新增記錄。
基本語法

INSERT INTO 表名 (列名1, 列名2...) VALUES (值1, 值2...);
  • 示例:向students表插入一條新記錄
    INSERT INTO students (name, age, gender) VALUES ('張三', 20, '男');
    

三、數據更新(UPDATE)

用于修改表中已有記錄。
基本語法

  • 示例:將students表中id=1的學生年齡改為 21
    UPDATE students SET age=21 WHERE id=1;
    

    注意:若省略WHERE,會修改表中所有記錄,需謹慎使用。

四、數據刪除(DELETE)

用于刪除表中的記錄。
基本語法

  • 示例:刪除students表中age < 18的記錄
    DELETE FROM students WHERE age < 18;
    

    注意:若省略WHERE,會刪除表中所有記錄(表結構保留)。

五、表結構操作

1. 創建表(CREATE TABLE)

sql

CREATE TABLE 表名 (列名1 數據類型 約束,列名2 數據類型 約束...
);
  • 示例:創建students
    CREATE TABLE students (id INT PRIMARY KEY, -- 主鍵(唯一標識)name VARCHAR(50) NOT NULL, -- 非空age INT
    );
    
2. 刪除表(DROP TABLE)
DROP TABLE 表名; -- 徹底刪除表(包括結構和數據)
3. 修改表結構(ALTER TABLE)
  • 新增列:ALTER TABLE 表名 ADD 列名 數據類型;
  • 刪除列:ALTER TABLE 表名 DROP COLUMN 列名;

六、其他常用命令

  • DESCRIBE 表名;(或DESC 表名;):查看表結構。
  • USE 數據庫名;:切換到指定數據庫。
  • SHOW DATABASES;:查看所有數據庫。
  • SHOW TABLES;:查看當前數據庫中的所有表。

這些命令覆蓋了 SQL 的核心操作,掌握后可完成大部分基礎數據庫交互。

左鏈接,右鏈接的區別

右鏈接:最大的條數取決于右邊

左鏈接:最大的條數取決于左邊

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92242.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode-3488距離最小相等元素查詢

依舊二分&#xff0c;鏈接如下3488. 距離最小相等元素查詢 看題目是個循環數組&#xff0c;記得當時做過一道什么題也是循環數組&#xff0c;就想著直接數組復制一下&#xff0c;然后跟上一道題一樣&#xff0c;用hashmap來存儲value的值以及value對應下標的vector。 和靈神的…

C++中的關聯容器

文章目錄使用關聯容器定義關聯容器關鍵字類型的要求pair類型用作返回類型關聯容器上的操作關聯容器的迭代器關聯容器和算法添加元素刪除元素map的下標操作訪問元素無序容器對關鍵字的要求關聯容器支持高效的關鍵字查找和訪問。兩個主要的關聯容器的類型是map和set。其中map中的…

【Git】git提交代碼報錯Git: husky > pre-commit

git提交代碼報錯原因 這個問題是因為當你在終端輸入git commit -m “XXX”,提交代碼的時候,pre-commit(客戶端)鉤子&#xff0c;它會在Git鍵入提交信息前運行做代碼風格檢查。如果代碼不符合相應規則&#xff0c;則報錯&#xff0c;而它的檢測規則就是根據.git/hooks/pre-commi…

Unity開發者快速認識Unreal 的C++(六)GameMode之PlayerController

繼承關系&#xff1a;Aactor&#xff0c;INavAgentInterface <--- AController<--- PlayerController &#xff0c;PlayerController也是一個Actor,繼承了Actor的一些通用的屬性和工具函數下圖是PlayerController初始化組件的一個子階段從圖中可以得到的信息是&#xf…

Vue 3 服務端渲染(SSR)與客戶端渲染(CSR)的區別及解決方案

1. SSR與CSR的區別1.1. SSR的原理服務端渲染&#xff08;SSR&#xff09;是在服務器端將 Vue 組件渲染為 HTML 字符串&#xff0c;并將其發送給客戶端。這種方式與客戶端渲染&#xff08;CSR&#xff09;不同&#xff0c;后者是在瀏覽器中執行 JavaScript 來生成 HTML。在 SSR …

Matlab快速回顧

一1.數值 顯示 格式format style 設置eg: pi format longE;or2.清除指令clc 清除命令行窗口clear 清除工作區cls3.搜索路徑設置path(path,E:\ads\)oraddpath4.M文件用戶把要實現的命令寫在一個以.m為擴展的文件中&#xff0c;然后由matlab系統進行解讀&#xff0c;最后運行結果…

開源低代碼+AI引擎:百特搭企業級開發平臺的演進

在數字化轉型進入深水區的今天&#xff0c;企業應用開發面臨前所未有的復雜挑戰&#xff1a;既要快速響應業務需求&#xff0c;又要確保系統靈活可控&#xff1b;既要降低技術門檻&#xff0c;又要保障核心安全。傳統開發模式與單一形態的低代碼工具已難以滿足多層次需求。融合…

學習 Android(十五)NDK進階及性能優化

學習 Android&#xff08;十五&#xff09;NDK進階及性能優化 對 NDK 相關知識有了初步的了解之后&#xff0c;我們可以更加深入的去學習 NDK 相關知識&#xff0c;接下來&#xff0c;我們將按照以下步驟進行深入學習&#xff1a; 深入理解JNI調用過程和性能消耗常見 JNI 坑&am…

QT5.12.8 QTabWidget 透明樣式QSS

/* 設置QTabWidget本身 :不加也行*/ QTabWidget#aaa_tabwdt {background: transparent;border: none; /* 移除邊框可能有助于透明效果 */ }/* 標簽頁內的容器部件 :必須加&#xff0c;標簽也才會透明 */ QTabWidget#aaa_tabwdt QWidget, QTabWidget#aaa_tabwdt QFrame {backgro…

【FAQ】Script導出SharePoint 目錄文件列表并統計大小

一、只導出文件列表的方法 1) 保存腳本&#xff08;建議名&#xff1a;D:\tmp\Export-SharePoint-FileList.ps1&#xff09; <# 導出 SharePoint 指定文件夾&#xff08;含子文件夾&#xff09;的文件列表到 CSV&#xff08;不統計大小&#xff09; 前提&#xff1a;已安…

《Thinking in Java》讀書筆記---控制執行流程

就像有感知的生物一樣&#xff0c;程序必須在執行過程中控制它的世界&#xff0c;并做出選擇。在Java中&#xff0c;你要使用執行控制語句來作出選擇。一、流程控制基礎概念1.1 流程控制的重要性流程控制結構決定了程序執行的順序和邏輯分支&#xff0c;是編程語言中最基礎也是…

極驗 G-star 人才特訓營:為業務安全領域培養下一代新興力量

本文導讀 極驗為什么要啟動 G-star 實習生培養計劃&#xff1f;50多位來自多所高校的同學&#xff0c;在極驗經歷了一場怎樣的“非典型”實習&#xff1f;技術大咖親授&#xff0c;先培訓再實戰&#xff0c;極驗打造的是怎樣的人才體系&#xff1f;同學有話說&#xff1a;培養計…

攻防世界-web-csaw-mfw

一.題目分析這邊提示使用了Git&#xff0c;試著訪問.git看是否存在.git泄露瀏覽了一下&#xff0c;很多都是亂碼&#xff0c;想著用githack將git庫克隆下看一下二.操作python2 GitHack.py http://url/.git訪問了一下flag.php&#xff0c;沒啥發現&#xff0c;在看一下index.php…

202506 電子學會青少年等級考試機器人四級實際操作真題

更多內容和歷年真題請查看網站&#xff1a;【試卷中心 -----> 電子學會 ----> 機器人技術 ----> 四級】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 2025年6月 青少年等級考試機器人實操真題四級 實際操作 主題&#xff1a;感應節能燈&#xff08;四級&am…

DLT645電表數據 保存到MySQL數據庫項目案例

目錄 1 案例說明 2 VFBOX網關工作原理 3 準備工作 4 配置VFBOX網關采集DLT645電表數據 5 網關寫數據到MYSQL數據庫 6 安裝MYSQL數據庫 7 其他說明 8 案例總結 1 案例說明 設置網關采集DLT645電表數據數據把采集的數據保存到MySQL數據庫。 2 VFBOX網關工作原理 VFBOX網關…

Redux與React - 異步狀態操作(React快速上手4)

異步操作樣板代碼1. 創建store的寫法保持不變&#xff0c;配置好同步修改狀態的方法 2. 單獨封裝一個函數&#xff0c;在函數內部return一個新函數&#xff0c;在新函數中 2.1 封裝異步請求獲取數據 2.2 調用同步actionCreater傳入異步數據生成一個action對象&#xff0c;并使用…

win10桌面右鍵沒有新建word

win10右鍵新建word不見解決方法1、點擊開始&#xff0c;找到運行命令行&#xff0c;輸入regedit&#xff0c;打開注冊表。2、在左側找到HKEY_CLASSES_ROOT目錄&#xff0c;并展開。3.找到.docx 雙擊&#xff08;默認&#xff09;一項&#xff0c;將其改為 Word.Document.12。關…

Docker國內可用鏡像(2025.08.06測試)

Docker渡渡鳥鏡像可用&#xff08;測試時間2025.08.06&#xff09;https://docker.aityp.com/使用渡渡鳥鏡像pull ollama latest 例子&#xff1a;docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:0.10.1毫秒鏡像和軒轅鏡像也可用&#xff0c;但…

決策樹的實際案例

決策樹作為一種直觀、易解釋的機器學習算法&#xff0c;在金融、醫療、電商、風控等多個領域都有廣泛的實際應用。以下將講解1個典型案例&#xff1a;貸款違約預測。對于貸款違約預測&#xff0c;即在貸款人員在貸款之前對其進行預測&#xff0c;通過他的眾多特征情況判別是否可…

bool 類型轉換運算符重載

以下是一個極簡且聚焦核心知識點的示例代碼&#xff0c;用最直觀的方式演示 bool 類型轉換運算符重載的觸發邏輯、使用場景和避坑點&#xff0c;幫你快速掌握&#xff1a;cpp運行#include <iostream> using namespace std;// 核心類&#xff1a;演示 bool 轉換運算符 cla…