當前位置:首頁 » 編程語言 » 涉及sql的知識點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

涉及sql的知識點

發布時間: 2023-03-19 20:12:02

⑴ 什麼是sql SERVER實例,以及相關知識點

就是一個在資料庫中存在的,現實的資料庫例子! 資料庫實例就是後台進程和資料庫文件的集合。 一個SQL Server伺服器就是一個實例,2000支持在同一個NT/2000 Server操作系統裝多個伺服器,換言之,就是多個實例。 多個 SQL Server 實例 Microsoft® SQL Server™ 2000 支持在同一台計算機上同時運行多個 SQL Server 資料庫引擎實例。每個 SQL Server 資料庫引擎實例各有一套不為其它實例共享的系統及用戶資料庫。應用程序連接同一台計算機上的 SQL Server 資料庫引擎實例的方式與連接其它計算機上運行的 SQL Server 資料庫引擎的方式基本相同。 有兩種類型的 SQL Server 實例: 默認實例 SQL Server 2000 資料庫引擎默認實例的運行方式與 SQL Server 早期版本的資料庫引擎相同。默認實例僅由運行該實例的計算機的名稱唯一標識,它沒有單獨的實例名。如果應用程序在請求連接 SQL Server 時只指定了計算機名,則 SQL Server 客戶端組件將嘗試連接這台計算機上的資料庫引擎默認實例。這保留了與現有 SQL Server 應用程序的兼容性。 一台計算機上只能有一個默認實例,而默認實例可以是 SQL Server 的任何版本。 命名實例 除默認實例外,所有資料庫引擎實例都由安裝該實例的過程中指定的實例名標識。應用程序必須提供准備連接的計算機的名稱和命名實例的實例名。計算機名和實例名以格式 computer_name\instance_name 指定。 一台計算機上可以運行多個命名實例,但只有 SQL Server 2000 資料庫引擎才可作為命名實例運行。SQL Server 早期版本中的資料庫引擎不能作為命名實例運行。 實例主要應用於資料庫引擎及其支持組件,而不應用於客戶端工具。如果安裝了多個實例,則每個實例都將獲得各自唯一的一套: 系統和用戶資料庫。 SQL Server 和 SQL Server 代理服務。對於默認實例,服務名仍為 MSSQLServer 和 SQLServerAgent。對於命名實例,服務名改為 MSSQL$instancename 和 SQLAgent$instancename,使得這些服務與伺服器上的其它實例分開啟動和停止。可使用相關聯的 SQL Server 服務啟動和停止不同實例的資料庫引擎。SQL Server 代理服務管理相關聯的資料庫引擎實例的調度事件。 與資料庫引擎、SQL Server 和 SQL Server 代理服務相關聯的注冊表鍵。 使應用程序能連接特定實例的網路連接地址。 共享組件 以下組件可由運行於同一台計算機上的所有實例共享: 此計算機上只有一個 SQL Server 2000 程序組 (Microsoft SQL Server),以及由該程序組中的每個圖標表示的唯一一個實用工具的復本。唯一一個 SQL Server 聯機叢書的復本。 程序組中的實用工具版本來自計算機上最先安裝的 SQL Server 2000 版本。例如,如果將 SQL Server 2000 簡體中文版作為默認實例安裝,然後將 SQL Server 2000 美國英語版作為命名實例安裝,則只有一個 SQL Server 2000 程序組。該程序組中的所有實用工具圖標和 SQL Server 聯機叢書圖標都將啟動簡體中文版的工具。 所有 SQL Server 2000 實用工具都能處理多個實例。可以從一個 SQL Server 2000 服務管理器的復本啟動和停止每個實例。可使用一個 SQL Server 2000 SQL Server 企業管理器復本控制計算機上所有實例中的對象,使用一個 SQL Server 2000 伺服器網路管理器復本管理計算機上所有實例的網路通訊地址。 僅有一個 MSSearchService 復本管理針對計算機上所有 SQL Server 實例的全文檢索。 English Query 和 Microsoft SQL Server 2000 Analysis Services 伺服器都只有一個復本。 與客戶端軟體相關聯的注冊表鍵在實例間不重復。 只有一個 SQL Server 開發庫(包括 *.lib 文件)和示例應用程序的復本。 默認實例 可作為默認實例操作的配置包括: SQL Server 2000 的默認實例。 作為默認實例運行的 SQL Server 7.0 版安裝。 作為默認實例運行的 SQL Server 6.5 版安裝。 可使用 SQL Server 2000 vswitch 實用工具,與 SQL Server 6.5 版安裝進行版本切換的 SQL Server 2000 默認實例。 可使用 SQL Server 7.0 版 vswitch 實用工具,與 SQL Server 6.5 版安裝進行版本切換的 SQL Server 7.0 版安裝。 說明 在同一台計算機上安裝 SQL Server 2000 實例前,必須將 SQL Server 6.5 Service Pack 5 應用於所有 SQL Server 6.5 實例。 在 SQL Server 版本間切換 不能在 SQL Server 7.0 版安裝和 SQL Server 2000 默認實例之間進行版本切換。 除了默認實例外,還可以擁有任意數量的 SQL Server 2000 命名實例。在運行命名實例前,無須在計算機上運行默認實例。在沒有默認實例的計算機上可運行命名實例。SQL Server 6.5 版和 SQL Server 7.0 只能作為默認實例運行,不能作為命名實例運行。 在單台計算機或單個故障轉移群集中,Microsoft 不支持超過 16 個實例。 如果在一台計算機上運行作為默認實例的 SQL Server 6.5 版和一個或多個 SQL Server 2000 命名實例,則該計算機將有兩個 SQL Server 程序組,而非一個 SQL Server 程序組: SQL Server 2000 程序組執行 SQL Server 2000 工具。 SQL Server 6.5 版程序組運行 SQL Server 6.5 工具。 如果同時運行 SQL Server 7.0 版和 SQL Server 2000,則 SQL Server 7.0 程序組中的圖標將執行 SQL Server 2000 工具。 說明 在同一台計算機上安裝 SQL Server 2000 實例前,必須將 SQL Server 6.5 Service Pack 5 應用於所有 SQL Server 6.5 實例。

