第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 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.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
强力推进 积极探索 努力提升计算机审计实施水平 AO案例和审计方法撰写介绍 曹红珍.
第6章 数据库管理软件Access 年秋.
目 录 第 1 章 数据库技术基础 第 2 章 SQL Server基础 第 3 章 数据库管理 第 4 章 查询和视图
關聯查詢.
SQL的简单查询.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
第2讲 Transact-SQL语言.
数据库技术 实践.
高等院校计算机教材系列 数据库原理与应用(第2版) 任课教师:刘雅莉
Chap 11 SQL基本查詢指令.
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
第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数据库管理系统
第6章 数据展示和输出功能 创建和使用报表 报表(Report)是以打印格式展示数据的一种有效方式。在报表中,可以展示图形、文字标题、字段数据或汇总数据等形式的信息,并可以控制各种数据的大小和外观。 利用报表,还可以按照数据之间的逻辑关系和所需的方式来组织数据之间的排版布局,对数据进行多级汇总和统计,或以图形方式展示数据。
计算机应用基础 上海大学计算中心.
第3章 数据查询与SQL命令.
商品学 高学芹.
第5讲 分组查询 IBM Confidential.
查询数据.
關聯式資料庫.
Access 2007 進銷存管理系統實作 文魁資訊股份有限公司.
第六章 學習SQL語言.
Chap 5 關聯式代數與計算.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
Chapter 12 T-SQL 語法與 ASP.NET.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
2、掌握SQL中各种查询方法和数据更新方法 3、掌握SQL中视图的定义方法和用法 4、掌握SQL的授权机制
Chap 10 SQL定義、操作與控制指令.
資料庫安全 (Database Security)
彰化縣政府補助辦理網頁設計資料庫應用班 ASP與資料庫介紹 建國技術學院資管系 饒瑞佶.
SQL Server 2000 数据库入门.
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
实验 2:MS Access QBE Query使用
第九章 進階的查詢技巧.
第五章 認識 SQL語言與 資料型別.
MySQL 結構化查詢語言 MySQL.
第十七章 資料庫SQL 17-1 SELECT 17-2 INSERT 17-3 UPDATE 17-4 DELETE.
資料庫管理(Access 2003) 第五章 利用查詢來 統計與分析資料 許欽嘉 老師.
第十二章 SQL語言簡介 講授大綱: 新增資料庫 新增資料表 新增資料 修改資料 刪除資料 查詢資料 透視ASP.NET-第12章
網路遊戲版 幸福農場168號.
数据库技术.
資料庫系統 李翊豪 2017/12/21 Reference
CS, ZJU 4/18/2019 Chapter 7 数据库.
6 SQL語言與資料庫建置 6-1 SQL語言的基礎 6-2 SQL Server的資料庫結構 6-3 建立使用者資料庫
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
学习目标 1、什么是表连接 2、表连接类型 3、表连接区别.
查询与视图 蔡海洋.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
附錄D Access應用說明 主從式資料庫系統 - 附錄D.
本讲内容 SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能.
8 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
資料庫系統  Database System 施莉萍 2017/12/28.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
数据分析工具 第10节.
模块六 数据库管理软件——Access 2010.
第4章 数据查询.
第 9 章 查詢資料- 善用 SELECT 敘述.
Presentation transcript:

第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢

18-1 SQL語言的基礎 18-1-1 SQL結構化查詢語言 18-1-2 Access查詢物件的SQL檢視

18-1-1 SQL結構化查詢語言-說明 「SQL」(Structured Query Language)為「ANSI」(American National Standards Institute)標準的資料庫語言,可以用來存取和更新資料庫的記錄,這是目前關聯式資料庫系統主要支援的資料庫語言。 早在1970年,E. F. Codd建立關聯式資料庫觀念,同時就提出一種構想的資料庫語言,這是一種完整和通用的資料存取方式,雖然當時並沒有真正建立語法,但這便是SQL的源起。

