MySQL查詢語句實操練習

来源:https://www.cnblogs.com/ddaifenxiang/archive/2018/08/11/9457538.html
-Advertisement-
Play Games

題目:新建一個資料庫ClassManager,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數據如表1-2的表(一)~表(四)所示。用SQL語句創建四個表並完成相關題目。 一.表 ...


題目:新建一個資料庫ClassManager,包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數據如表1-2的表(一)~表(四)所示。用SQL語句創建四個表並完成相關題目。

.1-1資料庫的表結構

表(一)Student (學生表) 

屬性名

數據類型

可否為空

含 義

Sno

varchar (20)

學號

Sname

varchar (20)

學生姓名

Ssex

varchar (20)

學生性別

Sbirthday

datetime

學生出生年月

Class

varchar (20)

學生所在班級

 

表(二)Course(課程表)

屬性名

數據類型

可否為空

含 義

Cno

varchar (20)

課程號

Cname

varchar (20)

課程名稱

Tno

varchar (20)

教工編號

表(三)Score(成績表)

屬性名

數據類型

可否為空

含 義

Sno

varchar (20)

學號

Cno

varchar (20)

課程號

Degree

Decimal(4,1)

成績

表(四)Teacher(教師表)

屬性名

數據類型

可否為空

含 義

Tno

varchar (20)

教工編號

Tname

varchar (20)

教工姓名

Tsex

varchar (20)

教工性別

Tbirthday

datetime

教工出生年月

Prof

varchar (20)

職稱

Depart

varchar (20)

教工所在部門

.1-2資料庫中的數據

表(一)Student

Sno

Sname

Ssex

Sbirthday

class

108

曾華

1977-09-01

95033

105

匡明

1975-10-02

95031

107

王麗

1976-01-23

95033

101

李軍

1976-02-20

95033

109

王芳

1975-02-10

95031

103

陸君

1974-06-03

95031

表(二)Course

Cno

Cname

Tno

3-105

電腦導論

825

3-245

操作系統

804

6-166

數字電路

856

9-888

高等數學

831

表(三)Score

Sno

Cno

Degree

103

3-245

86

105

3-245

75

109

3-245

68

103

3-105

92

105

3-105

88

109

3-105

76

101

3-105

64

107

3-105

91

108

3-105

78

101

6-166

85

107

6-166

79

108

6-166

81

表(四)Teacher

Tno

Tname

Tsex

Tbirthday

Prof

Depart

804

李誠

1958-12-02

副教授

電腦系

856

張旭

1969-03-12

講師

電子工程系

825

王萍

1972-05-05

助教

電腦系

831

劉冰

1977-08-14

助教

電子工程系

.完成以下操作

0.根據上述題目和表格,創建相應資料庫,創建相應表結構,並插入給定數據

create database ClassManager;
use ClassManager1;

create table student (
sno varchar(20) not null comment '學號',
sname varchar(20) not null comment '學生姓名',
ssex varchar(20) not null comment '學生性別',
sbirthday datetime comment '學生出生年月',
class varchar(20) comment '學生所在班級'
);

create table course (
cno varchar(20) not null comment '課程號',
cname varchar(20) not null comment '課程名稱',
tno varchar(20) not null comment '教工編號'
);

create table score (
sno varchar(20) not null comment '學號',
cno varchar(20) not null comment '課程號',
degree decimal(4,1) comment '成績'
);

create table teacher (
tno varchar(20) not null comment '教工編號',
tname varchar(20) not null comment '教工姓名',
tsex varchar(20) not null comment '教工性別',
tbirthday datetime comment '教工出生年月',
prof varchar(20) comment '職稱',
depart varchar(20) not null comment '教工所在部門'
);

insert into student (sno, sname, ssex, sbirthday, class) values ('108',    '曾華','','1977-09-01','95033');
insert into student (sno, sname, ssex, sbirthday, class) values ('105',    '匡明','','1975-10-02','95031');
insert into student (sno, sname, ssex, sbirthday, class) values ('107',    '王麗','','1976-01-23','95033');
insert into student (sno, sname, ssex, sbirthday, class) values ('101',    '李軍','','1976-02-20','95033');
insert into student (sno, sname, ssex, sbirthday, class) values ('109',    '王芳','','1975-02-10','95031');
insert into student (sno, sname, ssex, sbirthday, class) values ('103',    '陸君','','1974-06-03','95031');

