Chap 11 SQL基本查詢指令.

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
强力推进 积极探索 努力提升计算机审计实施水平 AO案例和审计方法撰写介绍 曹红珍.
第6章 数据库管理软件Access 年秋.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
第2章 SQL语言初步 2.1 SQL的基本概念 2.2 基本表、索引的创建、删除和修改操作 2.3 SQL的查询语句——SELECT
第2讲 Transact-SQL语言.
数据库技术 实践.
高等院校计算机教材系列 数据库原理与应用(第2版) 任课教师:刘雅莉
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
第3章 SQL语言初步 2017/3/14.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
第7章 数据库基础知识 SQL常用命令使用方法 (1) 数据记录筛选: sql="select * from 数据表
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
文科计算机小公共课规划教材 Access 程序设计.
第一讲 数据查询优化.
《计算机应用基础》 第六章 Access数据库管理系统
Chap 13 視界與資料庫程式設計.
第 10 章 更多的查詢技巧.
软件设计师培训.
计算机应用基础 上海大学计算中心.
第3章 数据查询与SQL命令.
第5讲 分组查询 IBM Confidential.
查询数据.
第六章 學習SQL語言.
Chap 5 關聯式代數與計算.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
Chapter 12 T-SQL 語法與 ASP.NET.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
Chap 10 SQL定義、操作與控制指令.
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
实验 2:MS Access QBE Query使用
第九章 進階的查詢技巧.
国家“十一五”规划教材 数据库原理与应用教程(第3版).
SQL SERVER 一些经典语句 1.
MySQL 結構化查詢語言 MySQL.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
iRepor报表设计基础 IReport安装 普通实体报表 数据结果集报表 工作流主从报表 饼状图报表 柱状图,曲线图报表 条形码报表
網路遊戲版 幸福農場168號.
数据库技术.
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
資料庫系統 李翊豪 2017/12/21 Reference
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
学习目标 1、什么是表连接 2、表连接类型 3、表连接区别.
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
附錄D Access應用說明 主從式資料庫系統 - 附錄D.
國二EXCEL專案 上機考試版本: 主講者:黃韋欽 老師 考試者:國二全體學生.
本讲内容 SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能.
8 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
第11章 SQL基本查詢指令 11-1 SELECT查詢指令 11-2 WHERE子句的比較運算子 11-3 WHERE子句的邏輯運算子
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
模块六 数据库管理软件——Access 2010.
資料庫應用與實作 一到六章重點、習題.
第4章 数据查询.
第 9 章 查詢資料- 善用 SELECT 敘述.
Presentation transcript:

Chap 11 SQL基本查詢指令

11-1 SELECT查詢指令 SQL語言DML的資料查詢只有一個SELECT指令,其基本語法如下所示: SELECT column1, column2, …, columnN FROM table1, table2, …, tableN WHERE conditions GROUP BY column1, column2, …, columnN HAVING search_conditions ORDER BY column1, column2, …, columnN

11-1 SELECT查詢指令

11-1 SELECT查詢指令-資料表範例

11-1-1 顯示資料表的部分欄位 SELECT指令查詢資料表時,可以指明查詢結果所需的欄位清單,換句話說,可以只查詢資料表中所需的部分欄位。

11-1-1 顯示資料表的部分欄位 SQL查詢範例: 查詢Students資料表的所有學生記錄,不過,只顯示學號、姓名和生日三個欄位,如下所示: SELECT sid, name, birthday FROM Students

11-1-2 顯示資料表的所有欄位 如果查詢結果需要顯示資料表的所有欄位,SELECT指令可以直接使用’*’符號代表資料表的所有欄位,而不用一一列出欄位清單。

11-1-2 顯示資料表的所有欄位 SQL查詢範例: 查詢Courses資料表的所有課程記錄並且顯示所有欄位,如下所示: SELECT * FROM Courses

11-1-3 欄位沒有重複值 如果資料表記錄的欄位值擁有重複值,在SELECT指令後可以使用DISTINCT指令分辨重複的欄位值,一旦欄位擁有重複值,就只會顯示其中一筆記錄。

11-1-3 欄位沒有重複值 SQL查詢範例: 查詢Courses資料表課程資料擁有不同的學分數種類,如下所示: SELECT DISTINCT credits FROM Courses

11-1-4 欄位別名 SELECT指令預設使用關聯表綱要的欄位名稱來顯示查詢結果,基於顯示需要,我們可以使用AS關鍵字指定中文或英文的欄位別名。