⑵ SQL語言的功能包括哪些

SQL語言功能主要分成四部分:

(1)數據定義。(DDL)用於定義SQL模式、基本表、視圖和索引的創建和撤消操作。

(2)數據操縱。(DML)數據操縱分成數據查詢和數據更新兩類。數據更新又分成插入、刪除、和修改三種操作。

(3)數據控制。包括對基本表和視圖的授權,完整性規則的描述,事務控制等內容。

(4)嵌入式SQL的使用規定。涉及到SQL語句嵌入在宿主語言程序中使用的規則。

拓展資料:

DDL是SQL語言的四大功能之一。
用於定義資料庫的三級結構,包括外模式、概念模式、內模式及其相互之間的映像,定義數據的完整性、安全控制等約束
DDL不需要commit.

⑶ 什麼是sql,其包含哪幾項功能的語句

SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持SQL。SQL包括了所有對資料庫的操作,主要是由4個部分組成:
1.數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。
2.數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。
3.數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。
4.嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。

⑷ SQL語句有哪幾種類型,各類型的主要作用是什麼

1、數據操縱語言(DML):用來操縱資料庫中數據的命令。包括:select、insert、update、delete。

2、數據定義語言(DDL):用來建立資料庫、資料庫對象和定義列的命令。包括:create、alter、drop。

3、數據控制語言(DCL):用來控制資料庫組件。

(4)涉及sql的知識點擴展閱讀:

SQL Server的特點如下:

1、具有真正的客戶機和伺服器體系結構。

2、圖形化用戶界面,使系統管理和資料庫管理更加直觀。

3、豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。

4、其完全集成,利用了NT的許多功能,如發送和接受消息等。

⑸ sql server中有哪些常用知識點

