SlideShare a Scribd company logo
1 of 52
MySQL 入門介紹

                 Stanley Huang
            wenlien1001@gmail.com
                    lab files:
https://dl.dropbox.com/u/17022391/MySQL/MySQL_basic_labfiles.tar.gz

                                                     1/52
大綱
•   資理庫基本觀念及 MySQL 安裝介紹
•   連線並建立資料庫
•   DML 資料管理語言
•   基礎查詢語法




                     2/52
資理庫基本觀念及
MySQL 安裝介紹




         3/52
什麼是 MySQL?
•   開源的資料庫系統
•   關聯式資料庫
•   主從式架構
•   多使用者、多線性伺服器




                     4/52
資料庫正規化
• 什麼是資料庫正規化
     – 正規化是一個處理資料表的程序,其目的是為了建構
       出一個好的資料關連結構



                          客戶資料
客戶國籍 客戶名稱 統編    國碼    客戶電話      客戶電話      客戶地址 連絡人      聯絡分機
                      1         2
台灣    中山科技 1234 886   02-1234   02-1235   台北市      小明   888




                                                5/52
資料庫正規化的步驟與目的
• 第一正規化 (1NF) :去除重複群組

客戶國籍 客戶名稱 統編      國碼   客戶電話      客戶電話        客戶地址 連絡人      聯絡分機
                       1         2
台灣     中山科技 1234 886   02-1234   02-1235     台北市      小明   888



客戶國籍   客戶名稱 統編    國碼   客戶地址 連絡人        聯絡分機
台灣     中山科技 1234 886   台北市       小明    888


客戶國籍 客戶名稱 客戶電話
台灣     中山科技 02-1234
台灣     中山科技 02-1235
                                                   6/52
資料庫正規化的步驟與目的
• 第二正規化 (2NF) :去除部分依賴

 客戶國籍       客戶名稱 統編   國碼    客戶地址 連絡人   聯絡分機
 台灣         中山科技 1234 886   台北市   小明   888




 客戶國籍 客戶名稱 統編         客戶地址 連絡人
 台灣         中山科技 1234 台北市    小明

 國籍   國碼
 台灣   886


                                             7/52
資料庫正規化的步驟與目的
• 第三正規化 (3NF) :去除遞移依賴

 客戶國籍 客戶名稱 統編          客戶地址 連絡人     連絡分機
 台灣      中山科技 1234 台北市        小明    888




 客戶國籍    客戶名稱   統編      客戶地址 連絡人
 台灣      中山科技   1234    台北市    小明

 連絡人    連絡分機
 小明     888


                                           8/52
建立資料庫範例




          9/52
MySQL 版本
•   MySQL 社群伺服器 (MySQL Community Server)
•   MySQL 企業版 (MySQL Enterprise Edition)
•   MySQL 叢集伺服器 (MySQL Cluster)
•   MySQL 電信級叢集伺服器 (MySQL Cluster CGE)

CGE: Carrier Grade Edition




                               10/52
安裝 MySQL 的步驟
• 下載 MySQL (MSI 安裝檔 )
 http://www.mysql.com/downloads/mysql
• 執行安裝程式
• 設定 MySQL
• 測試資料庫




                                 11/52
練習一
• 從 MySQL 官方網站下載軟體並安裝
  MySQL Server 。
• 試說明資料表的三種正規化所代表的意義
  。
• 試繪出報價單的 ER Model 。




                12/52
連線並建立資料庫




       13/52
 常見的 MySQL 用戶端程式介
        紹
• mysql 用戶端程式
• MySQL workbench
• 跨平台且跨資料庫的開源用戶端程式
 – SQuirreL
• 第三方協力廠商軟體




                14/52
MySQL Workbench 介紹
• SQL 開發 (SQL Development)
• 資料模型 (Data Modeling)
• 系統管理 (Server Administration)




                             15/52
MySQL Workbench




             16/52
安裝 MySQL Workbench
• 下載 MySQL Workbench
 http://www.mysql.com/downloads/workbench
