MySQL入門:修訂版本之間的差異
出自六年制學程
(→操作整張資料表) |
(→使用資料表) |
||
第 37 行: | 第 37 行: | ||
*select name,phone from name a,phone b where a.id=b.id order by name | *select name,phone from name a,phone b where a.id=b.id order by name | ||
*select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id order by name | *select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id order by name | ||
+ | *select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id && name='丁志仁' order by name | ||
+ | *select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id && name like '陳%' order by name | ||
*一對多關係與多對多關係。 | *一對多關係與多對多關係。 |
2014年7月24日 (四) 15:19的修訂版本
工具
- 下載使用 EmEdit ,在 jendo.org/files/doc/et 中
- 完整講義
- 資料庫管理介面在:http://jendo.org/adminer-4.1.0-mysql.php
adminer介面介紹
- localhost是這一台機器的意思
- DB是 database (資料庫)的意思,想像是放一張張資料表的資料夾。
- 左側選單,上面選 DB 下面出現其中的資料表,每個資料表都有兩個連結。
- 右側選單最上方是「網站地圖」,提示使用者目前是在 adminer 中的那裡。
- 資料表是由欄和筆構成,請看範例。
- 「選擇資料」項下除了可以編、修現有各筆外,還有選擇、搜尋、排序三個子選項。
- 「顯示結構」與「修改資料表」兩項可以看和改資料表的欄位結構。
- 「新增項目」項可以插入一或數筆資料。
建資料表及欄位說明
- id欄,類型是tinyint,指tiny(小小)的int(整數)。只使用1個byte,而1byte有256個可能,如果是非負整數,可代表0~255。屬性unsigned是非負的意思,不存負值。
- name欄,類型是var(可變長度)的char(字元),也有人稱為vchar。記錄形式會用第一個byte記多長,然後再放實際的資料。MySQL4.1以前是用1個byte記錄長度,所以資料最長可到255個長度;MySQL4.2以後用2個byte來記錄資料長度,可記錄到65535個長度。在utf8中,每個中文字用掉3個byte(這樣才能簡中繁中日韓文都放在同一頁),不同於big5每個中文字只用2個byte。<br/>另外有一種char的類型,每個欄位長度是定長。排序規則/校對方式使用 utf8_general_ci,的意思是utf8是編碼。general_ci是校對排序方式,不同國家希望有不同的排序方式,而華文最喜歡的排序方式是general_ci(大體上照utf8本身的大小排序),這裡不用非負屬性,因為文字不需要正負。
- gender欄,類型是tiny(小小)的int(整數)。gender欄有註釋,解釋0和1各代表什麼意思。
- birthday欄,類型是用date,因為不一定所有的日期是合理的,尤其是閏年,用這個類型會幫你檢查,所以要定義好相關的適合型態。
操作整張資料表
- 轉移:「將資料表移動到(資料庫名.資料資料表名稱):」
- 複製:「將資料表複製到(資料庫名.資料資料表名稱):」(練習這個)
- 丟棄
- 清空
- 匯出sql:欄位結構和各筆資料
- 匯入sql:欄位結構和各筆資料
- 匯出csv:給 MySQL 取用;給 google 及 Excel 取用。
- 匯入csv:要刪去首列的欄名。
使用資料表
- select,delete,update是三個mySQL中最重要的指令
- 詳見「完整講義」的「第二部分/零/七、基本SQL命令/10~14」
- select 下條件及排序
- 正規化與非正規化的資料表
- select name,phone from name a,phone b where a.id=b.id order by name
- select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id order by name
- select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id && name='丁志仁' order by name
- select name,phone,email from name a,phone b,email c where a.id=b.id && b.id=c.id && name like '陳%' order by name
- 一對多關係與多對多關係。