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

Download Report

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

MySQL資料庫簡介
MySQL資料庫是關聯式資料庫管理系統
(relational database management
system)RDBMS,而且能夠使用標準的結構查
詢語言(SQL)。MySQL資料庫是目前市面上最
快速且最穩定的資料庫之一,而且他的價格也
是最便宜,甚至免費。在目前架設商業網站中,
PHP配上MySQL資料庫是使用最為廣範的,就
像是ASP.NET配上SQL SERVER一樣好用與
方便。資料庫系統扮演一個很重要的角色在資
料的管理和組織上。當我們有數百萬筆的交易
記錄,我們可以使用資料庫去作管理和組織,
然後再將資料作分析和使用。MySQL資料庫可
以幫助我們下列的一些工作。
1.
2.
3.
4.
5.
MySQL資料庫系統幫我們放置資料到資料庫系統中﹕MySQL將
資料透過其管理系統將資料放入磁碟中。
MySQL資料庫系統將我們需要的資料從資料庫系統取
出﹕MySQL透過資料庫系統將我們所需要的資料從磁碟取出。
例如select * from student就可以從student資料表取出所有學生的
資料,而這就是SQL結構查詢語言的語法。
MySQL資料庫可以彈性的取出所要資料﹕MySQL資料庫可以透
過結構查詢語言(SQL)彈性的取出資料。例如我們要取出成績高
於95分的學生select * from student where grade >90。
MySQL資料庫支援多人可以同時存取資料庫資料﹕在網路上可
能有數百人同時使用MySQL資料庫系統而存取相關資料,這時
我們的MySQL資料庫是有支援讓許多人同時存取。
MySQL資料庫支援遠端使用者透過網路來存取和傳送資料﹕我
們可以透過網路將資料庫的資料傳送出去,也可以將遠端的資
料傳送進來資料庫。
1-1MySQL資料庫概念
• MySQL是在網路上速度處
理很快的關聯式資料庫系
統,最重要的是免費,又
可以滿足台灣中小型企業
的需求。
• 我們先來看我們使用者是
如何存取資料庫。
• 簡單的MySQL資料庫系統
• 我們使用者使用資料庫系
統,管理資料庫系統,就
像是如圖中所示。
1-2MySQL是主從式資料庫
• 我們使用者可以經由
網路去讀取遠端的檔
案系統或者是資料庫,
當然也可以和遠端的
另外一位使用者溝通。
1-3資料庫管理系統與SQL語言
• 資料庫管理系統其實就是管理資料庫的軟體系統。
• <<1>>資料庫管理的基本功能
• 資料庫管理系統(DBMS)負責整個資料庫的建立、資料存取與權限設
定、資料的備份………….,而我們MySQL也是一個很好用的資料庫,
他也擁有資料庫的基本功能。
• 資料定義:定義並管理各類型資料欄。從建立資料庫及資料表欄位的
型別、功能以及資料表間的關聯性,都要具備完整的修改、建立及使
用功能。
• 資料安全:應具備設定使用者的帳號、密碼與權限,讓使用者能夠使
用授權範圍的資料。
• 資料備份:提供方便的資料庫備份功能。當資料庫當機或者資料毀損
時可以救回,讓我們的資料庫能夠更穩定更安全的使用,資料庫的資
料都可獲得保障。
• 資料處理:就是提供使用者,對資料的存取能力。如新增資料、修改
資料、撤除資料、與查詢資料。
• <<2>>SQL
• SQL稱為結構化查詢語言,他是ANSI
SQL92的標準語法,這也是關聯式資料庫
使用最多的語言。
1-4安裝MySQL
• 我們在安裝Linux光碟
時就有選定安裝
MySQL套件了,下面
是我們
• 在這裡講的是較為簡
單的安裝。
• 使用rpm –qa|grep
mysql就可以知道安裝
了哪一些MySQL的元
件。這是在Linux中所
查詢出的套件。
• MySQL資料庫有二進位檔binary、RPM檔
和原始檔的格式。Binary和RPM檔是比較
容易安裝,但是我們要使用其一開始就預
設的組態。原始檔是比較難安裝的,因為
我們在編譯軟體時需要同時設定組態和參
數。MySQL包含下列的原件,mysqld 伺服
器、使用者端程式(mysql,mysqladmin)及C
函式和標頭檔、文件、實驗資料庫和語文
的支援。
1-4-1使用rpm套件檔安裝
• 我們可以在http://www.mysql.com下載MySQL資料庫。我
們可以安裝RPM的檔案。MySQL的RPM檔案包括下列﹕
1.
2.
3.
4.
5.
MySQL-client-3.23.56-1.i386.rpm為使用者端的程式。
MySQL-3.23.56-1.i386.rpm為MySQL資料庫的主程式(伺服器端軟體)。
MySQL-Max-3.23.56-1.i386.rpm為主程式的附加程式。
MySQL-bench-3.23.56-1.i386.rpm為實驗和測試。
MySQL-shared-3.23.56-1.i386.rpm被分享的使用者端函式庫。
6. MySQL-devel-3.23.56-1.i386.rpm支援發展的使用者端程式
和標頭檔(假如我們要使用到這個Perl DBI程式來存取
MySQL資料庫,就會使用到這個套件。
• 我們可以使用rpm –i rpm檔案 來安裝MySQL的套件。首
先我們先安裝MySQL資料庫的使用者端程式。
• #rpm –i MySQL-client-版本.rpm
• 然後我們安裝MySQL的主程式
• #rpm -i MySQL-版本.rpm的主程式
• 如果我們要額外的程式,我們可以使用
• #rpm –i MySQL-Max-版本.rpm
• 假如我們要用使用端的程式支援,我們可以安裝發展套件
• #rpm -i MySQL-devel-版本.rpm
• 假如我們要從MySQL的來源套件檔中安裝,我們可以使
用
• #rpm –recompile MySQL-版本.src.rpm
1-4-2使用原始檔安裝
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
MySQL的原始檔命名為mysql-版本.tar.gz。板本就是mysql資料庫的版本編號。例如﹕mysql-3.23.56-pc-linuxi686.tar.gz中3.23.56就是我們MySQL原始檔的版本編號。版本為4開頭的版本為我們MySQL最新發展的版本,目前
一般大眾還是使用3.23.**的為主。
% tar zxf mysql-版本.tar.gz 來解開MySQL資料庫的壓縮
當我們解開壓縮時再進入到mysql的目錄
% cd mysql-版本
在我們安裝前我們要組態和編譯mysql的檔案,我們使用configure組態指令來組態MySQL資料庫。./指的是在目前
這個目錄執行。
%./configue
我們在組態mysql的同時可以指定一些參數,我們可以用下列的指令。
%./configure --help
下列為一些常用的組態參數﹕
--with-innodb為支援InnoDB資料表,--without-innodb為不支援InnoDB資料表,在MySQL 4資料庫中InnoDB資料表
是內建的。
--with-berkeley-db包含支援BDB資料表。
--without-server 僅支援組態使用者端的MySQL環境,我們透過使用者端的MySQL環境和遠端的MySQL資料庫作聯
結。
--with-embedded-server建立崁入式伺服器函式libmysqld。
--prefix=path_name 預設安裝MySQL資料庫的根目錄為/usr/local。當我們要組態其安裝路徑在/usr/local/mysql的位
置時可以使用下列﹕
%./configure –prefix=/usr/local/mysql
--localstatedir=path_name這個選項是改變資料目錄的路徑,假如我們不想將我們的資料庫資料放在安裝的根目錄下,
我們可以使用這個指令選項。
--with-low-memory選項可以讓我們編譯MySQL資料庫的sql/sql_yacc.cc檔案更加方便。
• 組態範例﹕我們可以組態有支援交易機制的資料庫innodb,
而且將MySQL的安裝路徑放置到/usr/local/mysql的目錄下,
並且改變放置MySQL資料庫的地方為/home的目錄底下。
• %./configure --with-innodb --prefix=/user/local/mysql -localstatedir=/home
• 在我們執行組態configure指令後 ,我們可以編譯和安裝
MySQL資料庫。
• %make
• %make install
• 假如在組態時,我們沒有使用—prefix選項,我們就必需
以超級使用者root的身份來執行安裝的動作。
1-5MySQL的檔案系統
•
•
•
•
•
•
•
•
•
•
•
我們的資料庫也是檔案系統的一部份,我們可以看一下linux的檔案系統結構。
/根目錄,是整個linux檔案系統的起點。
/bin 存放基本的linux指令
/dev 存放實際週邊裝置的特殊檔案。包括終端機檔ttyxx、軟碟fdxx、硬碟
hdxx、scsi(sdxx)
/etc 存放和系統有關的程式和檔案
/lib 是library的縮寫,放函式庫
/lost+found linux關機的時候,都會檢查整個檔案系統,如果有異常現象,就
會放在這裡。
/tmp 暫存區
/var 存放一些內容會常常改變的檔案,我們mysql的資料檔案就是放在這個目
錄下
/mnt 放置光碟機、軟碟機、作為外部檔案
/usr 存放很多給使用者用的重要子目錄,而我們mysql的基礎目錄就放在這
裡。
• 遠端多位使用者透過
網路界面(TCP/IP)去
存取資料,再透過
MySQL伺服器系統的
管理來到MySQL的資
料目錄,而MySQL資
料目錄下存放著許多
不同的MySQL資料庫
資料,再到最底層的
MySQL資料表。
•
•
•
•
•
•
我們可以使用mysqladmin variable
來得到mysql相關的系統與環境變
數。
basedir是MySQL的基礎軟體放置
目錄,預設是放置在/usr目錄下。
datadir是MySQL的資料放置目錄,
預設是放置在/var/lib/mysql目錄下。
Language是放置MySQL的語言,
預設放在/usr/share/mysql/English/。
Pid_file是放置MySQL的行程編號,
預設是在
/var/run/mysqld/mysqld.pid。
tmpdir是放置MySQL的暫存檔,預
設是在/tmp目錄下。
• 在Linux中啟動MySQL資料庫。
• 一般在安裝MySQL其啟動程式為mysql.server,
它是在/usr/share/mysql目錄下,下面的指令可
以啟動mysql。
• #/usr/share/mysql/mysql.server start
• 如果我們要在電腦啟動時自動啟動MySQL我們
可以設定。
• #chkconfig mysqld on
1-6MYSQL的資料目錄
• 內建的資料目錄位置是編
譯到伺服器中的。若由
source套件編譯安裝,就
要看我們所安裝的路徑。
如果是rpm套件或是原本
光碟安裝作業系統時,檔案
目錄是/var/lib/mysql。這
個目錄下一開始存放著我
們的原始資料庫,有
mysql資料庫和test資料庫。
• 這是我們到mysql資料庫
底下所看到的檔案。其中
*.frm為格式檔,他描述了
資料表的結構(例如欄位、
欄位型式、索引);*.myd
為資料檔,他描述了資料
表的資料實體(entity);
*.myi他描述了資料檔案的
索引。
• Mysql資料庫是MySQL預
設的資料庫裡面存放著著
MySQL使用者的權限與安
全。
• Mysql資料庫中有六個資
料表,db、host、user、
tables_priv、func、
colums_priv。
• 其中user、host、db三個
資料表控制使用者、使用
者來源,即對伺服器的控
制;tables_priv、
columns_priv則對資料庫
中的資料表設定權限,
func資料表則是功能的設
定。
• 進入mysql後,我們使
用mysql資料庫。
• Mysql>use mysql;
• 再用describe指令就可
以顯示出資料表欄位
的情況。
1-7對MySQL的存取概念
• 我們的資料組成資料
表(table),再由數個資
料表組成資料庫,再
由數個資料庫組成一
個檔案系統,再由我
們的資料庫伺服器來
作管理,這顯示了資
料庫的階層。
• 因為在MySQL資料庫
常駐行程mysqld或
mysql.server啟動後,
它就會讀取/etc/my.cnf
的設定,所以我們可
以在/etc/my.cnf來設定
MySQL的選項設定。
我們可以編輯
/etc/my.cnf的檔案。
• 這裏是Feodra Linux中設
定了我們MySQL的一些選
項設定。
• user=mysql是設定mysql
為使用者帳號,並且管理
MySQL資料庫。
• datadir是MySQL的資料放
置目錄,預設是放置在
/var/lib/mysql目錄下。
• Pid_file是放置MySQL的
行程編號,預設是在
/var/run/mysqld/mysqld.pi
d。
1-8資料庫的組成
• 資料庫是由數個資料
表所組成。
• 例如nuke資料庫是由
這些資料表所組成。
• 而資料表由數個欄位
(Field)所組成,其中
nuke_access資料表的
欄位有access_id和
access_title。
• 我們輸入status就可以
看到MySQL資料庫的
狀態。