2008年11月21日 星期五

2008酷學園群英會

一年一度的酷學園群英會又要到了 今年的主題是目前正夯的 "Green IT"


有興趣的朋友可以到 酷學園 網站報名

以下為活動內容:

活動日期:2008 年 12 月 20 日 (星期六)

地點:國立臺灣大學工學院應用力學研究所國際會議廳
   106 台北市羅斯福路4段1號



主辦單位:酷學園

友情贊助:台灣科技大學資訊工程系學會,光華 - 益大書局,鳥哥的 Linux 私房菜,魔力門,三秒練功房,FTUG

活動議程表:

時間 活動議程 講師
------------------------------------------------------------------------------------
08:00 ~ 08:30 入場
08:30 ~ 08:50 來賓致詞,活動簡介
08:50 ~ 10:40 企業IT環境部署虛擬化架構 - HOWTO Oreo & Thx
10:50 ~ 11:50 潔淨能源 - 風力發電與太陽能發電 台灣風能科技 - 朱銘隆
11:50 ~ 13:10 中餐
13:10 ~ 14:10 Green Data Center ZMAN
14:20 ~ 15:20 Hyper-V 被 SCVMM 2008 包下來了 Jerry
15:20 ~ 15:40 下午茶時間
15:40 ~ 16:40 綠色救援 - 從EXT2 / EXT3架構談資料救援 巨匠 楊濬銘
16:40 閉幕

2008年11月4日 星期二

建立及使用資料庫

建立資料庫
------------

create 是mysql用來新增資料用的語句,像資料庫、資料表等等,都可以使用它來新增:

mysql> create database new;
Query OK, 1 row affected (0.02 sec)
第一句意思為新增一個名為new的資料庫,如果要新增資料表,把database改成table就好了。資料庫或資料表名稱需注意大小寫需一樣。

建立完資料庫,我們就可以在裡面新增資料,但在新增資料我們必須確定我們現在用的是哪個資料庫,mysql使用use來設定使用的資料庫:

mysql> use new
Database changed
第一行意思為要使用new這個資料庫,第二行顯示使用的資料庫已經是new。

我們也可以在登入mysql時就指定要使用的資料庫:

[root@localhost ~]# mysql -u root -p new
Enter password:

要注意後面那個new,是要使用的資料庫名稱,而不是你的密碼,當你輸入完並按下Enter,它才會要你輸入密碼。


建立資料表
-----------

先來看看new這個資料庫裡面有甚麼資料表:

mysql> show tables;
Empty set (0.00 sec)
用show這個指令來看有甚麼資料表,記住你要看哪個資料庫的資料表,要先用use切換到那個資料庫下面。同樣的,我們也可以使用show來看有甚麼資料庫,記住tables跟databases,用show都要加s。

和新增資料庫一樣,使用create這個指令來新增資料表:

mysql> create table phonebook(
-> name varchar(20),
-> phone int(20));
Query OK, 0 rows affected (0.08 sec)
為了方便閱讀所以我分三行輸入。create table phonebook後面用()包了一些指令,資料表裡的欄位要使用()包起來,以這個例子來看,第一個欄位為name,後面接資料型別(下面會介紹資料型別),資料型別後面的(20)代表這個欄位的長度。如果還有別的欄位請用","(逗點)分開。
這裡我新增一個叫做phonebook的資料表,裡面包含兩個欄位,分別為name跟phone。

建立完資料表我們來看看是否真的有建立進去:


mysql> show tables;
+---------------+
| Tables_in_new |
+---------------+
| phonebook |
+---------------+
1 row in set (0.00 sec)

真的有剛剛新增的資料表。

除了show,還可以使用describe來看看資料表欄位的類型:

mysql> describe phonebook;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| phone | int(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
這個指令會將資料表欄位的資訊顯示出來,如果你忘記欄位類型,這是很好用的指令。


新增資料
---------

接著便要在資料表裡新增資料,新增的方式有幾種,先講第一種:
直接輸入:
在mysql>提示字元下,一行一行輸入資料:

mysql> insert into phonebook values('xiang', '0970-123456');
Query OK, 1 row affected, 1 warning (0.00 sec)
新增的指令為"insert into",phonebook代表你要新增資料到哪個資料表,values後面接(),裡面用來放新增的資料。以這個例子來看,phonebook資料表裡有兩個欄位,因此()內我必須要有兩筆資料,每筆資料要以''框起來,資料間要以,隔開,新增資料有分順序,因為phonebook第一個欄位為name,第二個欄位為phone,所以第一個欄位就要輸入名字,第二個欄位要須入電話號碼,要注意資料型別,資料型別錯誤的話,新增會有問題的。

mysql> insert into phonebook values('0970-123456', 'xiang');
ERROR 1046 (3D000): No database selected
我將上面例子的資料反過來,就出現錯誤了。

另一種方法,你可以先將資料寫好,使用匯入的方式,在資料很多的時候這是很方便的方法:
我在/tmp/mysql下面建立了一個名為phonebook.txt的文字檔,內容如下:
jack 0935-000000
mary 0933-123456
david 0928-101999
一行為一筆資料,每行有兩個欄位,欄位之間用tab鍵隔開,建立完之後再來就要匯入了:

mysql> load data local infile '/tmp/mysql/phonebook.txt' into table phonebook;
Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 3
應該很容易看出來語法吧,匯入指令load data local infile,用''框起來的就是檔案路徑,into table phonebook就是要匯入到phonebook這個資料表。

安裝與登入mysql

安裝mysql

以fedora環境下,直接輸入 yum install mysql及yum install mysql-server


啟動mysql


與一般服務的管理方式一樣,在fedora可以使用 service來管理,亦或是在 /etc/init.d下直接來管理服務。輸入 service mysqld restart,安裝後第一次啟動mysql,會提示你使用 mysqladmin -u root password 'your-password'來指定root密碼:


[root@Fedora8DK etc]# service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h Fedora8DK password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[ OK ]
Starting MySQL: [ OK ]



登入mysql


登入mysql的指令如下:
mysql [-h host_name][-u user_name][-pyour_pass ]

-h為要登入的主機名稱,可省略,未指定就是本機
-u為使用者名稱,可省略,未指定就是下指令的user
-p為密碼,如果有設密碼的話就不能省略。密碼不用先輸入,按下確定後系統會請你輸入密碼,如範例第二行
-h, -u和-p選項的另一種形式是--host=host_name、--user=user_name和--password=your_pass。注意在-p或--password=與跟隨它後面的口令之間沒有空格。
下面為指令範例:

[root@localhost ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

成功登入後,提示字元變成mysql>,代表現在在mysql底下。


登出mysql

輸入quit即可,或是按Ctrl+d也可以。



輸入查詢


這裡將介紹輸入命令的基本原則及特性。一般進入mysql後會顯示 mysql>,表示已經在mysql底下,並可以開始輸入命令,mysql>有幾個特性:
* 通常一個命令會以 ;(分號結尾),如果沒有";"即使按Enter鍵,mysql仍然會等待輸入(並非全部,像quit就不用以;結尾)
* mysql用資料表格(行和列)方式顯示查詢輸出。第一行包含列的標籤,隨後的行是查詢結果。通常,列標籤是您取自資料庫資料表的列的名字。
* 當執行完一個命令,mysql會將命令傳給伺服器,並將結果顯示出來,然後顯示另一個 mysql>等待下一個命令的輸入
* mysql的結果會顯示返回了多少行,以及查詢花了多長時間,它給您提供伺服器性能的一個大致概念。
* mysql底下不分大小寫,除了一些特定的字

底下為一些示範:

select version()使用version()來查詢現在的版本,底下輸出結果以及查詢所花費的時間。
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)


您可以在一行上輸入多條語句,只需要以一個;(分號)間隔開各語句:

mysql> select version(); select now();
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)

+---------------------+
| now() |
+---------------------+
| 2008-11-03 16:13:32 |
+---------------------+
1 row in set (0.00 sec)


你可以不用把所有的命令都集中在同一行,前面有說過,mysql以;(分號)做為結束符號,因此你也可以將命令分成好幾行,像這樣:
一樣使用select version();這個命令做示範,我將這個命令分成三行輸入,結果是一樣的。
mysql> select
-> version()
-> ;
+-----------+
| version() |
+-----------+
| 5.0.45 |
+-----------+
1 row in set (0.00 sec)

如果你在輸入到一半的想取消輸入,可以直接輸入 "\c"來取消輸入:
mysql> select
-> version()
-> \c
mysql>

這裡要注意一下,當我沒輸入;就按Enter的話,提示字元為 ->,其實每個符號各有不同的意思:

提示符號 含義
mysql> 準備好接受新的命令
-> 等待多行命令的下一行
'> 等待下一行,等待以單引號(「'」)開始的字串的結束。
"> 等待下一行,等待以雙引號(「"」)開始的字串的結束。
`> 等待下一行,等待以反斜點(『`』)開始的識別符的結束。
/*> 等待下一行,等待以/*開始的註釋的結束。