11-1-4 欄位別名 SQL查詢範例: 查詢Students資料表的sid和name和birthday欄位資料,為了方便閱讀,顯示欄位名稱是學號、姓名和生日的中文欄位別名,如下所示: SELECT sid AS 學號, name AS 姓名, birthday AS 生日 FROM Students

11-1-4 欄位別名 SQL查詢範例: 查詢Students資料表的sid和name和tel欄位資料,為了方便閱讀,顯示的欄位名稱是S_No、StudentName和Telephone的英文欄位別名,如下所示: SELECT sid AS S_No, name AS StudentName, tel AS Telephone FROM Students

11-2 WHERE子句的比較運算子 WHERE子句的條件是一個運算式,運算元是欄位值,可以是文字、數值或日期/時間,在運算式可以使用的比較運算子(Comparison Operators),如下表所示:

11-2-1 條件值為字串 WHERE子句的條件運算式可以使用比較運算子執行字串比較,欄位條件的字串需要使用單引號括起。

11-2-1 條件值為字串 SQL查詢範例: 在Students資料表查詢學號為’S002’學生的詳細資料,如下所示: SELECT * FROM Students WHERE sid='S002'

11-2-1 條件值為字串 SQL查詢範例:Ch11-2-1-2.sql 在Students資料表查詢學號不等於’S002’的所有學生記錄和欄位資料,如下所示: SELECT * FROM Students WHERE sid<>'S002'

11-2-2 條件值為數值 WHERE子句的條件運算式如果使用數值進行比較,數值欄位不需使用單引號括起。

11-2-2 條件值為數值 SQL查詢範例: 查詢Students資料表的成績GPA欄位等於3.0的學生記錄,如下所示: SELECT * FROM Students WHERE GPA=3.0

11-2-2 條件值為數值 SQL查詢範例: 查詢Students資料表的成績GPA欄位小於等於3.0的學生記錄,如下所示: SELECT * FROM Students WHERE GPA<=3.0

11-2-3 條件值為日期/時間 WHERE子句的條件運算式如果是日期/時間的比較,如同字串,也需要使用單引號括起。

11-2-3 條件值為日期/時間 SQL查詢範例: 查詢Students資料表學生生日是1978-02-02的學生記錄,如下所示: SELECT * FROM Students WHERE birthday='1978-02-02'

11-2-3 條件值為日期/時間 SQL查詢範例: 查詢Students資料表的學生生日小於等於1978-02-02的學生記錄,如下所示: SELECT * FROM Students WHERE birthday<='1978-02-02'

11-3 WHERE子句的邏輯運算子 WHERE子句的條件運算式可以使用邏輯運算子(Logical Operators)執行多樣化比較,或連接多條件建立複雜的邏輯運算式:

11-3-1 LIKE包含子字串運算子 WHERE子句的條件欄位可以使用LIKE運算子進行比較,LIKE運算子是子字串查詢,只需是子字串就符合條件,配合萬用字元可以進行範本字串的比對,如下表所示:

11-3-1 LIKE包含子字串運算子 SQL查詢範例: 查詢Instructors講師資料表中屬於資訊相關科系CS和CIS的講師記錄,如下所示: SELECT * FROM Instructors WHERE department LIKE '%S%'

11-3-1 LIKE包含子字串運算子 SQL查詢範例: 查詢Classes資料表上課教室是在二樓的學生上課資料,如下所示: SELECT eid, sid, c_no, c_time, room FROM Classes WHERE room LIKE '%2_-%'

11-3-2 IS NULL運算子 如果查詢資料表中指定欄位值是否為空值NULL,可以使用IS NULL運算式和欄位值進行比較。

11-3-2 IS NULL運算子 SQL查詢範例: 查詢Students資料表沒有電話資料的學生記錄,也就是tel欄位為空值,如下所示: SELECT * FROM Students WHERE tel IS NULL

11-3-3 EXISTS運算子 EXISTS運算子可以檢查括號中的SQL查詢指令所查詢的記錄是否存在,通常是使用在SQL的子查詢(Subquery),在第12章有進一步說明。

11-3-3 EXISTS運算子 SQL查詢範例: 在Classes資料表找出有學生選修的課程清單,如下所示: SELECT title FROM Courses WHERE EXISTS (SELECT c_no FROM Classes WHERE Courses.c_no = Classes.c_no )

11-3-4 BETWEEN/AND範圍運算子 BETWEEN/AND運算子定義欄位值符合一個範圍,範圍值可以是文字、數值或和日期/時間資料。