我的看法是:
1、資料庫的語法:sql的語法一定要非常靈活應用。
2、寫存儲過程,會加快開發速度。
3、寫觸發器
至於表的多少就看你自己的啦。

⑹ 資料庫基礎篇(三)—— SQL之數據操縱、定義

1)語法

2)兩種方式區別

方式一使用最多。它支持插入多行;支持嵌入子查詢。方式二不支持。

3)特點

①欄位類型和值類型一致或兼容,而且一一對應

②可以為空的欄位,可以不用插入值,或用null填充

③不可以為空的欄位,必須插入值

④欄位個數和值的個數必須一致

⑤欄位可以省略,但默認所有欄位,並且順序和表中的存儲順序一致

1)語法

2)栗子

1)語法

2)栗子

3)兩種方式區別

① truncate不能加where條件,而delete可以加where條件

② truncate的效率高一點

③truncate 刪除帶自增長的列的表後,如果再插入數據,數據從1開;delete 刪除帶自增長列的表後,如果再插入數據,數據從上一次的斷點處開始

④truncate刪除不能回滾,delete刪除可以回滾

1)庫的管理:

2)表的管理:

注意:對於表和庫的管理,語句理解就好。工作中最方便的是直接在Navicat中直接操作。那麼,這里重要的是復製表,它的需求通常是直接復製表的結構或數據,或者部分數據及部分結構。不需要重新再創建表結構,導數據。直接用SQL,效率會很高,且不容易出錯。

上面在創建表時,涉及到數據類型。它和Python程序語言類似,也有自己的數據類型。都是在存儲數據時,要對數據類型進行限制,保證插入數據時的准確性。分類分別是數值型、字元型、日期型。圖中標記部分為常用。

上面在創建表時涉及到約束,它是工作中非常重要的。我們從一個問題場景來看,下面是一個真實的面試題。我們第一反應是"報錯!",但是面試官想聽的是背後報錯原因及解決方案。下面,帶著問題來學習約束。

約束是一種限制,用於限製表中的數據結構,為了保證表中的數據的准確和可靠性、一致性。比如:創建用戶表時,為了保證每一個用戶唯一性,就需要進行約束。添加約束的時機分別是創建表、修改表時。SQL中有五大常用約束。如下:

①NOT NULL 非空約束,保證該欄位的值不為空。如:用戶ID

②DEFAULT 默認約束,欄位如果不插入數據也有默認值。如:性別

③UNIQUE 唯一約束,可以為空。如:商品類別

④PRIMARY KEY 主鍵,保證欄位唯一性、非空。如:ID,員工編號

⑤FOREIGN KEY 外鍵,用於限制兩個表之間的關系,用於保證該欄位的值必須來自主表的關聯列的值。如:用戶表裡有個外鍵是order_id, order_id是order的主鍵。下圖是約束在Navicat中設置的對應位置。

最後回答下上面的問題:原因是int類型的id欄位最大數據量支持到4294967295,如果超過則會報錯。解決方案:①檢查id欄位是否是主鍵②將id的類型轉換為 bigint。

好,今天學習到這里。本節內容相對上一節要簡單些。雖然簡單,但每個知識點都是工作中常用的。這篇文章主要是SQL的增刪改和表和庫的管理。明天繼續學習SQL的事務及視圖。一起加油!

⑺ SQL經典50題題解

本篇文章主要是對SQL經典50題進行詳細解析。

解析包含:1、解題思路,2、考核知識點,3、答案;

首先,表結構用腦圖輸出出來,如下所示:

先進行數據准備,建表以及插入數據。

1.查詢"01"課程比"02"課程成績高的學生的信息及課程分數

解題思路:

第一步:關鍵詞有「課程編號」、「課程成績」、「學生信息」,鎖定使用表:學生表、成績表。

第二步:給出學生信息及課程分數,通過主鍵sid關聯學生表和課程表。

第三步:比較同一個學生不同課程的成績,再關聯一次課程表,利用sid、cid進行關聯。

第四步:根據題目,用where比較分數篩選結果。