18-1-1 SQL結構化查詢語言-種類 SQL語言依指令功能可以分成3種語言,如下所示: 資料定義語言(Data Definition Language):屬於資料表建立、新增索引和定義欄位等SQL指令。 資料操作語言DML(Data Manipulation Language):屬於資料表記錄插入、刪除、更新和查詢指令。 資料控制語言DCL(Data Control Language):屬於資料庫安全設定和權限管理的相關指令。

18-1-1 SQL結構化查詢語言-指令 SQL資料操作指令共有4個基本指令,如下表所示:

18-1-2 Access查詢物件的SQL檢視 在Access可以使用精靈或設計檢視來建立查詢物件,事實上,查詢物件還提供SQL檢視,可以直接輸入SQL指令來建立查詢物件。

18-2 SQL的查詢指令 18-2-1 SELECT指令設定查詢範圍 18-2-2 WHERE條件子句 18-2-3 AND與OR多條件查詢 18-2-4 ORDER BY排序子句 18-2-5 BETWEEN/AND資料範圍子句 18-2-6 IN和NOT運算子 18-2-7 SQL的聚合函數

18-2 SQL的查詢指令 SQL查詢指令只有SELECT指令,其完整的指令語法如下所示: SELECT column1, column2 FROM table WHERE conditions 上述SELECT指令的column1~2為記錄欄位,table為資料表,conditions為查詢條件,這個指令使用口語來說是「從資料表table取回符合WHERE條件所有記錄的欄位column1和column2」。

18-2-1 SELECT指令設定查詢範圍- 顯示資料表的部分欄位 SQL指令只顯示【產品資訊】資料表的【產品編號】、【產品名稱】和【定價】欄位,如下所示: SELECT 產品編號, 產品名稱, 定價 FROM 產品資訊

18-2-1 SELECT指令設定查詢範圍- 顯示資料表的所有欄位 SQL指令可以顯示產品資訊資料表的所有欄位和記錄,如下所示: SELECT * FROM 產品資訊

18-2-1 SELECT指令設定查詢範圍- 欄位沒有重複值 資料表記錄的欄位如果有重複值,即欄位(單一欄位)中的資料重複,擁有相同值,在SELECT指令只需加上DISTINCT指令,就只會顯示其中一筆記錄資料。 在【產品資訊】資料表顯示一共有多少種不同的【定價】,如下所示: SELECT DISTINCT 定價 FROM 產品資訊

18-2-2 WHERE條件子句-說明 SELECT指令的WHERE條件子句是查詢主角,在SELECT指令指定查詢哪個資料表和哪些欄位,然後讓WHERE子句條件篩選查詢條件的記錄。 WHERE條件的欄位值可以是文字、數值或日期/時間,使用的運算子,如下表所示:

18-2-2 WHERE條件子句-條件值為字串 條件值為字串

18-2-2 WHERE條件子句-包含子字串1 包含子字串 LIKE包含運算子只需包含的子字串就符合條件,而且還可以進一步配合萬用字元建立字串範本(Pattern)來進行比對,如下表所示:

18-2-2 WHERE條件子句-包含子字串2 查詢產品說明擁有子字串"5"的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 產品說明 LIKE '*5*' 查詢產品名稱是以任何字串開頭,中間為"-",結尾為"GB"的SQL指令,如下所示: WHERE 產品名稱 LIKE '*-?GB' 查詢入庫日期(日期/時間資料類型也可以使用萬用字元)是以子字串"200"開頭,月份是任易一個數字,其SQL指令如下所示: WHERE 入庫日期 LIKE '200?/#/*'

18-2-2 WHERE條件子句-條件值為數值 WHERE條件如果為數字欄位就不需要使用單引號括起,可以使用的運算子和範例,如下表所示:

18-2-2 WHERE條件子句-條件值為日期/時間

18-2-3 AND與OR多條件查詢-AND「且」運算子 AND運算子連接的前後條件都必須同時成立,整個條件才成立,即都為「真」(True),才是「真」(True)。 查詢產品資訊的入庫日期包含"6",且產品名稱有"Nano"子字串的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 入庫日期 LIKE '*6*' AND 產品名稱 LIKE '*Nano*'