11-3-4 BETWEEN/AND範圍運算子 SQL查詢範例: 查詢Students資料表生日birthday欄位的範圍是1978年1月1日到2000年12月31日出生的學生記錄,這是第十屆到第三十三屆的學生清單,如下所示: SELECT * FROM Students WHERE birthday BETWEEN ‘1978-1-1’ AND ‘2000-12-31’

11-3-4 BETWEEN/AND範圍運算子 SQL查詢範例: 學生修課學分數還差2到3個學分,查詢Courses資料表看看還有哪些課可以選修,如下所示: SELECT * FROM Courses WHERE credits BETWEEN 2 AND 3

11-3-5 IN運算子 IN運算子只需清單其中之一即可,需要列出一串文字或數值清單作為條件,如果欄位值是其中之一就符合條件。

11-3-5 IN運算子 SQL查詢範例: 學生一共選了CS101、CS222、CS100和CS213四門課,查詢Courses資料表關於這些課程的詳細資料,如下所示: SELECT * FROM Courses WHERE c_no IN ('CS101', 'CS222', ‘CS100’, 'CS213')

11-3-5 IN運算子 SQL查詢範例: 學生修課的學分數還差3到4個學分,請使用IN運算子查詢Courses資料表看看還有哪些課可以選修,如下所示: SELECT * FROM Courses WHERE credits IN (3, 4)

11-3-6 NOT運算子 NOT運算子是用來搭配之前的邏輯運算子,可以取得與條件相反的查詢結果,如下表所示:

11-3-6 NOT運算子 SQL查詢範例: 學生已經選修CS101、CS222、CS100和CS213四門課,查詢Courses資料表看看還有什麼課程可以選修,如下所示: SELECT * FROM Courses WHERE c_no NOT IN ('CS101', 'CS222', ‘CS100’, 'CS213')

11-3-7 AND運算子 AND運算子連接的前後運算式都必須同時為真,整個WHERE子句的條件才為真。

11-3-7 AND運算子 SQL查詢範例: 查詢Courses資料表的課程c_no欄位包含’1’子字串,而且課程名稱title欄位有’程式’子字串,如下所示: SELECT * FROM Courses WHERE c_no LIKE '%1%' AND title LIKE '%程式%'

11-3-8 OR運算子 OR運算子在WHERE子句連接的前後條件只需任何一個條件為真,即為真。

11-3-8 OR運算子 SQL查詢範例: 查詢Courses資料表的課程c_no欄位包含’1’子字串,或課程名稱title欄位有’程式’子字串,如下所示: SELECT * FROM Courses WHERE c_no LIKE '%1%' OR title LIKE '%程式%'

11-4 WHERE子句的算術運算子 WHERE子句的運算式條件可以使用算術運算子(Arithmetic Operators),算術運算子可以使用SELECT指令的欄位清單,用來計算2個欄位的和,使用各欄位組成一個算術運算式或是加上一個固定值。

11-4 WHERE子句的算術運算子 SQL查詢範例: 因為課程學分小於4的課程學分都額外多了1個學分,在尚未更新Courses資料表前,可以使用算術運算式查詢Courses資料表的課程資料,替這些課程的學分自動加一來顯示,如下所示: SELECT c_no, title, credits + 1 AS NewCredits FROM Courses WHERE credits < 4

11-4 WHERE子句的算術運算子 SQL查詢範例: 查詢Students資料表的學生成績GPA欄位小於另一班平均值10.0/3.0= 3.333的學生記錄,如下所示: SELECT sid, name, birthday, tel FROM Students WHERE GPA < (10.0 / 3.0)

11-5 ANSI-SQL的聚合函數 11-5-1 COUNT()函數 11-5-2 AVG()函數 11-5-3 MAX()函數 11-5-4 MIN()函數 11-5-5 SUM()函數

11-5 聚合函數 「聚合函數」(Aggregate Functions)可以進行資料表欄位的筆數、平均、範圍和統計函數,以便提供進一步欄位資料的分析結果,如下表所示:

11-5-1 COUNT()函數 SQL查詢範例: 查詢Students資料表的學生總數,如下所示: SELECT COUNT(*) FROM Students

11-5-1 COUNT()函數 SQL查詢範例: 查詢Students資料表的擁有姓名的學生總數,即學生欄位不是空值,如下所示: SELECT COUNT(name) FROM Students

11-5-1 COUNT()函數 SQL查詢範例: 學生GPA成績是3.0,查詢Students資料表的學生GPA成績大於3.0的學生總數,以便查詢有幾位學生的成績比我高,如下所示: SELECT COUNT(*) FROM Students WHERE GPA > 3.0

11-5-2 AVG()函數 SQL查詢範例: 查詢Students資料表各位學生的GPA平均值,如下所示: SELECT AVG(GPA) FROM Students