考核知識點: join,where

答案:

1.1 查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )

解題思路:

第一步:關鍵詞有「課程編號」、「學生編號」,鎖定使用表:成績表。

第二步:分別查詢出存在" 01 "課程的學生和存在" 02 "課程的學生。

第三步:對兩個子查詢進行關聯,用sid進行左聯接。

考核知識點: where, 子查詢,left join

答案:

1.2 查詢同時存在01和02課程的情況

解題思路: 同1.1,把left join改為join

考核知識點: where, 子查詢,join

答案:

1.3 查詢選擇了02課程但沒有01課程的情況

解題思路: 類似1.1,把left join改為right join

考核知識點: where, 子查詢,right join

答案:

小結: 上面的題主要考察join、left join、right join。

2.查詢平均成績大於等於 60 分的同學的學生編號和學生姓名和平均成績

解題思路:

第一步:關鍵詞有「平均成績」、「學生編號」、「學生姓名」,鎖定使用表:成績表、學生表。

第二步:給出學生信息及課程分數,通過主鍵sid關聯學生表和課程表。。

第三步:根據題目,用group by聚合計算出平均成績,然後篩選出大於等於60分的學生。

考核知識點: join、group by、avg()

答案:

3.查詢在 SC 表存在成績的學生信息

解題思路:

第一步:關鍵詞有「SC」、「學生信息」,鎖定使用表:成績表、學生表。

第二步:用EXISTS判斷在SC表存在成績的學生信息

考核知識點: EXISTS語句

答案:

4.查詢所有同學的學生編號、學生姓名、選課總數、所有課程的成績總和

解題思路:

第一步:關鍵詞有「學生編號」、「學生姓名」、「選課總數」、「課程成績」,鎖定使用表:成績表、學生表。

第二步:通過主鍵sid關聯學生表成績表,得到學生信息、學生成績的寬表

第三步:根據題目,用group by聚合計算選課總數和總成績

考核知識點: left join、group by、count()、sum()、ifnull()

答案:

5.查詢「李」姓老師的數量

解題思路:

第一步:關鍵詞有「老師的數量」,鎖定使用表:教師表。

第二步:先篩選出「李」姓老師,再匯總統計「李」姓老師的數量

考核知識點: like、where、%、count()

答案:

6.查詢學過「張三」老師授課的同學的信息

解題思路:

第一步:關鍵詞有「老師」、「學生信息」,鎖定使用表:教師表、學生表、成績表、課程表。

第二步:通過sid關聯學生表、成績表,再通過cid關聯課程表,最後通過tid關聯教師表。

第三步:用where篩選出「張三」老師授課的同學的信息。

考核知識點: 多重連接join

答案:

7.查詢沒有學全所有課程的同學的信息。

解題思路:

第一步:關鍵詞有「課程」、「學生信息」,鎖定使用表:學生表、成績表、課程表。

第二步:先統計學生的課程數量,再篩選出小於所有課程數量的學生。

考核知識點: left join、group by、count()

答案:

8.查詢至少有一門課與學號為" 01 "的同學所學相同的同學的信息。

解題思路:

第一步:關鍵詞有「課程」、「學生信息」,鎖定使用表:學生表、成績表。

第二步:先查詢學號「01」的同學學習的課程。

第三步:通過sid關聯學生表和成績表,獲取所有學生信息、課程信息。

第四步:用EXISTS篩選出至少1門課相同的同學信息。

考核知識點: left join、子查詢、EXISTS

答案:

9.查詢和" 01 "號的同學學習的課程完全相同的其他同學的信息

解題思路:

第一步:關鍵詞有「課程」、「學生信息」,鎖定使用表:學生表、成績表。

第二步:用「01」號的同學學習的課程左關聯學生課程表,篩選出關鏈課程數一致的其他同學的sid

第三步:通過sid關聯學生表和成績表,獲取完整的學生信息。

考核知識點: left join、子查詢、group by

答案:

10.查詢沒學過"張三"老師講授的任一門課程的學生姓名