insert into course (cno, cname, tno) values ('3-105', '電腦導論',  '825');
insert into course (cno, cname, tno) values ('3-245', '操作系統',    '804');
insert into course (cno, cname, tno) values ('6-166', '數字電路',    '856');
insert into course (cno, cname, tno) values ('9-888', '高等數學',    '831');

insert into score (sno, cno, degree) values ('103', '3-245', '86');
insert into score (sno, cno, degree) values ('105', '3-245', '75');
insert into score (sno, cno, degree) values ('109', '3-245', '68');
insert into score (sno, cno, degree) values ('103', '3-105', '92');
insert into score (sno, cno, degree) values ('105', '3-105', '88');
insert into score (sno, cno, degree) values ('109', '3-105', '76');
insert into score (sno, cno, degree) values ('101', '3-105', '64');
insert into score (sno, cno, degree) values ('107', '3-105', '91');
insert into score (sno, cno, degree) values ('108', '3-105', '78');
insert into score (sno, cno, degree) values ('101', '6-166', '85');
insert into score (sno, cno, degree) values ('107', '6-166', '79');
insert into score (sno, cno, degree) values ('108', '6-166', '81');


insert into teacher (tno, tname, tsex, tbirthday, prof, depart) values ('804', '李誠','','1958-12-02','副教授','電腦系');
insert into teacher (tno, tname, tsex, tbirthday, prof, depart) values ('856', '張旭','','1969-03-12','講師','電子工程系');
insert into teacher (tno, tname, tsex, tbirthday, prof, depart) values ('825', '王萍','','1972-05-05','助教','電腦系');
insert into teacher (tno, tname, tsex, tbirthday, prof, depart) values ('831', '劉冰','','1977-08-14','助教','電子工程系');

1. 查詢Student表中的所有記錄的SnameSsexClass列。

select sname, ssex, class from student;

2. 查詢教師所有的單位即不重覆的Depart列。

select distinct depart from teacher;

3. 查詢Student表的所有記錄。

select * from student;

4. 查詢Score表中成績在6080之間的所有記錄。

select * from score where degree between 60 and 80;

5. 查詢Score表中成績為858688的記錄。

select * from score where degree in (85, 86, 88);

6. 查詢Student表中“95031”班或性別為“女”的同學記錄。

select * from student where class = '95031' or ssex = '';

7. Class降序查詢Student表的所有記錄。

select * from student order by class desc;

8. Cno升序、Degree降序查詢Score表的所有記錄。

select * from score order by cno asc, degree desc;

9. 查詢“95031”班的學生人數。

select count(*) from student where class = '95031';

10.查詢Score表中的最高分的學生學號和課程號。

select * from score sc  where degree = (select max(degree) as max from score where cno = sc.cno group by cno);

11.查詢每門課的平均成績。

select cno, avg(degree) as avg from score group by cno;

12.查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。

select cno, avg(degree) as avg from score where cno like '3%' group by cno having count(*) >= 5;

13.查詢分數大於70,小於90Sno列。

select sno from score where degree > 70 and degree < 90;

14.查詢所有學生的SnameCnoDegree列。

select sname, cno, degree from student s left join score sc on sc.sno = s.sno;

15.查詢所有學生的SnoCnameDegree列。

select s.sno, c.cname, sc.degree from student s left join score sc on sc.sno = s.sno left join course c on c.cno = sc.cno;

16.查詢所有學生的SnameCnameDegree列。

select s.sname, c.cname, sc.degree from student s left join score sc on sc.sno = s.sno left join course c on c.cno = sc.cno;

17.查詢“95033”班學生的平均分。

select cno , avg(degree)  from score sc where sc.sno in (select sno from student where class = '95033') group by cno;

18.查詢選修“3-105”課程的成績高於“109”號同學成績的所有同學的記錄。

select * from score where sno = '109' and cno = '3-105';

19.查詢成績高於學號為“109”、課程號為“3-105”的成績的所有記錄。

select * from score where  cno = '3-105' and degree > (select degree from score where sno = '109'and cno = '3-105'); -- 此處理解為只看‘3-105’課程成績
select * from score where degree > (select degree from score where sno = '109'and cno = '3-105'); -- 此處為各科成績都算。

