mysql綜合性練習

来源:https://www.cnblogs.com/emadons/archive/2019/11/13/11840986.html
-Advertisement-
Play Games

題目描述 設定有一個資料庫,裡面有4張表: 學生表(student) 課程表(course) 成績表(score) 教師信息表(teacher) 表結構如下: 表一_學生表(student) 屬性名數據類型含 義 sno int 學號(主鍵) sname varchar 學生姓名 ssex varc ...


題目描述

設定有一個資料庫,裡面有4張表:

  • 學生表(student)
  • 課程表(course)
  • 成績表(score)
  • 教師信息表(teacher)

表結構如下:

表一_學生表(student)

屬性名數據類型含 義
sno int 學號(主鍵)
sname varchar 學生姓名
ssex varchar 學生性別
sbirthday date 學生出生年月
classid varchar 學生所在班級

 

表二_課程表(course)

 

屬性名數據類型含 義
cno varchar 課程號(主鍵)
cname varchar 課程名稱
tno int 教師編號(外鍵)

表三_成績表(score)

屬性名數據類型含 義
sno int 學號(外鍵)
cno varchar 課程號(外鍵)
sdegree float 成績

表四_教師表(teacher)

屬性名數據類型含 義
tno int 編號(主鍵)
tname varchar 教師姓名
tsex varchar 教師性別
tbirthday date 教師出生年月
professional varchar 職稱
department varchar 教師所在部門

二、創建資料庫和表

先創建資料庫mysql_test,並且設置這個資料庫的編碼字元集為utf-8。

 

 學生表:

create table student(
    sno  int(10),
    sname varchar(10),
    ssex varchar(10),
    sbirthday date,
    classid varchar(10)
);

alter table student add primary key(sno);

 

 教師表:

create table teacher(
    tno int(10),
    tname varchar(12),
    tsex varchar(10),
    tbirthday date,
    professional varchar(20),
    department varchar(20)
);

alter table teacher add primary key(tno);

 

課程表:

create table course(
    cno varchar(10),
    cname varchar(20),
    tno int(10)
);

alter table course add primary key(cno);
alter table course add constraint fk_course_teacher foreign key(tno) references teacher(tno); 

 

成績表:

create table score(
    sno int(10),
    cno varchar(10),
    sdegree float(5)
);

alter table score add constraint fk_score_student foreign key(sno) references student(sno);
alter table score add constraint fk_score_course foreign key(cno) references course(cno);

 

三、添加數據

insert into student (sno,sname,ssex,sbirthday,classid) 
values(108,'曾華','','1996-9-1','95033'),(105,'匡明','','1995-10-2','95031'),
(107,'王麗','','1996-1-23','95033'),(101,'李軍','','1996-2-20','95033'),
(109,'王芳','','1995-2-10','95031'),(103,'陸君','','1994-6-3','95031');


insert into teacher(tno,tname,tsex,tbirthday,professional,department) 
values(804,'李誠','','1978-12-2','副教授','電腦系'),
(856,'張旭','','1979-3-12','講師','電子工程系'),
(825,'王萍','','1982-5-5','助教','電腦系'),
(831,'劉冰','','1984-8-14','助教','電子工程系');


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


insert into score(sno,cno,sdegree) values
(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);

學生表:

 

教師表:

 

 課程表:

 

 

 成績表:

四、SQL題目

1、查詢所有學生的姓名,性別及班級編號

 

 

 2、查詢教師所有的部門名稱(即不重覆的DEPART列)

3、查詢student表的所有記錄

 

 4、查詢score表中成績在60到80之間的所有記錄

 

 5、查詢score表中成績為85,86或88的記錄

 

 6、查詢student表中班級編號為"95031"或性別為"女"的同學記錄

 

 7、查詢student表的所有記錄,以班級編號降序排列

 

 8、查詢score表的所有記錄,先按照cno升序排列,若相同則按照sdegree降序排列

 

 9、查詢班級編號為"95031"班級的學生人數

 

 10、查詢score表中的最高分的學生學號和課程號

 

 11、查詢編號為"3-105"的課程平均分

 

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

 

 13、查詢每科成績均在70到90之間的學生編號

 註意:having 後面只能跟聚合函數,如avg、min、max、sum等聚合函數

 14、查詢所有學生的姓名,所選課程編號和成績

 

 

 15、查詢所有學生的學號,所選課程名和成績

 

 

 16、查詢所有學生的姓名,所選課程名和成績

 

 

 17、查詢"95033"班同學所選每個課程的平均分

 

 

 18、假設使用如下命令建立了一個GRADE表:

