溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

MariaDB創(chuàng)建,更改,刪除數(shù)據(jù)庫命令

發(fā)布時間:2020-06-07 09:30:03 來源:網(wǎng)絡(luò) 閱讀:3250 作者:喵來個魚 欄目:MySQL數(shù)據(jù)庫
創(chuàng)建新的MySQL數(shù)據(jù)庫
創(chuàng)建具有特定字符集的MySQL數(shù)據(jù)庫(UTF8)
刪除現(xiàn)有的MySQL數(shù)據(jù)庫
僅在不存在的情況下創(chuàng)建MySQL數(shù)據(jù)庫
僅當存在MySQL數(shù)據(jù)庫時才會丟失
更改db.opt的數(shù)據(jù)庫特性
升級數(shù)據(jù)目錄選項進行遷移和編碼

1.創(chuàng)建新的MySQL數(shù)據(jù)庫

要創(chuàng)建一個MariaDB數(shù)據(jù)庫,請使用create database命令,如下所示。

以下將創(chuàng)建一個名為“study”的數(shù)據(jù)庫。

MariaDB [(none)]> CREATE DATABASE study;
Query OK, 1 row affected (0.00 sec)

如果您有Oracle數(shù)據(jù)庫的背景信息,請不要在這里混淆術(shù)語“database”。

當我們在MySQL中創(chuàng)建一個“database”時,我們實際上正在創(chuàng)建一個“schema”。但是在MySQL和MariaDB世界中,它被真正稱為“database”而不是“schema”。

但是由于某些原因,如果您愿意,還可以使用以下“create schema”命令來創(chuàng)建數(shù)據(jù)庫。創(chuàng)建模式只不過是創(chuàng)建數(shù)據(jù)庫的同義詞,以下命令與上述create database完全相同。

MariaDB [(none)]> CREATE SCHEMA study;

請注意,只有擁有數(shù)據(jù)庫CREATE權(quán)限的用戶才能執(zhí)行上述命令。

在典型的情況下,您將以root身份登錄到mysql并執(zhí)行上述create database命令。

#mysql -u root -pMySecretPWD

CREATE DATABASE創(chuàng)建一個具有給定名稱的數(shù)據(jù)庫。要使用此語句,您需要數(shù)據(jù)庫的CREATE權(quán)限。CREATE SCHEMA是CREATE DATABASE的同義詞。如果你是MySQL的新手,這將解釋如何在Linux上安裝MySQL MariaDB。

2.創(chuàng)建具有特定字符集(UTF8)的MySQL數(shù)據(jù)庫

創(chuàng)建新數(shù)據(jù)庫時,創(chuàng)建數(shù)據(jù)庫將使用系統(tǒng)中的任何默認字符集,但是,如果您確切地知道您想要的字符集,則可以在數(shù)據(jù)庫創(chuàng)建過程中指定它們,如下所示。在下面的示例中,我們正在使用“utf8”字符集創(chuàng)建一個名為“boys”的mariadb數(shù)據(jù)庫。這里我們也指定了整理和字符集。

MariaDB [(none)]> CREATE DATABASE boys CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

如果您想查看系統(tǒng)上的所有可用字符集,請使用以下show character set命令。

MariaDB [(none)]> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
..
..
| utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |

在創(chuàng)建數(shù)據(jù)庫中指定字符集時,此信息將存儲在該特定數(shù)據(jù)庫的db.opt文件中。

例如,對于“boys”數(shù)據(jù)庫,此db.opt文件將位于/ var / lib / mysql / boys目錄下,如下所示。

# cat /var/lib/mysql/boys/db.opt 
default-character-set=utf8
default-collation=utf8_general_ci

創(chuàng)建數(shù)據(jù)庫后,可以在MySQL數(shù)據(jù)庫中創(chuàng)建表。

3.刪除現(xiàn)有的MySQL數(shù)據(jù)庫

要從系統(tǒng)中刪除現(xiàn)有的mysql數(shù)據(jù)庫,請使用drop database命令,如下所示。

以下將刪除“study”數(shù)據(jù)庫。

MariaDB [(none)]> DROP DATABASE study;

請記?。?/p>

這是一個危險的命令,因為這將刪除數(shù)據(jù)庫中的所有表以及數(shù)據(jù),然后刪除數(shù)據(jù)庫本身。要執(zhí)行此命令,您將需要DROP特權(quán)對數(shù)據(jù)庫。另外,類似于創(chuàng)建數(shù)據(jù)庫和創(chuàng)建模式,您還可以使用drop database和drop schema。

以下兩個命令完全相同。

MariaDB [(none)]> DROP DATABASE study;
MariaDB [(none)]> DROP SCHEMA study;

刪除數(shù)據(jù)庫后,執(zhí)行show數(shù)據(jù)庫,以確保不再列出數(shù)據(jù)庫。

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

當您刪除數(shù)據(jù)庫時,還將從/ var / lib / mysql文件夾中刪除數(shù)據(jù)庫目錄以及包含db.opt的所有文件,如下所示。

# ls -l /var/lib/mysql/study/
ls: cannot access /var/lib/mysql/study/: No such file or directory

