MySQL資料庫教學 - Java2物件導向

Download Report

Transcript MySQL資料庫教學 - Java2物件導向

SQL資料定義語言
資料定義語言DDL(data
definition language)就是定
義資料庫的schema(輪廓),
通常由資料庫的管理者或設
計師所使用。通常資料庫管
理系統都會有資料定義語言
的編譯器來處理資料定義的
敘述,而且將schema的描
述儲存在資料庫管理系統。
1-1建立、移除、與選擇資料庫
• 我們使用create database 資料庫名稱來建
立一個新的資料庫
• 語法:create database 資料庫名稱
• 在MySQL中使用create敘述來建立資料庫
• 我們使用use敘述作為連線到server的資料
庫
• 語法:use database 資料庫名稱
• 我們使用drop來移除資料庫
• 語法:drop database 資料庫名稱
• 使用drop敘述來建立資料表
• 我們使用show來顯示資料庫或資料表,show
databases就可以顯示所有資料庫。
1-2資料表的組成
• 資料表示由資料所組
成,第一列為欄位(屬
性),其它為放置資料
的列
• 在下列表格中姓名、
電話、住址、年齡、
性別、編號,為資料
表的欄位(屬性),而資
料則為資料列(存放資
料的地方)
• 使用describe 資料表
名稱 就可以顯示資料
表的所有欄位
• 指令:
• describe tutor
1-3資料的型態
• 由這個表格來看,姓名是
字串、電話是字串(或數值
都可)、住址是字串、年齡
是數值、性別是字串或布
林、編號是數值(且自動累
加)。
• 因此當我們要建立表格時
就要設定欄位的資料型態。
MySQL資料庫資料的形態
有數值資料、字串資料和
日期時間資料。MySQL認
識數種資料型態。
1-3-1數值資料
• 數值是一種型態,像1、
12、15.362,MySQL
可以了解一般的浮點
數或整數資料型態,
數值是指可以數的數,
可以用來加減乘除的
數。通常年齡、編號、
價格、數量與帳目都
是使用數值形態來定
義。
• 數值欄位型態:
• 整數(INT):使用沒有小數部分的數字,如5,
25,555
• 浮點數(FLOAT):包含小數部分的數字,如
1.11132、3.3566、1.12
1-3-2字串型態
• 字串像是”王大名”、”黃大
名”、”大安區”,我們可以
用雙引號或雙引號包圍字串,
字串就是由數個文字所組成,
而文字的限制長度則和所定義
的文字有關。人的名稱、商品
名稱、地址、電話、信用卡號
與區域通常都是設定為字串型
態。
• 我們可以使用一些跳脫字
(escape)以顯示一些特殊字元,
每一個跳脫字都以一個反斜線
(‘\’)作開始,表示後面一個字元
暫時脫離一般規則。
• 這是MySQL常用的字
串型態。
1-3-3日期型和時間型資料型態
• MySQL的日期與時間
型欄位型態,在表示
時間的值方面,
MySQL提供日期、時
間與自動日期紀錄年
份的類型。日期通常
用來記錄我們交易的
日期與時間點,我們
可以按照日期來排列
事件所發生的先後順
序。
1-4建立、索引與修改、刪除資料表
• 我們可以建立、索引與修改、刪除資料表。
1-4-1建立資料表並索引
• 我們使用create來建立資料表
語法:create table 資料表名稱
( 欄位名稱 資料型態(資料大小),
欄位名稱 資料型態(資料大小),
欄位名稱 資料型態(資料大小),
欄位名稱 資料型態(資料大小),
…………………………………
primary key(欄位名稱) );
• 我們使用create來建立資料表,並用
primary key(欄位)來建立資料表的索引,資
料表的類型TYPE為MyISAM。
mysql>use tutorb;
mysql>create table student
->(number int not null,
->name char(20) not null,
->grade int not null,
->primary key(number)) TYPE=MyISAM;
• 在這裡number為數值
型態,name為字串型
態,grade為數值型態。
• 欄位有三個,分別是
number,name,及
grade,而primary key
為number
1-4-2修改資料表
• 修改資料表,使用alter指令
• 如果要修改資料表欄位我們可以用alter
table指令。
• 語法:
• alter table 資料表名稱
• change column 欄位名稱
• 欄位名稱 資料型態;
• 修改student資料表的
欄位,我們將number
欄位修改成
auto_increment自動
遞增。
• 自動遞增序號欄位,使用
auto_increment。
• 語法:
• 欄位名稱 資料型態
auto_increment;
• 讓指定欄位的編號自動遞
增。我們使用number int
primary key
auto_increment來指定讓
number欄位的數值自動遞
增。
• project資料表的
number是主鍵,其為
自動遞增。
• 這是goddess的資料庫,
jig的資料表,其數字
編號是自動遞增的。
• 要新增資料表欄位
• 我們使用alter指令來增加資料表欄位
語法:
alter table 資料表名稱
add column 欄位名稱 資料型態
• 我們修改student資料表並且新增電話
phone欄位為字串型態。
• 我們使用describe
student來描述還未新
增資料欄位的student
資料表。
• 我們用alter指令add增
加欄位phone為字串型
態。
• 如果要刪除資料表的欄位也是用alter指令
語法:
alter table 資料表名稱
drop column 欄位名稱
• 這時還未修改前的
student資料表。
• 我們使用alter指令將
年級grade給drop去掉,
這是去掉drop年級
grade後所顯示的欄位。
1-4-3刪除資料表
• 我們可以使用drop指
令來刪除資料表
• 使用drop指令將資料
表給刪除了
1-4-4建立資料表間的關聯
• 關聯式資料庫,目前
發展與運用比物件導
向資料庫運用與發展
更為方便。
• 這是兩個資料表,一個是部門資料表,一個是部門所在位
置資料表。這兩個資料表有編號關係,部門所在位置的編
號為foreign key而被參考的部門資料表的編號為primary
key。
• Primary key:限制欄位的值必須要唯一的,而且不能沒
有資料
• Foreign key:限制欄位的值必須是來自於其所參考的資料
表,使用null可以避免造成資料關聯不完整
• unique:欄位值必須是唯一的,不允許在同一個資料表中
出現。
• 因為部門所在位置表是參考到部門資料表(雖然兩者
number都是唯一的),所以部門位置資料表的number為
foreign key而部門資料表的number為被參考的。
語法:
foreign key(欄位名稱) references 其他資料表(欄位名稱)
• 我們在depart_location資
料表中使用foreign
key(number) references
depart(number)來將
depart_location的number
資料表欄位參考depart資
料表的number欄位。
• depart和depart_location
藉著編號建立關聯性,當
部門資料表的編號改變時,
部門位置資料表的值也會
改變,這就是關聯。
1-4-5多重欄位索引
• 當我要設定一個以上
的資料欄位共同為主
索引時
• 在下面我們使用
primary key(essn,pno)
將essn和pno欄位當作
主索引值,也就是多
重欄位索引。
• 我們用括號將兩個要
索引的欄位放在裡面。
• 使用constraint給予欄
位名稱。