MySQL基礎練習題

来源:https://www.cnblogs.com/beishanqingyun/archive/2023/02/09/17106196.html
-Advertisement-
Play Games

MySQL基礎查詢練習 前提準備 使用ddl語句創建資料庫 student表格: create table student( id int PRIMARY KEY COMMENT 'id主鍵', `name` varchar(20) COMMENT '名稱', gender TINYINT(2) C ...


MySQL基礎查詢練習

前提準備

使用ddl語句創建資料庫

student表格:

create table student(
	id int PRIMARY KEY COMMENT 'id主鍵',
	`name` varchar(20) COMMENT '名稱',
	gender TINYINT(2) COMMENT '性別 1男 2女 3保密',
	age TINYINT UNSIGNED COMMENT '年齡',
	birthday date COMMENT '出生日期',
	createTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
	updateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新時間' on update CURRENT_TIMESTAMP,
	isdel bit(1) DEFAULT 0 COMMENT '是否刪除 0未刪除 1已刪除 預設未刪除'
);

成績表格score:

create table score (
	id int PRIMARY KEY COMMENT 'id主鍵',
	sid int COMMENT '學生id',
	course VARCHAR(20) COMMENT '課程名稱',
	score DECIMAL(4,1) COMMENT '成績'
);

因為下麵插入數據沒預設寫id的值,所以id為自增的列。

添加自增:

alter table student
MODIFY column id int  auto_increment COMMENT 'id 主鍵';
alter table score
MODIFY column id int  auto_increment COMMENT 'id 主鍵';

初始化數據

數據下載地址:https://qyboke.lanzoue.com/iuhpB0n0rfij

score表:
在這裡插入圖片描述

student表格:

image-20230209145135111

答題

3.查詢學生張三的所有成績:

SELECT s.name,sc.course,sc.score from student s ,score sc where s.id = sc.sid and s.name = '李雲';

4.查詢平均成績大於60的學生信息:

SELECT DISTINCT s.* from student s ,score sc where s.id = sc.sid and sc.score > 60;

5.查詢有成績的學生信息:

SELECT DISTINCT s.* FROM student s right JOIN score sc on s.id = sc.sid;

6. 查詢不及格的學生信息:

SELECT DISTINCT s.* ,sc.course, sc.score
FROM student s right JOIN score sc 
on s.id = sc.sid
where sc.score < 60;

7. 查詢各科成績最高分、最低分和平均分:

SELECT DISTINCT score.course, max(score) over(PARTITION by score.course) '最高分',
min(score) over(PARTITION by score.course) '最低分',
avg(score) over(PARTITION by score.course) '平均分'
FROM score

8. 查詢各科成績第一名的記錄:

SELECT DISTINCT sc.course, max(score) over(PARTITION by sc.course) '最高分'
FROM score sc left JOIN student s
on sc.sid = s.id

9. 查詢男生、女生人數:

SELECT DISTINCT student.gender, count(student.gender) over(PARTITION by student.gender)
from student

10. 查詢 1990 年出生的學生名單:

SELECT * from student where YEAR(birthday) = 1990;

11. 查詢平均成績大於等於 70 的所有學生的姓名、出生日期和平均成績:

SELECT DISTINCT s.name,s.birthday,avg(sc.score) over(PARTITION by s.`name`) 
from score sc left JOIN student s
on sc.sid = s.id

12. 查詢mbatis 成績低於60的學生信息:

SELECT s.*,sc.course,sc.score
FROM score sc LEFT JOIN student s
on sc.sid = s.id
where sc.course = 'mybatis' and sc.score < 60;

13. 查詢學生成績前三名的記錄:

SELECT ROW_NUMBER() over() as '成績總分排名', sco.name,sco.allSco
FROM (
	SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allSco'
from score sc LEFT JOIN student s
on sc.sid = s.id ORDER BY allSco desc LIMIT 3
) as sco

14. 查詢學生信息及年齡:

SELECT stu.name,stu.birthday,(YEAR(CURRENT_DATE) - YEAR(stu.birthday)) '年齡'
from student stu

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

SELECT DISTINCT s.`name` ,sum(sc.score) over(PARTITION by s.`name`) 'allScore',avg(sc.score) over(PARTITION by s.name) '平均成績'
from score sc LEFT JOIN student s
on sc.sid = s.id ORDER BY allScore desc

16. 查詢未成年的學生信息:

SELECT stu.name, stu.birthday, (year(CURRENT_DATE) - year(birthday)) 'age'
from student stu
where (year(CURRENT_DATE) - year(birthday)) < 18

17. 查詢姓張的 學生信息:

SELECT *
FROM student
where name like '張%'

18. 查詢本月過生日的學生信息:

SELECT *
FROM student
where MONTH(CURRENT_DATE) = MONTH(birthday)

19. 查詢本周過生日的學生信息

SELECT *
FROM student
WHERE WEEKOFYEAR(CURRENT_DATE) = WEEKOFYEAR(birthday)

20. 按各科成績進行排序,並顯示排名

SELECT stu.name , sc.course ,sc.score, RANK() over(PARTITION by sc.course ORDER BY sc.score desc)
from score sc LEFT JOIN student stu
on sc.sid = stu.id

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 概述 開放封閉原則是面向對象的設計的中級目標,而依賴倒置原則是實現開放封閉原則的基礎。如果開放封閉原則是設計大樓的藍田,那麼依賴倒置原則就是大樓的鋼鐵架構。 高層模塊(調用者)不應該依賴於低層模塊(被調用者),兩個都應該依賴於抽象。依賴倒置原則的本質是通過介面或抽象使各個模塊的實現獨立,彼此互補影響 ...
  • 使用docker swarm搭建docker輕量集群服務 當前流行的k8s集群搭建無疑是很好的docker集群管理服務,但是對於像我這種僅自己學習的玩家有些過於重量,所以今天使用docker自帶的docker swarm搭建一個docker集權環境,本次實驗環境為一個管理節點和4個工作節點。 1、安 ...
  • 一、Linux文件和目錄簡單操作{#一-linux文件和目錄簡單操作} 1.1 查看文件 ls 查看當前目錄下的文件 如: -a 顯示所有文件及目錄 (ls內定將文件名或目錄名稱開頭為"."的視為隱藏檔,不會列出) -l 除文件名稱外,亦將文件型態、許可權、擁有者、文件大小等資訊詳細列出 -r 將文件 ...
  • ​ 一、前言 萬物皆有源頭,大家學習單片機的源頭操作就是通過GPIO口點燈,GPIO作為STM32最基礎的外設,也是大家最先接觸的外設。當然,看似基礎的GPIO,不僅僅是簡單的設置好IO口,讓燈亮起就一了百了,瞭解清楚GPIO的使用特性,根本原理、運行機制對我們在涉及到GPIO的相關設計操作上會應用 ...
  • 問題描述 啟動腳本第一行提示line 1: #!/bin/sh: No such file or directory 看著都難受,有強迫症必須修複它 log [weblogic@hz-dzswj-sc-x sh]$ ./start_bszm-web.sh ./start_bszm-web.sh: l ...
  • FCoE FCoE是一種融合網路技術,其目的是將FC幀封裝到乙太網幀中,實現乙太網鏈路與光纖鏈路通信的功能。 SAN一般指存儲區域網路,FC SAN 有光纖組網,IP SAN由乙太網電纜組網。 LAN一般指區域網,乙太網組網。 通常情況下業務前端面向普通用戶都是採用乙太網提供服務,在業務的後端由於龐 ...
  • 1.美國FCC認證新要求 繼2022年11月25日FCC發佈了FCC 22-84法規禁止授權被認為對美國國家安全構成威脅的通信和視頻監控設備後,2023年1月24日FCC又發佈了KDB 986446 D01 Covered Equipment v01 guidance,明確要求TCB不得向被製裁清單 ...
  • 作者:vivo 互聯網運維團隊- Hou Dengfeng 本文主要介紹使用shell實現一個簡易的Docker。 一、目的 在初接觸Docker的時候,我們必須要瞭解的幾個概念就是Cgroup、Namespace、RootFs,如果本身對虛擬化的發展沒有深入的瞭解,那麼很難對這幾個概念有深入的理解 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...