解題思路:

第一步:關鍵詞有「老師」、「學生姓名」,鎖定使用表:學生表、成績表、課程表、教師表。

第二步:反向求解。先查詢至少學過「張三」老師講授的課程的學生sid

第三步:用NOT EXISTS篩選出不在第二步查詢結果的學生信息,。

考核知識點: 多重連接join、NOT EXISTS、子查詢

答案:

11.查詢兩門及其以上不及格課程的同學的學號,姓名及其平均成績

解題思路:

第一步:關鍵詞有「姓名」、「平均成績」,鎖定使用表:學生表、成績表。

第二步:通過sid關聯學生表和成績表,得到學生成績信息寬表

第三步:用group by聚合統計,having對聚合的結果進行篩選。

考核知識點: join、group by、having、case when語句、avg()

答案:

12.檢索" 01 "課程分數小於 60,按分數降序排列的學生信息

解題思路:

第一步:關鍵詞有「課程分數」、「學生信息」,鎖定使用表:學生表、成績表。

第二步:通過sid關聯學生表和成績表,得到學生成績信息寬表

第三步:用where篩選" 01 "課程分數小於 60的記錄,並按照分數降序排列。

考核知識點: join、where、order by

答案:

13.按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

解題思路:

第一步:關鍵詞有「平均成績」,鎖定使用表:成績表。

第二步:用group by將學生課程的成績由行轉換為列並計算平均成績。

第三步:按照平均成績降序顯示學生的所有課程的成績以及平均成績。

考核知識點: join

答案:

14.查詢各科成績最高分、最低分和平均分,以如下形式顯示:

以如下形式顯示:課程 ID,課程 name,最高分,最低分,平均分,及格率,中等率,

優良率,優秀率

及格為>=60,中等為:70-80,優良為:80-90,優秀為:>=90

要求輸出課程號和選修人數,查詢結果按人數降序排列,若人數相同,按課程號升序排列

解題思路:

第一步:關鍵詞有「課程name」、「最高分」,鎖定使用表:課程表、成績表。

第二步:用group by聚合計算課程最高分、最低分、平均分。

第三步:用case語句判斷及格、中等、優良、優秀,並結合group by計算。

考核知識點: join、group by、max()、min()、avg()、sum()、case when語句

答案:

15.按各科成績進行排序,並顯示排名, Score 重復時保留名次空缺

解題思路:

第一步:關鍵詞有「各科成績」,鎖定使用表:成績表。

第二步:用rank()排名。

考核知識點: rank() over(partition by)

答案:

15.1 按各科成績進行行排序,並顯示排名, Score 重復時合並名次

解題思路:

第一步:關鍵詞有「各科成績」,鎖定使用表:成績表。

第二步:用dense_rank()排名。

考核知識點: dense_rank() over(partition by)

答案:

16.查詢學生的總成績,並進行排名,總分重復時保留名次空缺

解題思路:

第一步:關鍵詞有「總成績」,鎖定使用表:成績表。

第二步:用group by統計學生的總成績。

第三步:用left join自關聯進行排名。

考核知識點: group by、 left join

答案:

16.1 查詢學生的總成績,並進行排名,總分重復時不保留名次空缺

解題思路:

第一步:關鍵詞有「總成績」,鎖定使用表:成績表。

第二步:用group by統計學生的總成績。

第三步:用變數進行排名。

考核知識點: group by、變數

答案:

17. 統計各科成績各分數段人數:課程編號,課程名稱,[100-85],[85-70],[70-60],[60-0] 及所佔百分比

解題思路:

第一步:關鍵詞有「各科成績」、「課程名稱」,鎖定使用表:成績表、課程表。

第二步:通過cid關聯課程表和成績表,得到課程、成績信息寬表。

第三步:用group by聚合統計各分段的人數及百分比。

考核知識點: join、group by、case when條件語句

答案:

18.查詢各科成績前三名的記錄

解題思路:

第一步:關鍵詞有「各科成績」,鎖定使用表:成績表。