20.查詢和學號為108101的同學同年出生的所有學生的SnoSnameSbirthday列。(使用year()方法對生日欄位求年份)

select sno,sname,sbirthday from student where year(sbirthday) in (select year(sbirthday) from student where sno in ('108', '101'));

21.查詢“張旭“教師任課的學生成績。

select sc.* from score sc inner join course c on c.cno = sc.cno inner join teacher t on t.tno = c.tno where t.tname = '張旭'; -- 合併多個表然後查詢
select * from score where cno in(select cno from course where tno in(select tno from teacher where tname ='張旭')); -- 嵌套查詢

22.查詢選修某課程的同學人數多於5人的教師姓名。

select tname from teacher where tno = (select tno from course where cno = (select cno from score group by cno having count(*) > 5));

23.查詢95033班和95031班全體學生的記錄。

select * from student where class in ('95033', '95031');

24.查詢存在有85分以上成績的課程Cno

select distinct cno from score where degree > 85;

25.查詢出“電腦系“教師所教課程的成績表。

select * from score where cno in (select cno from course where tno in (select tno from teacher where depart = '電腦系')); 

26.查詢“計算 機系”與“電子工程系“不同職稱的教師的TnameProf

select tname, prof from teacher where depart = '電腦系' and prof not in (select prof from teacher where depart = '電子工程系')union select tname, prof from teacher where depart = '電子工程系' and prof not in (select prof from teacher where depart = '電腦系');

27.查詢所有教師和同學的namesexbirthday

select sname as `name`, ssex as `sex`, sbirthday as `birthday` from student union select tname, tsex,tbirthday from teacher;

28.查詢所有“女”教師和“女”同學的namesexbirthday

select sname as `name` , ssex as `sex`, sbirthday as `birthday`from student where ssex 	   

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

-Advertisement-
Play Games
更多相關文章
  • 1.安裝和配置Docker 伺服器版本阿裡雲CentOS7.4 docker版本18.06.0-ce docker安裝步驟https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1 下載mysql鏡像 啟動兩 ...
  • 1 創建topic: kafka-topics.sh --create --zookeeper 3.3.3.3:2181 --replication-factor 1 --partitions 3 --topic test_one replication-factor 副本的個數 (因為創建的副本都 ...
  • 差異備份 (differential backup)定義 一種數據備份,基於完整資料庫或部分資料庫或一組數據文件或文件組(差異基準)的最新完整備份,並且僅包含自確定差異基準以來發生更改的數據。 使用SSMS資料庫管理工具進行資料庫差異備份 1、選擇資料庫-》右鍵點擊-》選擇任務-》選擇備份。 2、在 ...
  • 1.數據 --創建職員表create table tbEmp( eID number primary key, --職員編號 eName varchar2(20) not null, --職員姓名 eSex varchar2(2) not null --職員性別 check(esex in ('男' ...
  • 一.概述 與網路I/O相關的等待的主要是ASYNC_NETWORK_IO,是指當sql server返回數據結果集給客戶端的時候,會先將結果集填充到輸出緩存里(ouput cache),同時網路層會開始將輸出緩存里的數據打包,由客戶端接收。如果客戶端接收數據包慢,sql server沒有地方存放新數 ...
  • 一、問題 今天遇到了一個神奇的問題——表中有數據,但select count( )的結果為0。 這個問題最初的表現形式是“查詢報表沒有分頁”。 最開始還以為是java端的問題。後來才發現,查分頁的sql語句是返回0的。 隨後將該sql語句放到PLSQL里運行,發現也是返回0條。 資料庫版本是 Ora ...
  • 刪除已經創建的topic 刪除toipc主要使用:kafka-topics --delete --zookeeper zkip:zkport --topic topicname命令刪除;但是如果server.properties文件中delete.topic.enable設置的值是false(預設f ...
  • 大數據介紹 大數據本質也是數據,但是又有了新的特征,包括數據來源廣、數據格式多樣化(結構化數據、非結構化數據、Excel文件、文本文件等)、數據量大(最少也是TB級別的、甚至可能是PB級別)、數據增長速度快等。 針對以上主要的4個特征我們需要考慮以下問題: 數據來源廣,該如何採集彙總?,對應出現了S ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...