18-2-3 AND與OR多條件查詢-OR「或」運算子 OR運算子連接的前後條件只需任何一個條件成立即可,也就是說,只需其中之一為「真」(True),就為「真」(True)。 查詢產品資訊的產品名稱包含"Nano"或定價大於5000的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 產品名稱 LIKE '*Nano*' OR 定價>5000

18-2-3 AND與OR多條件查詢-複雜的WHERE條件子句 WHERE條件如果需要連接3、4個或以上的條件,在WHERE條件可以同時使用AND和OR連結多個不同條件。 查詢產品資訊的產品名稱有"Nano"子字串或入庫日期有"7"子字串,而且定價大於等於5000,其SQL指令如下所示: SELECT * FROM 產品資訊 WHERE 產品名稱 LIKE '*Nano*' OR 入庫日期 LIKE '*7*' AND 定價>=5000

18-2-3 AND與OR多條件查詢-擁有括號的WHERE條件子句 查詢產品資訊的產品名稱有"Nano"子字串或入庫日期有"7"子字串,這2個條件使用括號括起,而且定價需要大於等於5000的記錄,其SQL指令如下所示: SELECT * FROM 產品資訊 WHERE (產品名稱 LIKE '*Nano*' OR 入庫日期 LIKE '*7*') AND 定價>=5000

18-2-4 ORDER BY排序子句-由小到大排序 在SQL指令只需加上ORDER BY子句指定排序欄位,就可以由小到大進行排序。 查詢定價大於等於3500元的記錄,並且使用定價欄位由小到大進行排序的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 定價>=3500 ORDER BY 定價 ASC

18-2-4 ORDER BY排序子句-由大到小排序 如果排序順序需要倒過來由大到小,只需在ORDER BY子句的最後加上DESC指令。 查詢定價大於等於3500元的記錄,並且使用定價欄位由大到小進行排序的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 定價>=3500 ORDER BY 定價 DESC

18-2-5 BETWEEN/AND資料範圍子句 BETWEEN AND子句可以定義SELECT指令WHERE條件子句的範圍,範圍值可以使用文字、數值或日期/時間。 查詢2006年1月1日到12月31日入庫產品記錄的SQL指令,如下所示: SELECT * FROM 產品資訊 WHERE 入庫日期 BETWEEN #2006/1/1# AND #2006/12/31# 查詢定價在5000到10000之間的產品資訊,其SQL指令如下所示: WHERE 定價 BETWEEN 5000 AND 10000

18-2-6 IN和NOT運算子-IN運算子 IN運算子 IN運算子可以設定一串文字或數值清單,如果欄位值為其中之一就符合條件。 查詢定價3000、7000和7500的產品資料,其SQL指令如下所示: SELECT * FROM 產品資訊 WHERE 定價 IN (3000, 7000, 7500)

18-2-6 IN和NOT運算子-NOT運算子 NOT運算子 NOT運算子可以搭配前述子句,取得與條件相反的查詢結果,如下表所示: 查詢除了一些特定的定價外的產品記錄資料,SQL指令如下所示: SELECT * FROM 產品資訊 WHERE 定價 NOT IN (3000, 7000, 7500)

18-2-7 SQL的聚合函數-說明 SQL的聚合函數可以進行資料表欄位的筆數、平均、範圍和統計函數,提供進一步欄位資料的分析結果,如下表所示:

18-2-7 SQL的聚合函數-Count()函數

18-2-7 SQL的聚合函數-Avg()函數 Avg()函數可以計算數字欄位的平均值,如下表所示:

18-2-7 SQL的聚合函數-Max()函數 Max()函數可以找出符合條件記錄中的欄位最大值,如下表所示:

18-2-7 SQL的聚合函數-Min()函數 Min()函數可以計算符合條件記錄的欄位最小值,如下表所示:

18-2-7 SQL的聚合函數-Sum()函數 Sum()函數可以計算符合條件記錄的欄位總和,如下表所示:

18-3 SQL子查詢與合併查詢 18-3-1 SQL的子查詢 18-3-2 內部合併查詢INNER JOIN指令 18-3-3 外部合併查詢OUTER JOIN指令

18-3-1 SQL的子查詢 在SELECT指令的WHERE子句可以使用另一個SELECT指令查詢其他資料表的記錄,稱為「子查詢」(Subquery)。 在【學生】資料表使用姓名查詢學號,然後使用取得的學號在【選課】資料表查詢選課的記錄數,SQL指令如下所示: SELECT Count(*) FROM 選課資料表 WHERE 學號 = (SELECT 學號 FROM 學生資料表 WHERE 姓名='周傑倫')

18-3-2 內部合併查詢INNER JOIN指令-說明 SQL合併查詢指令是JOIN,可以將關聯式資料庫分割的資料表合併成未分割前的結果,以方便檢視所需的資訊。因為正規化的目的是為了避免資料重複,但是閱讀資訊時,重複資料反了容易閱讀。 SQL合併查詢分為:INNER JOIN和OUTER JOIN指令。INNER JOIN指令可以取回2個資料表都存在的記錄。

18-3-2 內部合併查詢INNER JOIN指令-範例1 查詢所有學生選課的課程編號資料,從學生資料表取得學號和姓名,選課資料表取得選課編號,關聯欄位是學號,SQL指令如下所示: SELECT 學生資料表.學號, 學生資料表.姓名, 選課資料表.課程編號 FROM 學生資料表 INNER JOIN 選課資料表 ON 學生資料表.學號 = 選課資料表.學號

18-3-2 內部合併查詢INNER JOIN指令-範例2 在上一個查詢物件只取得課程編號,請進一步使用合併查詢,取得【課程資料表】的所有欄位,SQL指令如下所示: SELECT 學生資料表.學號, 學生資料表.姓名, 課程資料表.* FROM 課程資料表 INNER JOIN (學生資料表 INNER JOIN 選課資料表 ON 學生資料表.學號 = 選課資料表.學號) ON 選課資料表.課程編號 = 課程資料表.課程編號

18-3-2 內部合併查詢INNER JOIN指令-範例3 在上一個查詢物件只取得教授編號,請進一步使用合併查詢,取得【教授資料表】的所有欄位,SQL指令如下所示: SELECT 學生資料表.學號, 學生資料表.姓名, 課程資料表.*, 教授資料表.* FROM 教授資料表 INNER JOIN (課程資料表 INNER JOIN (學生資料表 INNER JOIN 選課資料表 ON 學生資料表.學號 = 選課資料表.學號) ON 選課資料表.課程編號 = 課程資料表.課程編號) ON 教授資料表.教授編號 = 課程資料表.教授編號

18-3-3 外部合併查詢OUTER JOIN指令-說明 OUTER JOIN指令可以取回任一資料表的所有記錄,不論是否是2個資料表都存在的記錄,一共分成2種JOIN指令,如下所示: RIGHT JOIN:取回右邊資料表內的所有記錄。 LEFT JOIN:取回左邊資料表內的所有記錄。

18-3-3 外部合併查詢OUTER JOIN指令-範例1 從學生資料表取得學號、姓名,選課資料表取得選課編號,關聯欄位是學號,SQL指令如下所示: SELECT 學生資料表.學號, 學生資料表.姓名, 選課資料表.課程編號 FROM 學生資料表 LEFT JOIN 選課資料表 ON 學生資料表.學號 = 選課資料表.學號

18-3-3 外部合併查詢OUTER JOIN指令-範例2 查詢學生的選課資料,從學生資料表取得學號和姓名,課程資料表取得所有欄位,SQL指令如下所示: SELECT 學生資料表.學號, 學生資料表.姓名, 課程資料表.* FROM 課程資料表 RIGHT JOIN (學生資料表 INNER JOIN 選課資料表 ON 學生資料表.學號 = 選課資料表.學號) ON 選課資料表.課程編號 = 課程資料表.課程編號