建立資料庫:
MySQL的任何事情都是以資料庫開始的,資料庫我們可以理解為"書架",表則可以理解為"書架上的書",而表中的資料則可以理解為"書中的內容"。也就是說資料庫是容器。當我們輸入完使用者名稱密碼串連到MySQL後,可以使用CREATE DATABASE命令來建立一個新的MySQL資料庫。例如:
| 代碼如下 |
複製代碼 |
create database xiaoxiaozi; /* Query OK, 1 row affected (0.06 sec) */
|
這樣就建立了一個資料庫,資料庫名為"xiaoxiaozi"。在檔案系統中,MySQL的資料存放區區將以目錄方式表示MySQL資料庫。也就是說其實資料庫在檔案系統中的表現為"檔案夾"。所以說我們在給資料庫命名的時候一定要小心,再小心。其命名規範與作業系統的紅豆目錄名字的規範相一致。
例如:在Windows系統中不允許檔案和目錄名中有",/,:,*,?,<,>,|"這些字元,在MySQL資料庫名字中這些字母會被自動刪除。且資料庫的名字不能太長(不能超過64個字元),一般除非故意搞破壞,沒有人建這麼長名字的資料庫,也不好記不是。且包含特殊字元的名字或者是全部由數字或保留字組成的名字必須用反引號包起來。
| 代碼如下 |
複製代碼 |
create database xiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi; /* 資料庫名過長 ERROR 1102 (42000): Incorrect database name 'xiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozixiaoxiaozi' */
create database 123456; /* 資料庫名為純數字,需要用反引號包起來 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '123456' at line 1 */ create database `123456`; /* 正確建立資料庫名,用反引號將純數字包起來 Query OK, 1 row affected (0.00 sec) */ |
且資料庫的名字不能相同,如果建立一個庫名與現有資料庫名重複,系統會提示該資料庫已經存在,建立失敗。
| 代碼如下 |
複製代碼 |
create database `123456`; /* 第一次建立,建立成功 Query OK, 1 row affected (0.01 sec) */ create database `123456`; /* 第二次建立,建立失敗 ERROR 1007 (HY000): Can't create database '123456'; database exists */
|
那我們建立資料庫的時候,怎麼樣避免庫名已經存在這個錯誤資訊呢?有兩種方式:
•在建立資料庫之前先用 show databases;語句查詢現有資料庫名都有哪些,避免建立失敗。
•在建立資料庫時,使用if not exists語句指明,只有當資料庫不存在時才建立。
| 代碼如下 |
複製代碼 |
/*if not exists*/ create database `123456`; /* 第一次建立資料庫,成功 Query OK, 1 row affected (0.00 sec) */ create database if not exists `123456`; /* 如果資料庫不存在才建立,執行SQL成功,有一個警告 Query OK, 0 rows affected, 1 warning (0.00 sec) */ /*show databases樣本*/ show databases; /* +------------+ | Database | +------------+ | 123456 | | log | | manager | | mysql | | qhcms | | test | | xiaoxiaozi | +------------+ 7 rows in set (0.00 sec) */ |
選擇需要的資料庫:
使用USE語句將會選擇一個資料庫,使它成為所有事務的當前資料庫。
| 代碼如下 |
複製代碼 |
use xiaoxiaozi; /* 提示資料庫已改變 Database changed */
|
同時,我們也可以在查詢表的時候再告訴MySQL我們這些表是哪些資料庫裡的表。
| 代碼如下 |
複製代碼 |
select Host, Db, User From mysql.db; /* 指明,在mysql資料庫的db表中查詢Host,Db,User欄位 +----------------------------+---------+-------+ | Host | Db | User | +----------------------------+---------+-------+ | % | test | | | % | test_% | | | 192.168.0.133 | qhcms | cms | | www.111cn.net | qhcms | cms | | localhost | log | log | | localhost | manager | mambo | | localhost | qhcms | cms | +----------------------------+---------+-------+ 7 rows in set (0.05 sec) */ |
上面這條語句,與如下兩條語句組合的作用是相同的
| 代碼如下 |
複製代碼 |
use mysql; /* 選擇mysql資料庫 Database changed */ select Host, Db, User From db; /* 在db表裡面選擇Host, Db, User欄位 +----------------------------+---------+-------+ | Host | Db | User | +----------------------------+---------+-------+ | % | test | | | % | test_% | | | 192.168.0.133 | qhcms | cms | | www.111cn.net | qhcms | cms | | localhost | log | log | | localhost | manager | mambo | | localhost | qhcms | cms | +----------------------------+---------+-------+ 7 rows in set (0.00 sec) */
|
刪除資料庫:
這是一個危險的動作,如果大家要使用的話,一定要先確認這個資料庫是自己的,並且是自己真的想刪的,因為一旦刪除資料庫,是連其內部的表資料一起刪除的。一旦刪除就真的沒了,所以一定要小心,再小心。
其實刪除資料庫的命令很是簡單 drop database database_name; 不過要刪一個資料庫,如果其不存在的話,系統是會報錯的,這個時候我們可以藉助if exists來判斷一下資料庫是否存在。
| 代碼如下 |
複製代碼 |
drop database xiaoxiaozi; /* 第一次刪除xiaoxiaozi資料庫 Query OK, 0 rows affected (0.00 sec) */ drop database xiaoxiaozi; /* 第二次刪除失敗,因為此時該資料庫已經不存在了 ERROR 1008 (HY000): Can't drop database 'xiaoxiaozi'; database doesn't exist */ drop database if exists xiaoxiaozi; /* 刪除的時候先判斷存不存在,如果不存在執行刪除 Query OK, 0 rows affected, 1 warning (0.00 sec) */
|