CREATE TABLE GRADE(
LOW INT(3),
UPP INT(3),
RANK VARCHAR(1)
);
INSERT INTO GRADE VALUES(90,100,'A');
INSERT INTO GRADE VALUES(80,89,'B');
INSERT INTO GRADE VALUES(70,79,'C');
INSERT INTO GRADE VALUES(60,69,'D');
INSERT INTO GRADE VALUES(0,59,'E');

– 現查詢所有同學的學號,所選課程號和等級(RANK列)

 

 19、查詢"3-105"課程的成績高於學號為109同學這科成績的所有同學記錄

 

 20、查詢1995年之後出生的所有學生所選學的課程名及成績

 

 

 

 21、查詢與學號108同學同年出生的所有學生的學號,姓名和生日

 

 

 22、查詢"張旭"教師任課的學生成績

 

 

 23、查詢選修某課程的同學人數多於5人的教師姓名

 

 

 24、查詢"95033"班和"95031"班全體學生的記錄

 

 

 25、查詢存在有85分以上成績的課程編號

 

 

 26、查詢出"電腦系"教師所教課程每一科成績的平均分

 

 

 27、查詢"電腦系"與"電子工程系"不同職稱的教師的姓名和職稱

 

 

28、查詢所有教師和同學的姓名,性別和生日

 

 

 29、查詢所有"女"教師和"女"同學的姓名,性別和生日

 

 

 30、查詢所有任課教師的姓名和部門

 

 

 31、查詢所有未講課的教師的姓名和部門

 

 

 32、查詢student表中不姓"王"的同學記錄

 

 

 33、查詢student表中每個學生的姓名和年齡

 

 

 34、查詢student表中最大和最小的生日值

 

 

 35、查詢student表中的全部記錄,按照班級編號降序排列,班級編號若相同則按照生日降序排列

 

 

 36、查詢所有"男"教師及其所上的課程名稱

 

 

 37、查詢和"李軍"同性別並同班的同學信息

 

 

 38、查詢所有選修"電腦導論"課程的"男"同學的成績表

 

 

 39、查詢出同時選擇"3-245"和"3-105"的課程的學生信息

 

 

 

40、查詢既沒有選修"3-245"課程也沒有選修"3-105"課程的學生信息

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 第一範式(1NF):欄位具有原子性,不可再分。所有關係型資料庫系統都滿足第一範式) 資料庫表中的欄位都是單一屬性的,不可再分。例如,姓名欄位,其中的姓和名必須作為一個整體,無法區分哪部分是姓,哪部分是名,如果要區分出姓和名,必須設計成兩個獨立的欄位。 第二範式(2NF)要求實體的屬性完全依賴於主關鍵 ...
  • 一.存儲引擎簡介 1、文件系統: 1.1 操作系統組織和存取數據的一種機制。 1.2 文件系統是一種軟體。 2、文件系統類型:ext2 3 4 ,xfs 數據(centos6 ext 4 centos7 xfs) 2.1 不管使用什麼文件系統,數據內容不會變化 2.2 不同的是,存儲空間、大小、速度 ...
  • 今天在做定時任務的時候,遇到了一個比較難搞的問題,這個問題也比較有意思,現在給大家分享一下,這個定時任務的調用入口是這樣的。 // 進行 ldap同步 public void runLdapSyncJob(){ try { ldapSyncService.syncLdap(); } catch (E ...
  • RMAN命令詳解和常用彙總轉摘彙集,日後使用本文鏈接:https://blog.csdn.net/EVISWANG/article/details/50448370http://blog.itpub.net/25904686/viewspace-742701/https://blog.csdn.ne ...
  • 根據.frm和.ibd文件恢復表結構和數據 ...
  • 解決方案:(參考以下命令) 1、打開cmd,切換到mysql的bin目錄下 2、 D:\Program Files\MySQL5.1\bin mysqld.exe install Service successfully installed. 3、 D:\Program Files\MySQL5.1 ...
  • 1. GTID優缺點 MySQL傳統點位複製在5.7版本前是主要的主從複製模式,而隨著MySQL5.6版本引入GTID,並且MySQL5.7進行各方面的優化以後,在mySQL5.7(尤其是MySQL5.7.6)版本後GTID模式的主從複製方式成為一個新的選擇方式。要使用GTID模式,首先也需知其優缺 ...
  • [TOC] MyBatis簡單介紹 MyBatis是一個持久層框架,使用簡單,學習成本較低。可以執行自己手寫的SQL語句,比較靈活。但是MyBatis的自動化程度不高,移植性也不高,有時從一個資料庫遷移到另外一個資料庫的時候需要自己修改配置。 一個Mybatis最簡單的使用列子如下: 從配置文件(通 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...