MariaDB的交互命令接口:mysql>mysql
可運行的命令有兩類:正則表達式
客戶端命令:在mysql客戶端本地直接運行的命令sql
經過help獲取完整列表:數據庫
mysql> helpbash
服務器端命令:由客戶端將命令經過協議封閉成報文發往mysqld,由mysqld運行,並取回運行結果至客戶端;服務器
即SQL語句,這些語句必須有語句結束符,默認爲分號;網絡
客戶端命令:ide
quit, \q:退出客戶端學習
help, \h:獲取幫助信息ui
clear, \c: 停止正在編寫的語句;相似bash中的Ctrl+c的功能;
go, \g:語句結束符
ego, \G: 語句結束符,但豎排顯示每行數據;
delimter, \d: 定義語句結束符;
use, \u: 設定要操做默認數據庫
sql語句:
獲取幫助:help KEYWORD
DDL(data definitionlanguage):
主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的連接和約束等初始化工做上,大多在創建表時使用。
DML(data manipulation language):
主要命令SELECT、UPDATE、INSERT、DELETE,命令是用來對數據庫裏的數據進行操做的語言。
DCL(Data Control Language):
數據庫控制功能。是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。
數據庫管理操做:
建立數據庫:CREATE DATABASE
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS]db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name |[DEFAULT] COLLATE [=] collation_name MariaDB [(none)]> CREATE DATABASEtest_MariaDB ;
查看已有數據庫:SHOW DATABASES
查看某庫建立時使用的語句:
SHOWCREATE DATABASE db_name;
MariaDB [(none)]> SHOW CREATE DATABASEtest_MariaDB; +--------------+-------------------------------------------------------------------------+ | Database | Create Database | +--------------+-------------------------------------------------------------------------+ | test_MariaDB | CREATE DATABASE`test_MariaDB` /*!40100 DEFAULT CHARACTER SET latin1 */ | +--------------+-------------------------------------------------------------------------+ 1 row in set (0.00 sec)
查看MySQL支持的全部字符集:
SHOW CHARACTER SET;
MariaDB [test_MariaDB]> SHOW CHARACTER SET; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | +----------+-----------------------------+---------------------+--------+ | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | ....... | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 |
查看MySQL支持的全部Collate:
SHOW COLLATION;
MariaDB [(none)]> SHOW COLLATION; +--------------------------+----------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | +--------------------------+----------+-----+---------+----------+---------+ | big5_chinese_ci | big5 | 1 | Yes | Yes | 1 | | big5_bin | big5 | 84 | | Yes | 1 | | dec8_swedish_ci | dec8 | 3 | Yes | Yes | 1 | | dec8_bin | dec8 | 69 | | Yes | 1 | ......
刪除數據庫:DROP DATABASE
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
修改數據庫:
ALTER {DATABASE | SCHEMA} [db_name] alter_specification ... ALTER {DATABASE | SCHEMA} db_name UPGRADE DATA DIRECTORYNAME alter_specification: [DEFAULT] CHARACTER SET[=] charset_name | [DEFAULT] COLLATE [=]collation_name
表的管理操做:
建立表:CREATE TABLE 建立表時,能夠同時建立索引
CREATE TABLE [IF NOT EXISTS] tbl_name (col1 type1 dec1, col2 type2dec2, ...)
經過表選項:
設置主鍵PRIMARY KEY,惟一鍵UNIQUE KEY,外鍵FOREIGN KEY
選擇使用的存儲引擎:ENGINE = engine_name
例如:學號、姓名、年齡、性別
學號:StuID, INT
姓名:Name, 定長字符,30
年齡:Age, TINYINT
性別:Gender, 枚舉,ENUM('M','F')
示例:
MariaDB [test_MariaDB]> CREATE TABLE IF NOT EXISTS students(StuID INT UNSIGNED NOT NULL PRIMARY KEY, Name CHAR(30) NOT NULL, Age TINYINTUNSIGNED, Gender ENUM('M','F')); Query OK, 0 rows affected (0.76 sec)
注意:MySQL支持插件存儲引擎
查看支持的全部存儲引擎
SHOW ENGINES;
存儲引擎:表類型
建立每一個表時,均可以單獨指明其表類型;但,建議同一個庫內的全部表,應該使用同一種類型;
SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE'pattern' | WHERE expr] LIKE用於做模糊匹配,支持通配符: _: 匹配任意單個字符; %: 匹配任意長度的任意字符;
索引管理:
建立索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name(index_col_name,...)
刪除索引:
DROP INDEX index_name ON tbl_name
查看錶結構:
DESC tbl_name
MariaDB [test_MariaDB]> desc students; +--------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra| +--------+---------------------+------+-----+---------+-------+ | StuID | int(10)unsigned | NO | PRI | NULL | | | Name | char(30) | NO | | NULL | | | Age | tinyint(3) unsigned| YES | | NULL | | | Gender | enum('M','F') | YES | | NULL | | +--------+---------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
查看數據庫的表:
SHOW [FULL] TABLES [{FROM |IN} db_name] [LIKE 'pattern' | WHERE expr]
刪除表:DROP TABLE
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
DML(data manipulation language):
操做表中的數據:
插入數據:
INSERT [INTO] tbl_name[(col_name,...)] {VALUES | VALUE} ({expr |DEFAULT},...),(...),... MariaDB [test_MariaDB]> INSERT INTO studentsVALUES(01,'Roger',18,'M'); Query OK, 1 row affected (0.07 sec)
刪除數據:
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] WHERE子句:過濾條件 布爾型表達式: MariaDB [test_MariaDB]> delete from students where stuid=03; Query OK, 1 row affected (0.05 sec)
SELECT單表查詢:
SELECT [DISTINCT] [SQL_CACHE | SQL_NO_CACHE] col_name AS Alias, col_name AS Alias, ... [FROM table_references [WHERE where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] WHERE後的條件表達式: >, <, >=, <=, ==, != BETWEEN ... AND ... LIKE 'pattern' _ :匹配任意單個字符 % :匹配任意個數字符 RLIKE 'pattern' 使用正則表達式作匹配; 組合條件:或 與非 OR AND NOT MariaDB[test_MariaDB]> select * from students; +-------+-------+------+--------+ | StuID | Name | Age | Gender | +-------+-------+------+--------+ | 1 | Roger | 18 | M | | 2 | Roger | 30 | M | | 3 | Roger | 70 | M | | 4 | Roger | 70 | M | +-------+-------+------+--------+ 4 rows in set (0.00 sec)
更新數據 UPDATE:
UPDATE table_reference SET col_name1={expr1|DEFAULT}[, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] MariaDB [test_MariaDB]> UPDATE students SET name='Wang' WHERE stuid=3; Query OK, 1 row affected (0.03 sec) Rows matched: 1 Changed: 1 Warnings: 0
用戶及權限管理:
用戶帳號:
用戶帳號有兩部分構成 :'username'@'host'
host可以使用IP、網絡地址、使用通配符(_和%);
建立用戶帳號,並賦予密碼;
CREATE USER 'username'@'host' IDENTIFIED BY [PASSWORD] 'password';
MariaDB [(none)]> create user 'wang'@'%' identified by '123456'; Query OK, 0 rows affected (0.08 sec)
刪除用戶:
DROP USER 'username'@'host';
MariaDB [(none)]> DROP USER 'test'@'%'; Query OK, 0 rows affected (0.00 sec)
受權:
GRANT priv1,... ON db_name.tbl_name TO 'username'@'host' [IDENTIFIED BY [PASSWORD] 'password'];
若是是對用戶進行全局受權,則db_name.tbl_name用 *.*,
若是對某個數據庫中全部表受權,則db_name.*;
若是用戶事先不存在,則建立此帳號並受權;
ALL [PRIVILEGES]:表示全部權限,參照下圖
示例
MariaDB [(none)]> GRANT ALL ON test_MariaDB.students TO 'wang'@'%'; Query OK, 0 rows affected (0.03 sec)
查看用戶已經得到的受權:
SHOW GRANTS [FOR user]
收回受權:REVOKE
REVOKE priv1,... ON db_name.tbl_name FROM 'username'@'host';
如有錯誤,敬請指正!
謝謝!
關於MariaDB的學習,將會持續更新。。。。