国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《數據庫原理MySQL》第四次上機實驗

這篇具有很好參考價值的文章主要介紹了《數據庫原理MySQL》第四次上機實驗。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、連接查詢

1.查詢女學生的學生學號及總成績

SELECT s.sno,SUM(degree)
FROM student s
RIGHT JOIN sc r
ON s.sno=r.sno
WHERE ssex='女'
GROUP BY s.sno

2.查詢李勇同學所選的課程號及成績

SELECT r.cno,degree
FROM sc r
LEFT JOIN student s
ON r.sno=s.sno
WHERE sname='李勇'

3.查詢李新老師所授課程的課程名稱

SELECT c.cname
FROM course c
RIGHT JOIN teaching g
ON c.cno=g.cno
INNER JOIN teacher t
ON g.tno=t.tno
WHERE tname='李新'

4.查詢女教師所授課程的課程號及課程名稱

SELECT c.cno,c.cname
FROM course c
RIGHT JOIN teaching g
ON c.cno=g.cno
INNER JOIN teacher t
ON g.tno=t.tno
WHERE tsex='女'

5.查詢姓“王”的學生所學的課程名稱

SELECT c.cname
FROM course c
RIGHT JOIN sc r
ON c.cno=r.cno
INNER JOIN student s
ON r.sno=s.sno
WHERE sname LIKE '王%'

6.查詢選修“數據庫”課程且成績在 80 到 90 之間的學生學號及成績

SELECT r.cno,degree
FROM sc r
INNER JOIN course c
ON r.cno=c.cno
WHERE cname='數據庫'
AND degree BETWEEN 80 AND 90

7.查詢選修“C03”課程的學生的平均年齡

SELECT AVG(YEAR(CURDATE())-YEAR((Sbirthday))) 平均年齡
FROM student s
RIGHT JOIN sc
ON s.sno=sc.sno
WHERE cno='C03'

8.查詢學習課程名為“數據庫”的學生學號和姓名

SELECT s.sno,sname
FROM student s
RIGHT JOIN sc
ON s.sno=sc.sno
INNER JOIN course c
ON sc.cno=c.cno
WHERE c.cname='數據庫'

9.查詢”李新”教師任課的課程號,選修其課程的學生的學號和成績

SELECT g.cno,sno,degree
FROM teaching g
RIGHT JOIN sc
ON sc.cno=g.cno
LEFT JOIN teacher t
ON g.tno=t.tno
WHERE tname='李新'

10.查詢在第 3 學期所開課程的課程名稱,選修其課程的學生學號和成績

SELECT c.cname,sno,degree
FROM course c
RIGHT JOIN sc
ON c.cno=sc.cno
LEFT JOIN teaching g
ON sc.cno=g.cno
WHERE cterm=3

二、嵌套查詢
1.查詢至少選修兩門課程的男學生姓名

SELECT s.sname
FROM student s
WHERE ssex='男'
AND sno=(
	SELECT sno
	FROM sc
	GROUP BY sno
	HAVING COUNT(sno)>=2
)

2.查詢與劉晨同一個系的同學姓名;

SELECT s.sname
FROM student s
WHERE sname!='劉晨' 
AND sdept=(
	SELECT sdept
	FROM student
	WHERE sname='劉晨'
)

3.查詢學號比劉晨同學小,而年齡比他小的學生姓名,并寫出 MySQL 中 sysdate()和 now()函數的功能差別。

SELECT s.sname	
FROM student s
WHERE sno<(SELECT sno FROM student WHERE sname='劉晨')
AND (YEAR(CURDATE())-YEAR(Sbirthday))<(
	SELECT (YEAR(CURDATE())-YEAR(Sbirthday))
	FROM student
	WHERE sname='劉晨'
)

NOW():基于語句開始執(zhí)行的時間
SYSDATE():系統(tǒng)實時時間,有延遲導致時間不一致,主庫和從庫執(zhí)行時返回值不一樣

4.查詢出生日期大于所有男同學出生日期的女同學的姓名及系別

SELECT s.sname,sdept
FROM student s
WHERE ssex='女'
AND YEAR(Sbirthday)>ALL(
	SELECT YEAR(sbirthday)
	FROM student 
	WHERE ssex='男'
)

5.查詢成績比該課程平均成績高的學生的學號、課程號及成績

SELECT cno,degree
FROM sc r
WHERE r.degree>(
	SELECT AVG(degree)
	FROM sc
	WHERE sc.cno=r.cno
)

6.查詢不講授“C01”課的教師姓名

SELECT t.tname
FROM teacher t
WHERE tno NOT IN(
	SELECT tno
	FROM teaching g
	WHERE cno='C01'
)

7.查詢沒有選修“C02”課程的學生學號及姓名

SELECT s.sno,sname
FROM student s
WHERE sno NOT IN(
	SELECT sno
	FROM sc
	WHERE cno='C02'
)

8.查詢選修了“數據庫”課程的學生學號、姓名及系別

SELECT s.sno,sname,sdept
FROM student s
WHERE sno IN(
	SELECT sno
	FROM sc
	INNER JOIN course c
	ON sc.cno=c.cno
	WHERE cname='數據庫'
)

9.查詢選修了全部課程的學生姓名

SELECT s.sname
FROM student s
WHERE sno IN(
	SELECT sno
	FROM sc
	GROUP BY sno
	HAVING COUNT(sno)=(
		SELECT COUNT(cno)
		FROM course
	)
)

10.分別用子查詢和連接查詢,求“C01”號課程在 80 分以上的學生信息
子查詢:

SELECT *
FROM student s
WHERE sno IN(
	SELECT sno
	FROM sc
	WHERE cno='C01'
	AND degree>80
)

連接查詢:

SELECT s.*
FROM student s
LEFT JOIN sc r
ON s.sno=r.sno
WHERE cno='C01'
AND degree>80

三、數據更新
1.向 Student 表中插入記錄(‘20050203’,‘張靜’,‘女’,‘1981-3-21’,‘CS’ ,‘電子商務’)

INSERT INTO `student`(`sno`,`sname`,`ssex`,`sbirthday`,`sdept`,`speciality`)
VALUES('20050203','張靜','女','1981-3-21','CS' ,'電子商務')

2.插入學號為 ‘20050302’,姓名為’李四’學生信息

INSERT INTO `student`(`sno`,`sname`)
VALUES('20050302','李四')

3.把男學生記錄保存到表 TS 中

CREATE TABLE ts(
	SELECT * 
	FROM student 
	WHERE ssex='男'
)

4.將學號為’ 20150202’ 的學生姓名改為’張華’,系別改為“CS”,專業(yè)改為“多媒體技術”

UPDATE `student` 
SET `sname`='張華',`sdept`='CS',`Speciality`='多媒體技術'
WHERE sno=20050202

5.將 ‘20150201’ 學生選修“C03”號課程的成績改為該課的平均成績

UPDATE `sc`
SET degree=(
	SELECT * FROM(
		SELECT AVG(degree)
		FROM sc
		WHERE cno='C03'
	) a
)
WHERE sno='20050201'
AND cno='C03'

6.把女同學的成績提高 5%

UPDATE `sc`
SET degree=(1+0.05)*degree 
WHERE sno IN(
	SELECT sno
	FROM student
	WHERE ssex='女'
)

7.(1) 把選修了“數據庫”課程學生的成績全改為空值(NULL)

UPDATE `sc`
SET degree=NULL
WHERE cno IN(
	SELECT cno
	FROM course
	WHERE cname='數據庫'
)

(2) 將’01’課程的成績更新為隨機成績數據,成績取值范圍為 0 到 100 之間。

UPDATE `sc`
SET degree=FLOOR(RAND()*100)
WHERE cno='C01'

8.刪除學號為 20150302 的學生記錄

DELETE FROM student
WHERE sno=20050302

9.把“劉晨”同學的選課記錄全部刪除

DELETE FROM sc
WHERE sno IN(
	SELECT sno
	FROM student
	WHERE sname='劉晨'
)

10.刪除電子商務專業(yè)所有學生的選課記錄

DELETE FROM sc
WHERE sno IN(
	SELECT sno
	FROM student
	WHERE speciality='電子商務'
)

思考題
1.使用存在量詞[NOT]EXISTS 的嵌套查詢時,何時外層查詢的 WHERE 條件為真,何時為假?

exists對外表用loop逐條查詢,每次查詢都會查看exists的條件語句,當exists里的條件語句能夠返回記錄行時(無論記錄行是的多少,只要能返回),條件就為真,返回當前l(fā)oop到的這條記錄,反之如果exists里的條件語句不能返回記錄行,則當前l(fā)oop到的這條記錄被丟棄,exists的條件就像一個bool條件,當能返回結果集則為true,不能返回結果集則為false

2.DROP 命令和 DELETE 命令的本質區(qū)別是什么?如何恢復通過 DELETE FROM 命令刪除的數據。

  1. 觸發(fā)條件不同
    delete語句是數據庫操作語言(dml),這個操作會放到rollbacksegement中,在事務提交后生效,執(zhí)行時觸發(fā)相應的trigger。
    drop是數據庫定義語言(ddl),操作立即生效,原數據不放到rollbacksegment中,不能回滾,操作不觸發(fā)trigger。
  2. 用法不同
    delete只刪除內容、釋放空間但不刪除定義,而delete即可以對行數據進行刪除,也可以對整表數據進行刪除。
    drop是刪除內容和定義,并釋放空間。執(zhí)行drop語句,將使此表的結構一起刪除。
  3. 執(zhí)行速度不同
    drop的執(zhí)行速度大于delete。
    delete的執(zhí)行速度小于drop

如何恢復:Delete語句誤操作只會刪除表數據,而表結構還在。找到數據庫的binlog存放位置,利用mysqlbinlog命令的–start-datetime參數快速定位數據位置.

確定起始位置點:

mysqlbinlog -vv --start-datetime='2022-05-19 17:20:00' on.000004| head -1000 |more

確定終止位置點:

mysqlbinlog -vv --start-datetime='2022-05-19 17:20:00' --stop-datetime='2022-05-19 17:23:00' on.000004| tail -1000 |more

將待恢復數據導出

mysqlbinlog -vv --start-position=192 --stop-position=435 on.000004 |grep ^"###" >/tmp/bin_data

將DELETE語句轉換為INSERT語句

cat /tmp/bin_data | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@6.*),/\1;/g' | sed 's/@[1-9]=//g' | sed 's/@[1-9][0-9]=//g' >/tmp/student.sql

將INSERT語句導入數據庫中

mysql -hlocalhost -P3306 -uroot -pyL@98 > /tmp/student.sql

即可完成數據恢復

3.利用 INSERT、UPDATE 和 DELETE 命令可以同時對多個表操作嗎,如果需要同時操作多個表,如何實現?

INSERT、UPDATE和DELETE 只能對單表操作
要操作多表,可以用觸發(fā)器文章來源地址http://www.zghlxwxcb.cn/news/detail-447160.html

到了這里,關于《數據庫原理MySQL》第四次上機實驗的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 數據庫系統(tǒng)原理及MySQL應用教程實驗六視圖創(chuàng)建與管理

    數據庫系統(tǒng)原理及MySQL應用教程實驗六視圖創(chuàng)建與管理

    1.理解視圖的概念。 2.掌握創(chuàng)建、更改、刪除視圖的方法。 3.掌握使用視圖來訪問數據的方法。 1.驗證性實驗:在job數據庫中,有聘任人員信息表:Work_lnfo表對其視圖的操作。 2.設計性試驗:在學生管理系統(tǒng)中,有學生信息表studentinfo表對其視圖的操作。 (一)驗證性實驗 在

    2024年02月04日
    瀏覽(100)
  • 數據庫系統(tǒng)原理及MySQL應用教程實驗八觸發(fā)器創(chuàng)建與管理

    數據庫系統(tǒng)原理及MySQL應用教程實驗八觸發(fā)器創(chuàng)建與管理

    1.理解觸發(fā)器的概念與類型。 2.理解觸發(fā)器的功能及工作原理。 3.掌握創(chuàng)建、更改、刪除觸發(fā)器的方法。 4.掌握利用觸發(fā)器維護數據完整性的方法。 1.驗證性實驗:某同學定義產品信息product表,并對其觸發(fā)器創(chuàng)建與管理 2.設計性試驗:某同學定義產品信息product表,并對其

    2024年02月04日
    瀏覽(26)
  • 數據庫系統(tǒng)原理及MySQL應用教程實驗七存儲過程與函數的創(chuàng)建管理

    數據庫系統(tǒng)原理及MySQL應用教程實驗七存儲過程與函數的創(chuàng)建管理

    1. 理解存儲過程和函數的概念。 2. 掌握創(chuàng)建存儲過程和函數的方法。 3. 掌握執(zhí)行存儲過程和函數的方法。 4. 掌握游標的定義、使用方法。 1.驗證性實驗:某超市的食品管理的數據庫的Food表對其操作。 2.設計性試驗:學校教師管理數據庫中的teacherInfo表對其操作。 三、實驗步

    2024年02月03日
    瀏覽(24)
  • 數據庫原理第六章課后題答案(第四版)

    數據庫原理第六章課后題答案(第四版)

    一、選擇題 1. B??? 2. C??? 3. C??? 4. A??? 5. C 6. B??? 7. C??? 8. B??? 9. D??? 10. C 11. D?? 12. B?? 13. B?? 14. D?? 15. B 16. B ??17. C 二、填空題 數據庫的結構設計、數據庫的行為設計 新奧爾良法 分析和設計階段、實現和運行階段 需求分析 概念結構設計 自頂向下、自底向

    2024年02月01日
    瀏覽(21)
  • MySQl數據庫第四課-------------努力------努力------努力

    MySQl數據庫第四課-------------努力------努力------努力

    ?歡迎小可愛們前來借鑒我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————————— ???? ????sudo? ????????whoami ???????? who ???????? ????????exit ???????? ???????? reboot、shutdown ???????? ??

    2024年02月13日
    瀏覽(24)
  • 數據結構第四次實驗-常用的內部排序算法

    數據結構第四次實驗-常用的內部排序算法

    一、實驗目的 1.掌握常見的內部排序算法的思想及其適用條件; 2.掌握常見的內部排序算法的程序實現; 二、實驗內容及要求 1、任務描述 設計一個內部排序算法模擬系統(tǒng),利用該系統(tǒng)實現常用的 7 種排序算法,并測試 各種排序算法的性能。 ?實驗內容:通過一個簡單的菜

    2024年02月07日
    瀏覽(20)
  • 開源數據庫MYSQL DBA運維實戰(zhàn) 第四章 集群

    開源數據庫MYSQL DBA運維實戰(zhàn) 第四章 集群

    mysql復制技術 集群目的 負載均衡:解決高并發(fā) 高可用HA:服務可用性 遠程災害:數據有效性 圖示 類型 M M-S M-S-S... M-M M-M-S-S 原理圖示 圖示 概念 1.在主庫上把數據更改 (DDL DML DCL) 記錄到二進制日志 (BinaryLog) 中。 2.備庫/0線程將主庫上的日志復制到自己的中繼日志 ( Relay Log) 中

    2024年02月21日
    瀏覽(28)
  • 《數據庫原理》實驗六 SQL數據查詢實驗

    《數據庫原理》實驗六 SQL數據查詢實驗

    本系列傳送門: 實驗二 SQL Server SSMS工具創(chuàng)建和管理數據庫及數據表 實驗三 SQL Server SSMS工具添加數據 實驗四 SQL的數據定義語句 實驗五 數據庫完整性約束的實現與驗證 實驗六 SQL數據查詢實驗 實驗六(2) SQL數據查詢—連接查詢 實驗七 SQL的數據更新和視圖 實驗八 T_SQL編程

    2024年02月03日
    瀏覽(22)
  • 數據庫原理實驗報告

    這門課是大二學年數據庫原理這門必修理論課中需要寫報告的部分,要求學會使用sql語句,之前忘發(fā)了,今天想起來上傳一下。 當時是和室友一起討論著寫完的,因為其中有幾個問題實現起來還是比較復雜的,我推薦大家不要悶頭自己寫,否則萬一寫錯了也不知道。但也不是

    2024年02月09日
    瀏覽(17)
  • MySQL數據庫,從入門到精通:第四篇——MySQL中常用的運算符及其用法

    MySQL數據庫,從入門到精通:第四篇——MySQL中常用的運算符及其用法

    目錄層級 MySQL數據庫,從入門到精通:第一篇——MySQL概念詳解 MySQL數據庫,從入門到精通:第二篇——MySQL關系型數據庫與非關系型數據庫的比較 MySQL數據庫,從入門到精通:第三篇——MySQL 數據庫規(guī)范和基礎查詢語句 MySQL數據庫,從入門到精通:第四篇——MySQL中常用的運

    2024年02月08日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包