第二步:篩選出各科比當前成績高的人數小於3的學生記為各科的前三名。

考核知識點: 子查詢

答案:

19.查詢每門課程被選修的學生數

解題思路:

第一步:關鍵詞有「每門課程」、「學生數」,鎖定使用表:課程表、成績表。

第二步:用left join關聯課程表和成績表,再用group by分組匯總各科的學生數。

考核知識點: left join、group by

答案:

20.查詢出只選修兩門課程的學生學號和姓名

解題思路:

第一步:關鍵詞有「選修課程」、「學生姓名」,鎖定使用表:學生表、成績表。

第二步:用join關聯學生表和成績表,再用group by分組匯總每個學生的選修課程數,最後用having對分組匯總結果篩選出選修兩門課程的學生。

考核知識點: join、group by、having

答案:

21. 查詢男生、女生人數

解題思路:

第一步:關鍵詞有「男生、女生」,鎖定使用表:學生表。

第二步:通過ssex學生表用group by分組匯總男生、女生人數。

考核知識點: group by

答案:

22. 查詢名字中含有「風」字的學生信息

解題思路:

第一步:關鍵詞有「學生信息」,鎖定使用表:學生表。

第二步:用like匹配姓名中含有風」字的學生。

考核知識點: like、%

答案:

23查詢同名同性學生名單,並統計同名人數

解題思路:

第一步:關鍵詞有「學生名單」,鎖定使用表:學生表。

第二步:使用group by,匯總同名同性人數,再用having篩選出大於1的記錄

考核知識點: group by、having

答案:

24.查詢 1990 年出生的學生名單

解題思路:

第一步:關鍵詞有「學生名單」,鎖定使用表:學生表。

第二步:用where篩選出1990年出生的學生名單

考核知識點: where、year

答案:

25.查詢每門課程的平均成績,結果按平均成績降序排列,平均成績相同時,按課程編

號升序排列。

解題思路:

第一步:關鍵詞有「平均成績」,鎖定使用表:成績表。

第二步:用group by分組計算各科平均成績,再用order by完成多列排序

考核知識點: group by、order by

答案:

26.查詢平均成績大於等於 85 的所有學生的學號、姓名和平均成績

解題思路:

第一步:關鍵詞有「平均成績」、「學生姓名」,鎖定使用表:成績表、學生表。

第二步:用join關聯學生表和成績表

第三步:用group by分組匯總計算每個學生的平均成績,再用having篩選平均成績>=85的記錄

考核知識點: join、group by、having

答案:

27.查詢課程名稱為「數學」,且分數低於 60 的學生姓名和分數

解題思路:

第一步:關鍵詞有「課程名稱」、「分數」、「學生姓名」,鎖定使用表:課程表、成績表、學生表。

第二步:用join關聯學生表、成績表、課程表,再用where篩選

考核知識點: 多重join、where

答案:

28. 查詢所有學生的課程及分數情況(存在學生沒成績,沒選課的情況)

解題思路:

第一步:關鍵詞有「所有學生」、「分數」,鎖定使用表:學生表、成績表

第二步:用left join關聯學生表、成績表

考核知識點: left join

答案:

29.查詢任何一門課程成績在 70 分以上的姓名、課程名稱和分數

解題思路:

第一步:關鍵詞有「課程成績」、「姓名」、「課程名稱」,鎖定使用表:學生表、成績表、課程表

第二步:用join關聯學生表、成績表、課程表,再篩選出課程成績在70分以上的。

考核知識點: 多重join

答案:

30.查詢不及格的課程

解題思路:

第一步:關鍵詞有「不及格的課程」,鎖定使用表:成績表、課程表

第二步:關聯課程表和成績表,再條件篩選出不及格的課程信息。

考核知識點: join、where、去重

答案:

31.查詢課程編號為 01 且課程成績在 80 分以上的學生的學號和姓名

解題思路:

第一步:關鍵詞有「課程編號」、「課程成績」、「姓名」,鎖定使用表:成績表、學生表

