天天看點

MariaDB建立,更改,删除資料庫指令

<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)]&gt; 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)]&gt; 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)]&gt; CREATE DATABASE boys CHARACTER SET = utf8 COLLATE = utf8_general_ci;</code>

如果您想檢視系統上的所有可用字元集,請使用以下show character set指令。

<code>MariaDB [(none)]&gt; 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)]&gt; DROP DATABASE study;</code>

請記住:

這是一個危險的指令,因為這将删除資料庫中的所有表以及資料,然後删除資料庫本身。要執行此指令,您将需要DROP特權對資料庫。另外,類似于建立資料庫和建立模式,您還可以使用drop database和drop schema。

以下兩個指令完全相同。

<code>MariaDB [(none)]&gt; DROP SCHEMA study;</code>

删除資料庫後,執行show資料庫,以確定不再列出資料庫。

<code>MariaDB [(none)]&gt; 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)]&gt; 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]&gt; 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]&gt; 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)]&gt; 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)]&gt; USE study;</code>

<code>MariaDB [study]&gt; 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,如需轉載請自行聯系原作者