11-5-2 AVG()函數 SQL查詢範例: 查詢Courses資料表中,課程編號c_no包含’1’子字串的課程總數和學分的平均值,如下所示: SELECT COUNT(*) AS Count, AVG(credits) AS Average FROM Courses WHERE c_no LIKE '%1%'

11-5-3 MAX()函數 SQL查詢範例: 查詢Students資料表的第一名學生的GPA成績,如下所示: SELECT MAX(GPA) FROM Students

11-5-3 MAX()函數 SQL查詢範例: 查詢Courses資料表中,課程編號c_no包含’1’子字串的最大學分數,如下表所示: SELECT MAX(credits) FROM Courses WHERE c_no LIKE '%1%'

11-5-4 MIN()函數 SQL查詢範例: 查詢Students資料表的最後一名學生的GPA成績,如下所示: SELECT MIN(GPA) FROM Students

11-5-4 MIN()函數 SQL查詢範例: 查詢Courses資料表中,課程編號c_no包含’1’子字串的最少學分數,如下所示: SELECT MIN(credits) FROM Courses WHERE c_no LIKE '%1%'

11-5-5 SUM()函數 SQL查詢範例: 計算Students資料表這一班學生GPA成績的總和和平均,如下所示: SELECT SUM(GPA), SUM(GPA)/COUNT(*) FROM Students

11-5-5 SUM()函數 SQL查詢範例: 計算Courses資料表中,課程編號c_no包含’1’子字串的學分數總和,如下所示: SELECT SUM(credits) FROM Courses WHERE c_no LIKE '%1%'

11-6 SQL語言的群組與排序 11-6-1 群組資料GROUP BY子句 11-6-2 GROUP BY與 WHERE和HAVING子句 11-6-3 排序資料ORDER BY 子句

11-6-1 群組資料GROUP BY子句 群組是以指定欄位進行分類,將欄位值中重複的值結合起,例如:在Classes資料表統計每一門課有多少位學生選修,課程c_no欄位是群組欄位,可以將選修課程的學生結合起來,如下圖所示:

11-6-1 群組資料GROUP BY子句 SQL查詢範例: 查詢Classes資料表顯示課程編號和計算每一門課程有多少位學生選修,如下所示: SELECT c_no, COUNT(*) FROM Classes GROUP BY c_no

11-6-1 群組資料GROUP BY子句 SQL查詢範例: 查詢Classes資料表,統計每一間教室提供給幾門課作為教室,如下所示: SELECT room, COUNT(*) FROM Classes GROUP BY room

11-6-2 GROUP BY與WHERE和HAVING子句

11-6-2 GROUP BY與WHERE和HAVING子句 SQL查詢範例: 查詢Classes資料表找出有有幾位學生選修課程CS222,如下所示: SELECT c_no, COUNT(*) FROM Classes WHERE c_no = ‘CS222’ GROUP BY c_no

11-6-2 GROUP BY與WHERE和HAVING子句 SQL查詢範例: 查詢Classes資料表找出學生S001選修的課程清單,如下所示: SELECT sid, c_no FROM Classes GROUP BY c_no, sid HAVING sid = 'S001'

11-6-2 GROUP BY與WHERE和HAVING子句 SQL查詢範例: 查詢Classes資料表找出一門課有超過2位學生選修的課程清單,如下所示: SELECT c_no, COUNT(*) FROM Classes GROUP BY c_no HAVING COUNT(*) >= 2

11-6-3 排序資料ORDER BY 子句 SQL指令的查詢結果如果需要以指定欄位進行排序,可以使用ORDER BY子句指定依照欄位由小到大或由大到小進行排序。 由小到大排序:在SQL指令的WHERE子句或GROUP BY之後加上ORDER BY子句,就可以指定顯示資料的排序欄位。 由大到小排序:如果查詢結果的排序順序是倒過來由大到小,只需在ORDER BY子句的最後加上DESC指令。

11-6-3 排序資料ORDER BY 子句 SQL查詢範例: 查詢Students資料表學生成績GPA大於等於3.0的學生記錄,並且使用GPA欄位進行由小到大排序,如下所示: SELECT * FROM Students WHERE GPA >= 3.0 ORDER BY GPA ASC

11-6-3 排序資料ORDER BY 子句 SQL查詢範例: 查詢Students資料表學生成績GPA大於等於3.0的學生記錄,並且使用GPA欄位進行由大到小排序,如下所示: SELECT * FROM Students WHERE GPA >= 3.0 ORDER BY GPA DESC