第二步:關聯成績表和學生表,再條件篩選出結果。

考核知識點: join、where

答案:

32.求每門課程的學生人數

解題思路:

第一步:關鍵詞有「課程」、「學生人數」,鎖定使用表:成績表

第二步:用group by分組匯總各科的學生人數。

考核知識點: group by

答案:

33.成績不重復,查詢選修「張三」老師所授課程的學生中,成績最高的學生信息及其成績

解題思路:

第一步:關鍵詞有「成績」、「「張三」老師」、「學生信息」,鎖定使用表:成績表、課程表、學生表、教師表

第二步:關聯所有表,篩選出選修「張三」老師所授課程的學生。

第三步:因為成績不重復,對學生成績由高到低排序,篩選出第一行記錄。

考核知識點: 多重join、order by、limit

答案:

34.成績有重復的情況下,查詢選修「張三」老師所授課程的學生中,成績最高的學生

信息及其成績

解題思路:

第一步:關鍵詞有「成績」、「「張三」老師」、「學生信息」,鎖定使用表:成績表、課程表、學生表、教師表

第二步:關聯所有表,篩選出選修「張三」老師所授課程的學生。

第三步:因為成績有重復,先求出最高成績,再匹配最高成績對應的學生信息。

考核知識點: 多重join、max()

答案:

35.查詢不同課程成績相同的學生的學生編號、課程編號、學生成績

解題思路:

第一步:關鍵詞有「成績」,鎖定使用表:成績表

第二步:自聯接,篩選出不同課程成績相同的記錄

考核知識點: 自聯接join

答案:

36. 查詢每門成績最好的前兩名

解題思路:

第一步:關鍵詞有「成績」,鎖定使用表:成績表

第二步:自聯接,篩選出各科低於自身成績的人數為2的。

考核知識點: left join

答案:

37. 統計每門課程的學生選修人數(超過 5 人的課程才統計)。

解題思路:

第一步:關鍵詞有「選修人數」,鎖定使用表:成績表

第二步:先用group by分組匯總各科的選修人數,再條件篩選出超過5人的課程。

考核知識點: group by、having

答案:

38.檢索至少選修兩門課程的學生學號

解題思路:

第一步:關鍵詞有「兩門課程」,鎖定使用表:成績表

第二步:先用group by分組匯總每個學生的選修課程數,再用having篩選出至少2門課程的學生學號

考核知識點: group by、having

答案:

39.查詢選修了全部課程的學生信息

解題思路:

第一步:關鍵詞有「全部課程」、「學生信息」,鎖定使用表:成績表、課程表、學生表

第二步:關聯學生表和成績表,再用group by分組統計每個學生的選修課程數

第三步:最後用having篩選出等於全部課程數的學生信息。

考核知識點: join、 group by、having、子查詢

答案:

40.查詢各學生的年齡,只按年份來算

解題思路:

第一步:關鍵詞有「學生的年齡」,鎖定使用表:學生表

第二步:用year和now來統計

考核知識點: year、now

答案:

41. 按照出生日期來算,當前月日 < 出生年月的月日則,年齡減一

解題思路:

第一步:關鍵詞有「出生日期」,鎖定使用表:學生表

第二步:用timestampdiff()統計年齡

考核知識點: timestampdiff()

答案:

42.查詢本周過生日的學生

解題思路:

第一步:關鍵詞有「過生日」,鎖定使用表:學生表

第二步:用week函數

考核知識點: week()

答案:

43. 查詢下周過生日的學生

解題思路:

第一步:關鍵詞有「過生日」,鎖定使用表:學生表

第二步:用week函數

考核知識點: week()

答案:

44.查詢本月過生日的學生

解題思路:

第一步:關鍵詞有「過生日」,鎖定使用表:學生表

第二步:用month函數

考核知識點: month()

答案:

45.查詢下月過生日的學生

解題思路:

第一步:關鍵詞有「過生日」,鎖定使用表:學生表

第二步:用month函數

考核知識點: month()

答案: