<code>建立新的MySQL資料庫</code>
<code>建立具有特定字元集的MySQL資料庫(UTF8)</code>
<code>删除現有的MySQL資料庫</code>
<code>僅在不存在的情況下建立MySQL資料庫</code>
<code>僅當存在MySQL資料庫時才會丢失</code>
<code>更改db.opt的資料庫特性</code>
<code>更新資料目錄選項進行遷移和編碼</code>
1.建立新的MySQL資料庫
要建立一個MariaDB資料庫,請使用create database指令,如下所示。
以下将建立一個名為“study”的資料庫。
<code>MariaDB [(none)]> CREATE DATABASE study;</code>
<code>Query OK, 1 row affected (0.00 sec)</code>
如果您有Oracle資料庫的背景資訊,請不要在這裡混淆術語“database”。
當我們在MySQL中建立一個“database”時,我們實際上正在建立一個“schema”。但是在MySQL和MariaDB世界中,它被真正稱為“database”而不是“schema”。
但是由于某些原因,如果您願意,還可以使用以下“create schema”指令來建立資料庫。建立模式隻不過是建立資料庫的同義詞,以下指令與上述create database完全相同。
<code>MariaDB [(none)]> CREATE SCHEMA study;</code>
請注意,隻有擁有資料庫CREATE權限的使用者才能執行上述指令。
在典型的情況下,您将以root身份登入到mysql并執行上述create database指令。
<code>#mysql -u root -pMySecretPWD</code>
CREATE DATABASE建立一個具有給定名稱的資料庫。要使用此語句,您需要資料庫的CREATE權限。CREATE SCHEMA是CREATE DATABASE的同義詞。如果你是MySQL的新手,這将解釋如何在Linux上安裝MySQL MariaDB。
2.建立具有特定字元集(UTF8)的MySQL資料庫
建立新資料庫時,建立資料庫将使用系統中的任何預設字元集,但是,如果您确切地知道您想要的字元集,則可以在資料庫建立過程中指定它們,如下所示。在下面的示例中,我們正在使用“utf8”字元集建立一個名為“boys”的mariadb資料庫。這裡我們也指定了整理和字元集。
<code>MariaDB [(none)]> CREATE DATABASE boys CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>
如果您想檢視系統上的所有可用字元集,請使用以下show character set指令。
<code>MariaDB [(none)]> SHOW CHARACTER SET;</code>
<code>+----------+-----------------------------+---------------------+--------+</code>
<code>| Charset | Description | Default collation | Maxlen |</code>
<code>| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |</code>
<code>| dec8 | DEC West European | dec8_swedish_ci | 1 |</code>
<code>| cp850 | DOS West European | cp850_general_ci | 1 |</code>
<code>| hp8 | HP West European | hp8_english_ci | 1 |</code>
<code>| koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 |</code>
<code>| latin1 | cp1252 West European | latin1_swedish_ci | 1 |</code>
<code>| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |</code>
<code>..</code>
<code>| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |</code>
在建立資料庫中指定字元集時,此資訊将存儲在該特定資料庫的db.opt檔案中。
例如,對于“boys”資料庫,此db.opt檔案将位于/ var / lib / mysql / boys目錄下,如下所示。
<code># cat /var/lib/mysql/boys/db.opt </code>
<code>default-character-</code><code>set</code><code>=utf8</code>
<code>default-collation=utf8_general_ci</code>
建立資料庫後,可以在MySQL資料庫中建立表。
3.删除現有的MySQL資料庫
要從系統中删除現有的mysql資料庫,請使用drop database指令,如下所示。
以下将删除“study”資料庫。
<code>MariaDB [(none)]> DROP DATABASE study;</code>
請記住:
這是一個危險的指令,因為這将删除資料庫中的所有表以及資料,然後删除資料庫本身。要執行此指令,您将需要DROP特權對資料庫。另外,類似于建立資料庫和建立模式,您還可以使用drop database和drop schema。
以下兩個指令完全相同。
<code>MariaDB [(none)]> DROP SCHEMA study;</code>
删除資料庫後,執行show資料庫,以確定不再列出資料庫。
<code>MariaDB [(none)]> SHOW DATABASES;</code>
<code>+--------------------+</code>
<code>| Database |</code>
<code>| information_schema |</code>
<code>| mysql |</code>
<code>| performance_schema |</code>
當您删除資料庫時,還将從/ var / lib / mysql檔案夾中删除資料庫目錄以及包含db.opt的所有檔案,如下所示。
<code># ls -l /var/lib/mysql/study/</code>
<code>ls</code><code>: cannot access </code><code>/var/lib/mysql/study/</code><code>: No such </code><code>file</code> <code>or directory</code>
要記住的一件事是,如果您已經在資料庫目錄(即/ var / lib / mysql / study)下手動建立了一些檔案,則上述drop database指令将不會删除您的自定義檔案或資料庫目錄本身。但是,它将删除由mysql伺服器本身建立的所有其他檔案,包括表檔案等。在相關的注釋中,如果您建立了任何TEMPORARY表,則不會删除它們。但是,當建立的特定會話結束時,它們将被自動删除。
4.如果不存在,請建立MySQL資料庫
如下所示,預設情況下,建立資料庫指令将在您嘗試建立已存在的資料庫時失敗。
<code>ERROR 1007 (HY000): Can</code><code>'t create database '</code><code>study'; database exists</code>
如果您隻是在指令行上執行此操作,那麼可能會很好,因為您可以暗示忽略并繼續前進。但是,如果您在腳本中執行此操作,該腳本将從SQL指令檢查任何錯誤消息并存在腳本,那麼我們有一個問題。
在這種情況下,請使用“if not exists”子句以及create database,如下所示。
<code>MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS study;</code>
<code>Query OK, 1 row affected, 1 warning (0.00 sec)</code>
這将僅在資料庫不存在時建立資料庫。但是,當資料庫存在時,它不會抛出任何錯誤消息。
5.如果存在,請丢棄MySQL資料庫
<code>DROP DATABASE IF EXISTS study; </code><code>//</code><code>如果存在,請丢棄MySQL資料庫</code>
<code>DROP SCHEMA IF EXISTS study; </code><code>//</code><code>如果存在,請丢棄MySQL資料庫</code>
當您嘗試删除不存在的資料庫時,将收到以下錯誤消息。
<code>MariaDB [none]> DROP DATABASE study;</code>
<code>ERROR 1008 (HY000): Can</code><code>'t drop database '</code><code>study</code><code>'; database doesn'</code><code>t exist</code>
當您從指令行進行互動式操作時,可能會出現這種情況。但是,如果從自動化腳本執行drop指令,并且不會看到錯誤消息,那麼可能會停止腳本,然後使用IF EXISTS子句,如下所示。
<code>MariaDB [none]> DROP DATABASE IF EXISTS study;</code>
<code>Query OK, 0 rows affected, 1 warning (0.00 sec)</code>
與上述指令相同的行為,但不傳回任何錯誤消息。
6.更改db.opt的資料庫特性
使用alter database指令,可以更改資料庫的某些特性。通常,您将使用它來更改在db.opt檔案中設定的資料庫選項。例如,這裡我們将db.opt中的study資料庫的字元集定義為LATIN
<code># cat /var/lib/mysql/study/db.opt </code>
<code>default-character-</code><code>set</code><code>=latin1</code>
<code>default-collation=latin1_swedish_ci</code>
現在,要将其更改為UTF8,我們可以使用alter database指令,如下所示。
<code>MariaDB [(none)]> ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>
任何時候執行ALTER資料庫指令,您将看到更新的值反映在db.opt檔案中,如下所示。
# cat /var/lib/mysql/study/db.opt
default-character-set=utf8
default-collation=utf8_general_ci
要執行alter database指令,您将看到資料庫上的ALTER特權。
就像建立和删除一樣,你也可以使用“schema”。以下兩個完全一樣,ALTER SCHEMA隻是alter database的同義詞。
<code>ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>
<code>ALTER SCHEMA study CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>
另外,請注意,如果您已經在資料庫中,可以在“ALTER”指令中省略資料庫名稱,如下所示。
<code>MariaDB [(none)]> USE study;</code>
<code>MariaDB [study]> ALTER DATABASE CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>
正如你在這裡看到的,我用了改變資料庫。是以,在我的ALTER DATABASE中,我沒有指定資料庫名稱。
7.更新遷移和編碼的資料目錄選項
如果您正在運作MySQL資料庫的更改版本(5.1之前),并嘗試更新到5.1或更高版本的MySQL / MariaDB版本,則需要執行此操作。具有“更新資料目錄名稱”選項的以下指令将使用與MySQL 5.1或更高版本相比對的适當編碼實作來更新資料庫目錄的名稱。這将確定資料庫名稱和資料庫目錄映射正确,名稱中沒有任何編碼問題。
再次,隻有當您從舊版本的MySQL更新到5.1或更高版本時,才會使用此功能。當您在資料庫名稱中具有特殊字元時,如下所示,資料庫名稱中具有連字号(即,-ekek-東東)。
另外,請注意,“#mysql11#”是應該使用的關鍵字,後跟資料庫名稱。
<code>ALTER DATABASE `</code><code>#mysql11#study-boys` UPGRADE DATA DIRECTORY NAME;</code>
在這個例子中,上面的指令會将資料庫名稱正确地編碼為“@ 002dstudy @ 002dboys”,它将使用@ 002d作為資料庫名稱中的破折号特殊字元。
本文轉自 喵來個魚 51CTO部落格,原文連結:http://blog.51cto.com/m51cto/1958752,如需轉載請自行聯系原作者