数据库概论(实验四1) 数据查询
[实验目标] 1、掌握单表查询的应用 2、熟练掌握连接查询的应用 3、掌握嵌套查询和集合查询 [实验内容] 一、根据实验二,建立 SC 数据库(实验条件),含有 student 、 course 和 sc 三个表 二、数据查询实验 1 、单表查询 1 )选择指定的列 【例】 查询全体
[实验目标]
1、掌握单表查询的应用
2、熟练掌握连接查询的应用
3、掌握嵌套查询和集合查询
[实验内容]
一、根据实验二,建立 SC 数据库(实验条件),含有 student 、 course 和 sc 三个表
二、数据查询实验
1 、单表查询
1 )选择指定的列
【例】 查询全体学生的学号和姓名
2 )查询全部列
【例】 查询全体学生的详细信息
3 )对查询后的指定列进行命名
【例】 查询全部学生的 “ 姓名 ” 及其 “ 出生年 ” 两列
4 )消除取值重复的行
【例】 查询选修了课程的学生学号
5 )选择表中若干元组(满足条件的)
( I)大小比较
【例】 查询计算机系( IS )全体学生名单
【例】 查询全体 20 岁以下的学生姓名和年龄
( II)确定范围
【例】 查询所有在 20 到 23 岁(含 20 和 23 )的学生姓名、系别和年龄
( III) in 和 not in 确定集合
【例】 查询 IS 系和 CS 系的全体学生姓名和性别
【例】 查询既不属于 IS 系,也不属于 MA 系的学生姓名和年龄
( IV)字符匹配( like % _ )
【例】 查询所有姓李的学生姓名和性别
【例】 查询所有 “2002” 年入学的学生学号、姓名和系别
【例】 查询所有不姓 “ 刘 ” 的学生信息
【例】 查询名称含有 “ 数据 ” 的课程号、课程名及学分
( V)涉及空值的查询( is null )
【例】 查询没有先修课的课程号和课程名。
【例】 查询所有有成绩的学生学号、课程号及成绩
6 )查询结果排序( order by )
【例】 查询选修了 3 号课程的学生学号和成绩,结果按成绩降序排列。
注:
排序是对查询后的结果排序。所以应该放在最后。
7 )聚集函数
count 、 sum 、 avg 、 max 、 min
【例】 查询学生总数
【例】 查询所有课程的总学分
【例】 查询全体学生平均年龄
【例】 查询 1 号课程的最高分
8 )分组统计( group by )
【例】 查询男女学生各有多少人。
【例】 查询每个课程的课程号和平均分。
【例】查询选修了3门课程以上(含3门)的学生学号和选修课程数。
【例】查询选修了2门课程以上(含2门,但不含1号课程),学生学号和选修课程数。
【例】查询不及格门数2门以上的学生学号。
【例】查询有2名以上(含2名)学生选修了的课程号和选修人数。
注:1.分组查询的目标列可以出现分组的列及含在聚集函数中的其他列;
2.where条件用于分组前的选择条件;having子句,用于分组后选择的条件。
2 、连接查询
1 )等值与非等值连接查询
【例】 查询每个学生及其的选修课程情况
2 )自身连接
【例】 查询每个课程的间接选修课
3 )外连接
【例】 查询所有学生选修课程情况(含没选修课程的学生)
【例】查询所有学生选修课程情况(含没选修课程的学生,属性有学号,姓名,课程名和成绩)
4 )符合条件连接
【例】 查询选修了 2 号课程且成绩在 90 分以上的所有学生学号和姓名
【例】 查询每个学生的学号、姓名,选修课程名和成绩。
3 、嵌套查询
1)带有IN谓词的子查询( 属性 in (子查询的查询结果) )
【例】查询与王敏同学在同一个系的学生信息。
【例】查询与王敏同学不在同一个系的学生信息。
【例】查询选修了课程名为“信息系统”的学生学号和姓名。
【例】查询曾与刘晨一同上课的学生学号和姓名。(假设:一个课程只有一个上课班)
2)带有比较运算符的子查询(=,>=,或!=)
【例】查询与王敏同学在同一个系的所有学生信息 (=判断)
【例】查询每个学生超过该课程最低分的课程号。(同类课程不是最低分的)
【例】查询每个学生超过他选修课程平均成绩的课程号。
【例】查询每个学生超过该课程平均成绩的课程号。
3)带有ANY或ALL谓词的子查询
【例】查询其他系中比计算机系某一学生年龄小的学生姓名,性别、年龄和所在系。
【例】查询其他系中比计算机系所有年龄都小的学生姓名和年龄。
4 )带有Exists谓词的子查询
【例】查询所有选修了1号课程的学生姓名。
【例】查询选修了全部课程的学生姓名。
【例】查询至少选修了学生200215122选修的全部课程的学生学号。
4、集合查询
1)并UNION
【例】 查询计算机系的学生及年龄不大于19岁的学生详细信息。
【例】查询选修了1号课程的及年龄不大于19岁的学生详细信息。
2)交INTERSECT
【例】查询选修了1号课程的与年龄不大于19岁的 学生 详细信息 的交集。
3)差EXCEPT
【例】查询计算机科学系的学生与年龄不大于19岁的学生详细信息的差集。
[课后作业]
1、通过SPJ数据库完成课后针对SPJ的查询练习。
2、根据SPJ数据库用SQL语句完成以下查询。
1)查询“天津”的供应商详细信息。
2)查询不是“天津”的供应商代码。
3)查询供应 工程 J1零件的供应商代码。
4)查询供应商S1供应过的商品代码。
5)查询供应商S1供应工程J1的零件种类有几种。
6)查询供应商S1供应工程J1的各种零件的零件代码和其数量和。
7)查询J1工程使用的零件种类有几种。
8)查询J1工程使用的各种零件代码和其数量和。
9)查询J1工程使用的零件总数大于300的零件代码和数量。
10)查询J1工程使用的各种零件,其数量至少大于J3使用的S2供应的所有零件数量和的,零件代码和数量。
11)查询J1工程使用的各种零件,其数量至少大于J3使用的同类数量和的,零件代码和数量。
12)查询至少使用了J1工程所用的几类零件的工程的工程号。
13)查询至少使用了所有红色零件的工程号。
14)查询使用了全部红色零件的工程号。
15)查询工程所在地与供应其零件的供应商在同一个城市的工程号和供应商号。
16)查询没有使用天津供应商生产的红色零件的工程号JNO。
17)查询至少使用了供应商S1供应的全部零件的工程号JNO。
18)查询使用了全部上海产的零件的工程号JNO。
19)查询没有使用J2所使用的所有零件的工程号JNO。
3、根据SC数据库用SQL语句完成以下任务。
1)将不及格的每个学生成绩增加5分。
2)将低于该课程平均分的学生成绩,成绩提高10%。
3)把计算机科学系所有学生增加1岁。
4)把学分为3分以内(含3分)的课程成绩提高3分,学分为3分以上的课程成绩提高4分。
5)建立名字为“成绩单”的视图,属性有 学生号,学生姓名、课程号、课程名和成绩 。
6)删除1号课程。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

蘋果公司最新發布的iOS18、iPadOS18以及macOSSequoia系統為Photos應用程式增添了一項重要功能,旨在幫助用戶輕鬆恢復因各種原因遺失或損壞的照片和影片。這項新功能在Photos應用的"工具"部分引入了一個名為"已恢復"的相冊,當用戶設備中存在未納入其照片庫的圖片或影片時,該相冊將自動顯示。 "已恢復"相簿的出現為因資料庫損壞、相機應用未正確保存至照片庫或第三方應用管理照片庫時照片和視頻丟失提供了解決方案。使用者只需簡單幾步

Hibernate多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有欄位。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似joined-subclass,但父類別表聯合所有子類別列。

PHP處理資料庫連線報錯,可以使用下列步驟:使用mysqli_connect_errno()取得錯誤代碼。使用mysqli_connect_error()取得錯誤訊息。透過擷取並記錄這些錯誤訊息,可以輕鬆識別並解決資料庫連接問題,確保應用程式的順暢運作。

如何在PHP中使用MySQLi建立資料庫連線:包含MySQLi擴充(require_once)建立連線函數(functionconnect_to_db)呼叫連線函數($conn=connect_to_db())執行查詢($result=$conn->query())關閉連線( $conn->close())

可以透過使用gjson函式庫或json.Unmarshal函數將JSON資料儲存到MySQL資料庫中。 gjson函式庫提供了方便的方法來解析JSON字段,而json.Unmarshal函數需要一個目標類型指標來解組JSON資料。這兩種方法都需要準備SQL語句和執行插入操作來將資料持久化到資料庫中。

在Golang中使用資料庫回呼函數可以實現:在指定資料庫操作完成後執行自訂程式碼。透過單獨的函數新增自訂行為,無需編寫額外程式碼。回調函數可用於插入、更新、刪除和查詢操作。必須使用sql.Exec、sql.QueryRow或sql.Query函數才能使用回呼函數。

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

透過Go標準庫database/sql包,可以連接到MySQL、PostgreSQL或SQLite等遠端資料庫:建立包含資料庫連接資訊的連接字串。使用sql.Open()函數開啟資料庫連線。執行SQL查詢和插入操作等資料庫操作。使用defer關閉資料庫連線以釋放資源。