• 執行
• 設定連線
• 測試




                                17/52
資料庫組成關係圖
資料表                          資料



      ID   NAME SEX   AGE
      1    Tom M      10




           資料庫 A                     資料庫 B


                       MySQL 資料庫系統



                                        18/52
常見的 MySQL 儲存引擎
•   MyISAM
•   InnoDB
•   Memory
•   Merge
•   Archive
•   Federated
•   CSV
•   Blackhole
•   NDB

                  19/52
MyISAM
• MyISAM 儲存引擎最常被廣泛使用在
  Web ,資料倉儲的應用。
• 儲存M ySQL 設定的資料表,也是使用
  MyISAM 。
• 在 MySQL5.5 之前, MyISAM 是預設的儲
  存引擎。
• 支援全文檢索。


                      20/52
InnoDB
•   支援 ACID 。
•   支援交易。
•   支援外部鍵。
•   MySQL5.5 之後的預設儲存引擎。




                     21/52
Memory
• 將資料儲存在記憶體中,所以資料新增與
  查詢的速度很快。
• 資料庫重新後,資料會消失(只保存空的
  資料表),所以運用方面,通常都使用在
  資料表唯讀。




                22/52
Archive
• 提供資料壓縮。
• 在大量資料的儲存與查詢時, Archive 是常
  被使用的儲存引擎。
• 支援 insert/select ,不支援
  delete/update 。




                    23/52
CSV
• 資料檔案的形式即為 CSV 。




                    24/52
NDB
• MySQL 叢集伺服器 (MySQL Cluster
  Servers) 所使用的儲存引擎。




                         25/52
資料來源 : MySQL 官網 . http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html
                                                         26/52
建立資料的三個步驟
• 建立資料庫
• 建立資料表
• 輸入資料 ( 下節再介紹 )




                   27/52
建立資料庫語法
• 語法 :
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]
  db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

註 : 在 MySQL client 環境中 , 可以使用“ show
 databases” 來確認資料庫是否已經存在 .

                                    28/52
使用資料庫
• 在 mysql 用戶端程式,如果要使用資料庫,可以使用” use” 指令來切
  換資料庫。
  Ex.
  mysql> use pos;
  Database changed
  mysql> show tables;
  +---------------+
  | Tables_in_pos |
  +---------------+
  | company       |
  …
  | quotation     |
  +---------------+
  6 rows in set (0.06 sec)
  mysql>


                              29/52
建立資料表語法
• 語法 :
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
  tbl_name
    (create_definition,...)
    [table_options]

CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
  tbl_name
    [(create_definition,...)]
    [table_options]
    select_statement

註 : 在 MySQL client 環境中 , 記得先使用“ use
 [database]” 來切換資料庫 , 並用” show tables” 來確認資
                                  30/52
 料是否已存在 .
使用 MySQL Workbench
• 使用 MySQL Workbench 建立資料庫 / 表。




                       31/52
其它 DDL 資料定義語言
• ALTER – 變更資料 ( 庫 ) 的結構
• DROP – 從資料庫刪除資料表
• TRUNCATE – 從資料表中移除全部的資料
  , 同時也將資料所占用的磁碟空間釋放出來
• COMMENT – 將註記加到資料字典中
• RENAME – 重新命名資料表



                   32/52
練習二
• 從 MySQL 官方網站下載軟體並安裝
  MySQL Workbench 。
• 建立“報價單”資料表。
• 練習 DDL 指令。




                  33/52
DML 資料管理語言




         34/52
DML 資料管理語言
• Insert
• Update
• Delete




                35/52
輸入資料語法
• 語法 :
INSERT [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr |
  DEFAULT},...),(...),...

INSERT [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...

註 : 在 MySQL client 環境中 , 可以先使用“ desc
 [table]” 來確認資料表格式 .

                               36/52
Insert by Select
mysql> insert into target_table
  select * from source_table;




                            37/52
修改資料語法 ( 一 )
• 修改單一資料表資料的語法 :
UPDATE [LOW_PRIORITY] [IGNORE]
  table_reference
    SET col_name1={expr1|DEFAULT}
  [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
                           38/52
修改資料語法 ( 二 )
• 修改多重資料表資料的語法 :
UPDATE [LOW_PRIORITY] [IGNORE]
  table_references
    SET col_name1={expr1|DEFAULT}
  [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]



                           39/52
刪除資料語法 ( 一 )
• 刪除單一資料表資料的語法 :
DELETE [LOW_PRIORITY] [QUICK]
  [IGNORE] FROM tbl_name
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]


                           40/52
刪除資料語法 ( 二 )
• 刪除多重資料表資料的語法 :
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    tbl_name[.*] [, tbl_name[.*]] ...
    FROM table_references
    [WHERE where_condition]
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    FROM tbl_name[.*] [,
  tbl_name[.*]] ...
    USING table_references
    [WHERE where_condition]
                               41/52
練習三
• 練習 DML 資料管理語言。




                   42/52
基礎查詢語法




         43/52
查詢語法
• 語法 :
SELECT
    [ALL | DISTINCT]
select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
       [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
       [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET
  offset}]



                                           44/52
資料欄位語法 ( 一 )
• 關於資料欄位的語法
select * from customer;
select name, addr, contact from
  customer;
select name as n, addr as a contact
  as c from customer;



                           45/52
資料欄位語法 ( 二 )
• 計算資料數量
select count(*) from customer;
• 剃除重複資料
select distinct addr from customer;




                           46/52
查詢條件語法
• 限制查詢條件或資料筆數的語法
select * from customer where
  addr=‘Taipei’;
select * from customer where addr
  like ‘Tai%’;




                           47/52
限制資料行數
• 資料行數的限制
select * from customer limit 3;
select * from customer limit 1,3;




                           48/52
資料排序語法
• 關於資料排序的語法
select * from product order by
  price;
select * from product order by
  price desc;




                           49/52
資料群組語法
• 關於資料群組的語法
select addr, count(addr) from
  customer group by addr;
select addr, count(addr) from
  customer group by addr having
  count(addr)>2;

註:集合函數 count, sum, min, max, avg 常搭配群組語法一併使用


                                    50/52
練習四
• 練習 select 語法,將報價單所需的資料查
  詢出來。




                   51/52
Q&A




      52/52

More Related Content

What's hot

真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025maclean liu
 
Discuz技术交流
Discuz技术交流Discuz技术交流
Discuz技术交流pigso
 
16 CoreData
16 CoreData16 CoreData
16 CoreDataTom Fan
 
深入了解Memcache
深入了解Memcache深入了解Memcache
深入了解Memcachezubin Jiang
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案maclean liu
 
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gOracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gChien Chung Shen
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and DesignHo Kim
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)frogd
 
PostgreSQL 10 New Features
PostgreSQL 10 New FeaturesPostgreSQL 10 New Features
PostgreSQL 10 New FeaturesJosé Lin
 
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术团队
 
Programming python - part 2
Programming python - part 2Programming python - part 2
Programming python - part 2Che-Cheng Hsu
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研lorisjand
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇小新 制造
 
My sql explain & select
My sql explain & selectMy sql explain & select
My sql explain & selectMing-Ying Wu
 
Raising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi LuRaising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi Lu郁萍 王
 

What's hot (20)

真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025
 
Discuz技术交流
Discuz技术交流Discuz技术交流
Discuz技术交流
 
16 CoreData
16 CoreData16 CoreData
16 CoreData
 
Mysql集群
Mysql集群Mysql集群
Mysql集群
 
深入了解Memcache
深入了解Memcache深入了解Memcache
深入了解Memcache
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
 
Asm+aix
Asm+aixAsm+aix
Asm+aix
 
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gOracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 
Web Caching Architecture and Design
Web Caching Architecture and DesignWeb Caching Architecture and Design
Web Caching Architecture and Design
 
MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)MySQL InnoDB 源码实现分析(一)
MySQL InnoDB 源码实现分析(一)
 
PostgreSQL 10 New Features
PostgreSQL 10 New FeaturesPostgreSQL 10 New Features
PostgreSQL 10 New Features
 
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践
 
Programming python - part 2
Programming python - part 2Programming python - part 2
Programming python - part 2
 
Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研Jdbc4 0 规范技术预研
Jdbc4 0 规范技术预研
 
Altibase管理培训 安装篇
Altibase管理培训 安装篇Altibase管理培训 安装篇
Altibase管理培训 安装篇
 
My sql explain & select
My sql explain & selectMy sql explain & select
My sql explain & select
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
Oracle SGA 介紹
Oracle SGA 介紹Oracle SGA 介紹
Oracle SGA 介紹
 
Raising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi LuRaising The MySQL Bar-Manyi Lu
Raising The MySQL Bar-Manyi Lu
 

Similar to MySQL入門介紹

百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层yp_fangdong
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规isnull
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规mysqlops
 
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Yousri Yan
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110bngoogle
 
D baa s_in_xiaomi
D baa s_in_xiaomiD baa s_in_xiaomi
D baa s_in_xiaomihdksky
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践锐 张
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
Mysql 培训-优化篇
Mysql 培训-优化篇Mysql 培训-优化篇
Mysql 培训-优化篇sunmonth
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介Herman Wu
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 Chao Zhu
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统klandor
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析iammutex
 
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Wade Huang
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作Shengyou Fan
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨Chao Zhu
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 

Similar to MySQL入門介紹 (20)

百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
 
Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
D baa s_in_xiaomi
D baa s_in_xiaomiD baa s_in_xiaomi
D baa s_in_xiaomi
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
基于My sql的分布式数据库实践
基于My sql的分布式数据库实践基于My sql的分布式数据库实践
基于My sql的分布式数据库实践
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
Mysql 培训-优化篇
Mysql 培训-优化篇Mysql 培训-优化篇
Mysql 培训-优化篇
 
Azure Data Lake 簡介
Azure Data Lake 簡介Azure Data Lake 簡介
Azure Data Lake 簡介
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
数据架构方面的一些探讨
数据架构方面的一些探讨数据架构方面的一些探讨
数据架构方面的一些探讨
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 

MySQL入門介紹

  • 1. MySQL 入門介紹 Stanley Huang wenlien1001@gmail.com lab files: https://dl.dropbox.com/u/17022391/MySQL/MySQL_basic_labfiles.tar.gz 1/52
  • 2. 大綱 • 資理庫基本觀念及 MySQL 安裝介紹 • 連線並建立資料庫 • DML 資料管理語言 • 基礎查詢語法 2/52
  • 4. 什麼是 MySQL? • 開源的資料庫系統 • 關聯式資料庫 • 主從式架構 • 多使用者、多線性伺服器 4/52
  • 5. 資料庫正規化 • 什麼是資料庫正規化 – 正規化是一個處理資料表的程序,其目的是為了建構 出一個好的資料關連結構 客戶資料 客戶國籍 客戶名稱 統編 國碼 客戶電話 客戶電話 客戶地址 連絡人 聯絡分機 1 2 台灣 中山科技 1234 886 02-1234 02-1235 台北市 小明 888 5/52
  • 6. 資料庫正規化的步驟與目的 • 第一正規化 (1NF) :去除重複群組 客戶國籍 客戶名稱 統編 國碼 客戶電話 客戶電話 客戶地址 連絡人 聯絡分機 1 2 台灣 中山科技 1234 886 02-1234 02-1235 台北市 小明 888 客戶國籍 客戶名稱 統編 國碼 客戶地址 連絡人 聯絡分機 台灣 中山科技 1234 886 台北市 小明 888 客戶國籍 客戶名稱 客戶電話 台灣 中山科技 02-1234 台灣 中山科技 02-1235 6/52
  • 7. 資料庫正規化的步驟與目的 • 第二正規化 (2NF) :去除部分依賴 客戶國籍 客戶名稱 統編 國碼 客戶地址 連絡人 聯絡分機 台灣 中山科技 1234 886 台北市 小明 888 客戶國籍 客戶名稱 統編 客戶地址 連絡人 台灣 中山科技 1234 台北市 小明 國籍 國碼 台灣 886 7/52
  • 8. 資料庫正規化的步驟與目的 • 第三正規化 (3NF) :去除遞移依賴 客戶國籍 客戶名稱 統編 客戶地址 連絡人 連絡分機 台灣 中山科技 1234 台北市 小明 888 客戶國籍 客戶名稱 統編 客戶地址 連絡人 台灣 中山科技 1234 台北市 小明 連絡人 連絡分機 小明 888 8/52
  • 10. MySQL 版本 • MySQL 社群伺服器 (MySQL Community Server) • MySQL 企業版 (MySQL Enterprise Edition) • MySQL 叢集伺服器 (MySQL Cluster) • MySQL 電信級叢集伺服器 (MySQL Cluster CGE) CGE: Carrier Grade Edition 10/52
  • 11. 安裝 MySQL 的步驟 • 下載 MySQL (MSI 安裝檔 ) http://www.mysql.com/downloads/mysql • 執行安裝程式 • 設定 MySQL • 測試資料庫 11/52
  • 12. 練習一 • 從 MySQL 官方網站下載軟體並安裝 MySQL Server 。 • 試說明資料表的三種正規化所代表的意義 。 • 試繪出報價單的 ER Model 。 12/52
  • 14.  常見的 MySQL 用戶端程式介 紹 • mysql 用戶端程式 • MySQL workbench • 跨平台且跨資料庫的開源用戶端程式 – SQuirreL • 第三方協力廠商軟體 14/52
  • 15. MySQL Workbench 介紹 • SQL 開發 (SQL Development) • 資料模型 (Data Modeling) • 系統管理 (Server Administration) 15/52
  • 17. 安裝 MySQL Workbench • 下載 MySQL Workbench http://www.mysql.com/downloads/workbench • 執行 • 設定連線 • 測試 17/52
  • 18. 資料庫組成關係圖 資料表 資料 ID NAME SEX AGE 1 Tom M 10 資料庫 A 資料庫 B MySQL 資料庫系統 18/52
  • 19. 常見的 MySQL 儲存引擎 • MyISAM • InnoDB • Memory • Merge • Archive • Federated • CSV • Blackhole • NDB 19/52
  • 20. MyISAM • MyISAM 儲存引擎最常被廣泛使用在 Web ,資料倉儲的應用。 • 儲存M ySQL 設定的資料表,也是使用 MyISAM 。 • 在 MySQL5.5 之前, MyISAM 是預設的儲 存引擎。 • 支援全文檢索。 20/52
  • 21. InnoDB • 支援 ACID 。 • 支援交易。 • 支援外部鍵。 • MySQL5.5 之後的預設儲存引擎。 21/52
  • 22. Memory • 將資料儲存在記憶體中,所以資料新增與 查詢的速度很快。 • 資料庫重新後,資料會消失(只保存空的 資料表),所以運用方面,通常都使用在 資料表唯讀。 22/52
  • 23. Archive • 提供資料壓縮。 • 在大量資料的儲存與查詢時, Archive 是常 被使用的儲存引擎。 • 支援 insert/select ,不支援 delete/update 。 23/52
  • 25. NDB • MySQL 叢集伺服器 (MySQL Cluster Servers) 所使用的儲存引擎。 25/52
  • 26. 資料來源 : MySQL 官網 . http://dev.mysql.com/doc/refman/5.5/en/storage-engines.html 26/52
  • 28. 建立資料庫語法 • 語法 : CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name 註 : 在 MySQL client 環境中 , 可以使用“ show databases” 來確認資料庫是否已經存在 . 28/52
  • 29. 使用資料庫 • 在 mysql 用戶端程式,如果要使用資料庫,可以使用” use” 指令來切 換資料庫。 Ex. mysql> use pos; Database changed mysql> show tables; +---------------+ | Tables_in_pos | +---------------+ | company | … | quotation | +---------------+ 6 rows in set (0.06 sec) mysql> 29/52
  • 30. 建立資料表語法 • 語法 : CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] select_statement 註 : 在 MySQL client 環境中 , 記得先使用“ use [database]” 來切換資料庫 , 並用” show tables” 來確認資 30/52 料是否已存在 .
  • 31. 使用 MySQL Workbench • 使用 MySQL Workbench 建立資料庫 / 表。 31/52
  • 32. 其它 DDL 資料定義語言 • ALTER – 變更資料 ( 庫 ) 的結構 • DROP – 從資料庫刪除資料表 • TRUNCATE – 從資料表中移除全部的資料 , 同時也將資料所占用的磁碟空間釋放出來 • COMMENT – 將註記加到資料字典中 • RENAME – 重新命名資料表 32/52
  • 33. 練習二 • 從 MySQL 官方網站下載軟體並安裝 MySQL Workbench 。 • 建立“報價單”資料表。 • 練習 DDL 指令。 33/52
  • 35. DML 資料管理語言 • Insert • Update • Delete 35/52
  • 36. 輸入資料語法 • 語法 : INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... INSERT [INTO] tbl_name SET col_name={expr | DEFAULT}, ... 註 : 在 MySQL client 環境中 , 可以先使用“ desc [table]” 來確認資料表格式 . 36/52
  • 37. Insert by Select mysql> insert into target_table select * from source_table; 37/52
  • 38. 修改資料語法 ( 一 ) • 修改單一資料表資料的語法 : UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] 38/52
  • 39. 修改資料語法 ( 二 ) • 修改多重資料表資料的語法 : UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] 39/52
  • 40. 刪除資料語法 ( 一 ) • 刪除單一資料表資料的語法 : DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] 40/52
  • 41. 刪除資料語法 ( 二 ) • 刪除多重資料表資料的語法 : DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*]] ... FROM table_references [WHERE where_condition] DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[.*] [, tbl_name[.*]] ... USING table_references [WHERE where_condition] 41/52
  • 42. 練習三 • 練習 DML 資料管理語言。 42/52
  • 44. 查詢語法 • 語法 : SELECT [ALL | DISTINCT] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] 44/52
  • 45. 資料欄位語法 ( 一 ) • 關於資料欄位的語法 select * from customer; select name, addr, contact from customer; select name as n, addr as a contact as c from customer; 45/52
  • 46. 資料欄位語法 ( 二 ) • 計算資料數量 select count(*) from customer; • 剃除重複資料 select distinct addr from customer; 46/52
  • 47. 查詢條件語法 • 限制查詢條件或資料筆數的語法 select * from customer where addr=‘Taipei’; select * from customer where addr like ‘Tai%’; 47/52
  • 48. 限制資料行數 • 資料行數的限制 select * from customer limit 3; select * from customer limit 1,3; 48/52
  • 49. 資料排序語法 • 關於資料排序的語法 select * from product order by price; select * from product order by price desc; 49/52
  • 50. 資料群組語法 • 關於資料群組的語法 select addr, count(addr) from customer group by addr; select addr, count(addr) from customer group by addr having count(addr)>2; 註:集合函數 count, sum, min, max, avg 常搭配群組語法一併使用 50/52
  • 51. 練習四 • 練習 select 語法,將報價單所需的資料查 詢出來。 51/52
  • 52. Q&A 52/52

Editor's Notes

  1. Ref: ref_quotation.sql
  2. Windows 組態設定精靈 : Developer -> Multifunctional -> OLAP -> add firewall exception -> Best Support For Multilingualism -> check Include Bin Directory in Windows PATH -> Set password -> check Enable root access -> Execute
  3. ex_ERModel.pdf
  4. Ref: ref_create.sql
  5. Ref: ref_create.sql
  6. Ref: ref_ddl.sql
  7. Ref: ref_insert.sql
  8. Ref: ref_update.sql
  9. Ref: ref_delete.sql
  10. Ref: ref_basic_select.sql, ref_select_quotation.sql