您好,登錄后才能下訂單哦!
創建新的MySQL數據庫 創建具有特定字符集的MySQL數據庫(UTF8) 刪除現有的MySQL數據庫 僅在不存在的情況下創建MySQL數據庫 僅當存在MySQL數據庫時才會丟失 更改db.opt的數據庫特性 升級數據目錄選項進行遷移和編碼
1.創建新的MySQL數據庫
要創建一個MariaDB數據庫,請使用create database命令,如下所示。
以下將創建一個名為“study”的數據庫。
MariaDB [(none)]> CREATE DATABASE study; Query OK, 1 row affected (0.00 sec)
如果您有Oracle數據庫的背景信息,請不要在這里混淆術語“database”。
當我們在MySQL中創建一個“database”時,我們實際上正在創建一個“schema”。但是在MySQL和MariaDB世界中,它被真正稱為“database”而不是“schema”。
但是由于某些原因,如果您愿意,還可以使用以下“create schema”命令來創建數據庫。創建模式只不過是創建數據庫的同義詞,以下命令與上述create database完全相同。
MariaDB [(none)]> CREATE SCHEMA study;
請注意,只有擁有數據庫CREATE權限的用戶才能執行上述命令。
在典型的情況下,您將以root身份登錄到mysql并執行上述create database命令。
#mysql -u root -pMySecretPWD
CREATE DATABASE創建一個具有給定名稱的數據庫。要使用此語句,您需要數據庫的CREATE權限。CREATE SCHEMA是CREATE DATABASE的同義詞。如果你是MySQL的新手,這將解釋如何在Linux上安裝MySQL MariaDB。
2.創建具有特定字符集(UTF8)的MySQL數據庫
創建新數據庫時,創建數據庫將使用系統中的任何默認字符集,但是,如果您確切地知道您想要的字符集,則可以在數據庫創建過程中指定它們,如下所示。在下面的示例中,我們正在使用“utf8”字符集創建一個名為“boys”的mariadb數據庫。這里我們也指定了整理和字符集。
MariaDB [(none)]> CREATE DATABASE boys CHARACTER SET = utf8 COLLATE = utf8_general_ci; Query OK, 1 row affected (0.00 sec)
如果您想查看系統上的所有可用字符集,請使用以下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 |
在創建數據庫中指定字符集時,此信息將存儲在該特定數據庫的db.opt文件中。
例如,對于“boys”數據庫,此db.opt文件將位于/ var / lib / mysql / boys目錄下,如下所示。
# cat /var/lib/mysql/boys/db.opt default-character-set=utf8 default-collation=utf8_general_ci
創建數據庫后,可以在MySQL數據庫中創建表。
3.刪除現有的MySQL數據庫
要從系統中刪除現有的mysql數據庫,請使用drop database命令,如下所示。
以下將刪除“study”數據庫。
MariaDB [(none)]> DROP DATABASE study;
請記住:
這是一個危險的命令,因為這將刪除數據庫中的所有表以及數據,然后刪除數據庫本身。要執行此命令,您將需要DROP特權對數據庫。另外,類似于創建數據庫和創建模式,您還可以使用drop database和drop schema。
以下兩個命令完全相同。
MariaDB [(none)]> DROP DATABASE study; MariaDB [(none)]> DROP SCHEMA study;
刪除數據庫后,執行show數據庫,以確保不再列出數據庫。
MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+
當您刪除數據庫時,還將從/ var / lib / mysql文件夾中刪除數據庫目錄以及包含db.opt的所有文件,如下所示。
# ls -l /var/lib/mysql/study/ ls: cannot access /var/lib/mysql/study/: No such file or directory
要記住的一件事是,如果您已經在數據庫目錄(即/ var / lib / mysql / study)下手動創建了一些文件,則上述drop database命令將不會刪除您的自定義文件或數據庫目錄本身。但是,它將刪除由mysql服務器本身創建的所有其他文件,包括表文件等。在相關的注釋中,如果您創建了任何TEMPORARY表,則不會刪除它們。但是,當創建的特定會話結束時,它們將被自動刪除。
4.如果不存在,請創建MySQL數據庫
如下所示,默認情況下,創建數據庫命令將在您嘗試創建已存在的數據庫時失敗。
MariaDB [(none)]> CREATE DATABASE study; ERROR 1007 (HY000): Can't create database 'study'; database exists
如果您只是在命令行上執行此操作,那么可能會很好,因為您可以暗示忽略并繼續前進。但是,如果您在腳本中執行此操作,該腳本將從SQL命令檢查任何錯誤消息并存在腳本,那么我們有一個問題。
在這種情況下,請使用“if not exists”子句以及create database,如下所示。
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS study; Query OK, 1 row affected, 1 warning (0.00 sec)
這將僅在數據庫不存在時創建數據庫。但是,當數據庫存在時,它不會拋出任何錯誤消息。
5.如果存在,請丟棄MySQL數據庫
DROP DATABASE IF EXISTS study; //如果存在,請丟棄MySQL數據庫 DROP SCHEMA IF EXISTS study; //如果存在,請丟棄MySQL數據庫
當您嘗試刪除不存在的數據庫時,將收到以下錯誤消息。
MariaDB [none]> DROP DATABASE study; ERROR 1008 (HY000): Can't drop database 'study'; database doesn't exist
當您從命令行進行交互式操作時,可能會出現這種情況。但是,如果從自動化腳本執行drop命令,并且不會看到錯誤消息,那么可能會停止腳本,然后使用IF EXISTS子句,如下所示。
MariaDB [none]> DROP DATABASE IF EXISTS study; Query OK, 0 rows affected, 1 warning (0.00 sec)
與上述命令相同的行為,但不返回任何錯誤消息。
6.更改db.opt的數據庫特性
使用alter database命令,可以更改數據庫的某些特性。通常,您將使用它來更改在db.opt文件中設置的數據庫選項。例如,這里我們將db.opt中的study數據庫的字符集定義為LATIN
# cat /var/lib/mysql/study/db.opt default-character-set=latin1 default-collation=latin1_swedish_ci ..
現在,要將其更改為UTF8,我們可以使用alter database命令,如下所示。
MariaDB [(none)]> ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci; Query OK, 1 row affected (0.00 sec)
任何時候執行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的同義詞。
ALTER DATABASE study CHARACTER SET = utf8 COLLATE = utf8_general_ci; ALTER SCHEMA study CHARACTER SET = utf8 COLLATE = utf8_general_ci;
另外,請注意,如果您已經在數據庫中,可以在“ALTER”命令中省略數據庫名稱,如下所示。
MariaDB [(none)]> USE study; MariaDB [study]> ALTER DATABASE CHARACTER SET = utf8 COLLATE = utf8_general_ci; Query OK, 1 row affected (0.00 sec)
正如你在這里看到的,我用了改變數據庫。所以,在我的ALTER DATABASE中,我沒有指定數據庫名稱。
7.升級遷移和編碼的數據目錄選項
如果您正在運行MySQL數據庫的更改版本(5.1之前),并嘗試升級到5.1或更高版本的MySQL / MariaDB版本,則需要執行此操作。具有“升級數據目錄名稱”選項的以下命令將使用與MySQL 5.1或更高版本相匹配的適當編碼實現來更新數據庫目錄的名稱。這將確保數據庫名稱和數據庫目錄映射正確,名稱中沒有任何編碼問題。
再次,只有當您從舊版本的MySQL升級到5.1或更高版本時,才會使用此功能。當您在數據庫名稱中具有特殊字符時,如下所示,數據庫名稱中具有連字號(即,-ekek-東東)。
另外,請注意,“#mysql11#”是應該使用的關鍵字,后跟數據庫名稱。
ALTER DATABASE `#mysql11#study-boys` UPGRADE DATA DIRECTORY NAME;
在這個例子中,上面的命令會將數據庫名稱正確地編碼為“@ 002dstudy @ 002dboys”,它將使用@ 002d作為數據庫名稱中的破折號特殊字符。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。