要記住的一件事是,如果您已經(jīng)在數(shù)據(jù)庫目錄(即/ var / lib / mysql / study)下手動創(chuàng)建了一些文件,則上述drop database命令將不會刪除您的自定義文件或數(shù)據(jù)庫目錄本身。但是,它將刪除由mysql服務(wù)器本身創(chuàng)建的所有其他文件,包括表文件等。在相關(guān)的注釋中,如果您創(chuàng)建了任何TEMPORARY表,則不會刪除它們。但是,當創(chuàng)建的特定會話結(jié)束時,它們將被自動刪除。


4.如果不存在,請創(chuàng)建MySQL數(shù)據(jù)庫


如下所示,默認情況下,創(chuàng)建數(shù)據(jù)庫命令將在您嘗試創(chuàng)建已存在的數(shù)據(jù)庫時失敗。

MariaDB [(none)]> CREATE DATABASE study;
ERROR 1007 (HY000): Can't create database 'study'; database exists

如果您只是在命令行上執(zhí)行此操作,那么可能會很好,因為您可以暗示忽略并繼續(xù)前進。但是,如果您在腳本中執(zhí)行此操作,該腳本將從SQL命令檢查任何錯誤消息并存在腳本,那么我們有一個問題。

在這種情況下,請使用“if not exists”子句以及create database,如下所示。

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS study;
Query OK, 1 row affected, 1 warning (0.00 sec)

這將僅在數(shù)據(jù)庫不存在時創(chuàng)建數(shù)據(jù)庫。但是,當數(shù)據(jù)庫存在時,它不會拋出任何錯誤消息。

5.如果存在,請丟棄MySQL數(shù)據(jù)庫

DROP DATABASE IF EXISTS study;  //如果存在,請丟棄MySQL數(shù)據(jù)庫
DROP SCHEMA IF EXISTS study;    //如果存在,請丟棄MySQL數(shù)據(jù)庫

當您嘗試刪除不存在的數(shù)據(jù)庫時,將收到以下錯誤消息。

MariaDB [none]> DROP DATABASE study;
ERROR 1008 (HY000): Can't drop database 'study'; database doesn't exist

當您從命令行進行交互式操作時,可能會出現(xiàn)這種情況。但是,如果從自動化腳本執(zhí)行drop命令,并且不會看到錯誤消息,那么可能會停止腳本,然后使用IF EXISTS子句,如下所示。

MariaDB [none]> DROP DATABASE IF EXISTS study;
Query OK, 0 rows affected, 1 warning (0.00 sec)

與上述命令相同的行為,但不返回任何錯誤消息。

6.更改db.opt的數(shù)據(jù)庫特性

使用alter database命令,可以更改數(shù)據(jù)庫的某些特性。通常,您將使用它來更改在db.opt文件中設(shè)置的數(shù)據(jù)庫選項。例如,這里我們將db.opt中的study數(shù)據(jù)庫的字符集定義為LATIN

# cat /var/lib/mysql/study/db.opt 
default-character-set=latin1
default-collation=latin1_swedish_ci
..

現(xiàn)在,要將其更改為UTF8,我們可以使用alter database命令,如下所示。

MariaDB [(none)]> ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

任何時候執(zhí)行ALTER數(shù)據(jù)庫命令,您將看到更新的值反映在db.opt文件中,如下所示。

# cat /var/lib/mysql/study/db.opt 

default-character-set=utf8

default-collation=utf8_general_ci

要執(zhí)行alter database命令,您將看到數(shù)據(jù)庫上的ALTER特權(quán)。

就像創(chuàng)建和刪除一樣,你也可以使用“schema”。以下兩個完全一樣,ALTER SCHEMA只是alter database的同義詞。

ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci;
ALTER SCHEMA study CHARACTER SET = utf8 COLLATE = utf8_general_ci;

另外,請注意,如果您已經(jīng)在數(shù)據(jù)庫中,可以在“ALTER”命令中省略數(shù)據(jù)庫名稱,如下所示。

MariaDB [(none)]> USE study;
MariaDB [study]> ALTER DATABASE CHARACTER SET = utf8 COLLATE = utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

正如你在這里看到的,我用了改變數(shù)據(jù)庫。所以,在我的ALTER DATABASE中,我沒有指定數(shù)據(jù)庫名稱。

7.升級遷移和編碼的數(shù)據(jù)目錄選項

如果您正在運行MySQL數(shù)據(jù)庫的更改版本(5.1之前),并嘗試升級到5.1或更高版本的MySQL / MariaDB版本,則需要執(zhí)行此操作。具有“升級數(shù)據(jù)目錄名稱”選項的以下命令將使用與MySQL 5.1或更高版本相匹配的適當編碼實現(xiàn)來更新數(shù)據(jù)庫目錄的名稱。這將確保數(shù)據(jù)庫名稱和數(shù)據(jù)庫目錄映射正確,名稱中沒有任何編碼問題。

再次,只有當您從舊版本的MySQL升級到5.1或更高版本時,才會使用此功能。當您在數(shù)據(jù)庫名稱中具有特殊字符時,如下所示,數(shù)據(jù)庫名稱中具有連字號(即,-ekek-東東)。

另外,請注意,“#mysql11?!笔菓?yīng)該使用的關(guān)鍵字,后跟數(shù)據(jù)庫名稱。

ALTER DATABASE `#mysql11#study-boys` UPGRADE DATA DIRECTORY NAME;

在這個例子中,上面的命令會將數(shù)據(jù)庫名稱正確地編碼為“@ 002dstudy @ 002dboys”,它將使用@ 002d作為數(shù)據(jù)庫名稱中的破折號特殊字符。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI