資料庫管理 Database Managent Ex.1-2 課本範例練習

Slides:



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

公文寫作 演講人 高 文 民.
第6章: 完整性与安全性 域约束 参照完整性 断言 触发器 安全性 授权 SQL中的授权.
肝硬化病人的护理 上海交通大学医学院附属瑞金医院 吴蓓雯.
第五章 中国的传统伦理道德 中国是一个重视伦理道德的国家,几千年来,伦理道德思想在中国文化中居于中心地位。伦理道德不仅体现于个人的思想品德、行为规范之中,而且和国家、社会的政治生活、经济生活等各方面都有联系。
資料庫管理 Database Management 建立銀行資料庫及查詢範例
日月光·伯爵居项目介绍.
香港故事之 三年零八個月的艱苦歲月 組員: 梁珮瑩 吳遠莉 李琪 李青儀 方松皓.
地方教育發展基金簡介 新北市政府教育局 王麗真
谁动了我的CK? + BY黄建建 谢宇 CAN HEAR 锐得PPT论坛整理
青春花季, 拒绝香烟! ——禁烟主题班会 2014年3月.
大 播 海 直.
紓壓腹部撇步 彭易璟 老師 第10組 4A055935林資淳 4A155002詹柏廷 497C0095林千慈 498J3041 郭人慈.
老人健康促進之 成效評估與展現 高雄市政府衛生局 李素華 2014/05/15.
《解决问题能力》培训讲座.
我的故事 ————往事回首.
中信信诚-淮安项目.
郭子光教授从肺肾虚损辨治早中期慢性肾功能不全的经验
女生成功靠什么? 09英本四班 傅柏双.
散文選及習作 [墨池記] 曾鞏 國二甲 S 洪國勛 指導教授:胡翰平 老師.
国际投资环境罗氏评级法 美国.
社会保障学 第5章 失业保险.
开题报告.
战争结束了 年11月,听到停战的消息,巴黎街头人们欣喜若狂。法国总理克里孟梭说:“吻我的姑娘有500多个了。”
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
主 题 班 会 团 结   协 作    力 量.
理想.
固定与搬运技术 义乌市中心医院 陈红卫.
南投縣永昌國小 自衛消防編組訓練.
中国企业社会责任探讨 2010思政四组
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
案例分析 胎记美容记 第6小组
辦理建教合作注意事項 國立台灣師範大學 鄭慶民
“差异适应性”教学子模式之语文作文 改变一点点 吴家山第三中学 八年级语文组 张向华.
五-4 台灣的生活禮俗 組員:603 15號 黃醴萬 6號 吳家熙 5號 楊証傑 11號 李偉新.
資料庫管理 資管二 賴柏融.
PL/SQL程序设计 过程, 函数 Trigger 对象关系数据库技术.
人生五色臉 年輕十歲必學的小動作,九個保持身體健康的的小訣竅 人們常在不經意間做些小動作,並認為這是身體的本能反應,
创办紫金矿业学院 为培养中国一流的矿业人才助力 ——合作创办紫金矿业学院的思路与实践
实践 课题 周围环境对当代大学生成长的影响 指导老师:王永章 小组成员:陈荣、刘若楠、张红艳、吕雪丹、樊金芳、李惠芬、黄婧
大学生职业规划 学校:广东技术师范学院 学院:外国语学院 班级:11级英语商务班 姓名:刘付敏.
学籍异动学生选课辅导 学年第1学期.
最後,是什麼決定一個領導者的成敗 這是一步思考與行動指南
關聯式資料庫.
第六章 學習SQL語言.
9 SELECT敘述的進階查詢 9-1 SQL的多資料表查詢 9-2 合併查詢 9-3 集合運算查詢 9-4 子查詢
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
Chap 10 SQL定義、操作與控制指令.
資料庫安全 (Database Security)
減少員工對資訊科技的抗拒 指導老師: 楊泰和老師 組員: 王景弘 4990L050 邱紹瑋 4990L073 林建良 4990L006
《第二組》 組長/謝佳馨 組員/陳大為、葉容政、張智陪
第三章作业讲评 文洁 2012/4/10.
SQL SERVER 一些经典语句 1.
暴力、草莽、土野、情色、權慾 —華西街的成人童話
國立東華大學試題 系所:資訊管理學系 科目:資料庫管理 第1頁/共4頁
建国以来,大陆对台政策 金亚丽 周莎 黄运娜.
刑事訴訟法 不受理.
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
Example: Banking Database
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
行政管理者 的素质要求 中南大学湘雅医院 李远斌
数据透视表与SQL典型应用 ——数据分析人士必杀技
查询与视图 蔡海洋.
SQL查询语句 蔡海洋.
本讲内容 SQL 概述 SQL 的查询功能 SQL 的操作功能 SQL 的定义功能.
批次請(休)假單 功能路徑:[請假作業專區]→[批次請(休)假單] 功能說明:提供使用者線上申請/維護 多天、不連續請(休)假
基础信贷法律知识 讲解人:岳杨.
第4章 数据查询.
Presentation transcript:

資料庫管理 Database Managent Ex.1-2 課本範例練習 系級:物理四 學號:49814201 姓名:吳嘉峰 授課老師:楊維邦 教授 日期:2013/03/25

目錄 P. 2-45範例操作 P. 2-12範例操作 範例表格建立 P. 2-12表格建立 P. 2-43範例操作 CASE 1:一步到位 比較不同操作順序之速度 P. 2-12範例操作 合併表格

範例表格建立 P. 2-12表格建立

建立 Banking Database 資料庫 指令格式: CREATE DATABASE 資料庫名稱

建立 P. 2-12 表格 1. branch 2. Customer 3. Depositor 4. Borrower 5. Account 6. loan CREATE TABLE branch ( branch_name char((16), branch_city char(16) PRIMARY KEY(branch_name) ) 指令格式: CREATE TABLE 表格名稱 ( 欄位名稱1 資料型別(資料長度), 欄位名稱2 資料型別(資料長度) PRIMARY KEY(欄位名稱) ) 設為PRIMARY KEY 表示該欄位不得為空值 且為唯一

建立 P. 2-12 表格

輸入資料 新增多筆資料 指令格式: INSERT INTO `表格名稱` (`欄位1`, `欄位2`) VALUES (資料1, 資料2), (資料3, 資料4) 在表格branch中新增資料

檢視各表格中的資料

P. 2-43範例操作 CASE 1:一步到位

P. 2-43範例操作 – CASE 1 Find the name of all customers who have a loan at the Perryridge branch 指令語法: SELECT `欄位1`, `欄位2` FROM `資料表名稱` WHERE 敘述式

P. 2-43範例操作 – CASE 1 Customer_name Adams Hayes

P. 2-43範例操作 CASE 2:按部就班

P. 2-43範例操作 – CASE 2 First Step borroewr × loan SELECT * FROM `borrower`, `loan` ; #顯示borrower × loan的結果(Cartesian-Product)

First Step Result 8×7=56 tuples

P. 2-43範例操作 – CASE 2 Second Step σborrow.loan_number = loan.loan_number(borroewr × loan) SELECT * FROM `borrower`, `loan` WHERE borrow.loan_number = loan.loan_number; #顯示borrower × loan之後,loan_number相同的結果

Second Step Result customer_name loan_number branch_name amount Adams Perryridge 1300 Hayes L_15 1500 Jackson L_14 Downtown Jones L_17 1000 Smith L_11 Round Hill 900 L_23 Redwood 2000 Williams

P. 2-43範例操作 – CASE 2 Third Step σbranch_name =“perryridge” (σborrow.loan_number = loan.loan_number(borroewr × loan)) SELECT * FROM `borrower`, `loan` WHERE borrow.loan_number = loan.loan_number && branch_name = “Perrtridge”; #顯示borrower × loan之後,loan_number相同且branch_name = “Perryridge”的結果

Third Step Result customer_name loan_number branch_name amount Adams Perryridge 1300 Hayes L_15 1500

P. 2-43範例操作 – CASE 2 Final Step Πcustomer_name(σbranch_name =“perryridge” (σborrow.loan_number = loan.loan_number(borroewr × loan))) SELECT `customer_name` FROM `borrower`, `loan` WHERE borrow.loan_number = loan.loan_number && branch_name = “Perrtridge”; #在borrower × loan中尋找loan_number相同且branch_name = “Perryridge”的結果,最後顯示出customer_name欄位

Final Result customer_name Adams Hayes

P. 2-45範例操作 比較不同操作順序之 速度

電腦太快?! 查詢僅花費 0.0006 秒!

填入測試用亂數資料 Rand(); #隨機產生一個0~1之間的亂數 在表格loan中增加1000筆亂數資料

填入測試用亂數資料 在表格borrower中增加1000筆亂數資料

子查詢造成的欄位名稱衝突 子查詢: SELECT * FORM ( SELECT * FROM `表格1`)NewName #1060 – Duplicate column name “loan_number” 子查詢: SELECT * FORM ( SELECT * FROM `表格1`)NewName

What is better? Query 1 Average Access time = ? Πcustomer_name(σbranch_name = “Perryridge”(σborrower.loan_nimber = loan.loan_number(borrower×loan))) Query 2 Average Access time =? Πcustomer_name(σborrower.loan_nimber = loan.loan_number((σbranch_name = “Perryridge”(loan) )× borrower)) Ratio = ?

Query 1(先相乘表格再查詢) Step 1 查詢花費 0.1265 秒

Query 1(先相乘表格再查詢) Step 2 查詢花費 0.1073 秒

Query 1(先相乘表格再查詢) Final Step 查詢花費 0.1086 秒 SELECT `customer_name` FROM ( SELECT * FROM `borrower`, `loan` WHERE borrower.borrower_loan_number = loan.loan_number )step1 WHERE branch_name = "Perryridge";

Query 1 Average Access Time (0.1086 + 0.1066+0.1064) / 3 =0.1072 (sec) 0.1086 + 0.1066+0.1064 0.1086 + 0.1066 0.1086

Query 2(先查詢再相乘表格) Step 1 查詢花費 0.0011 秒

Query 2(先查詢再相乘表格) Step 2 查詢花費 0.0014 秒

Query 2(先查詢再相乘表格) Step 3 查詢花費 0.0033 秒 SELECT * FROM ( SELECT * FROM `loan` WHERE branch_name = “Perryridge” )step1, `borrower` WHERE step1.loan_number = borrower.loan_number;

Query 2(先查詢再相乘表格) Final Step 查詢花費 0.0038 秒 SELECT `customer_name` FROM ( SELECT * FROM `loan` WHERE branch_name = “Perryridge” )step1, `borrower` WHERE step1.loan_number = borrower.borrower_loan_number;

Query 2 Average Access Time (0.0038 + 0.0024+0.0055) / 3 =0.0039 (sec) 0.0038 + 0.0024+0.0055 0.0038 + 0.0024 0.0038

Answer: Query 2 is better! Query 1 Average Access time = 0.1072 (sec) Πcustomer_name(σbranch_name = “Perryridge”(σborrower.loan_nimber = loan.loan_number(borrower×loan))) Query 2 Average Access time =0.0039 (sec) Πcustomer_name(σborrower.loan_nimber = loan.loan_number((σbranch_name = “Perryridge”(loan) )× borrower)) Ratio = 0.1072/0.0039 ≒ 27.5 ! 勝

P. 2-12範例操作 合併表格

合併結果

使用語法:LEFT JOIN ON

使用語法:LEFT JOIN ON

The End. Thank you!