MariaDB基礎(2)—管理篇

 

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

wKioL1Ys5SCQlj2LAACm_4_ofvU920.jpg



 

DDLdata definitionlanguage):

主要的命令有CREATEALTERDROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的連接和約束等初始化工做上,大多在創建表時使用。

  DMLdata manipulation language):

主要命令SELECTUPDATEINSERTDELETE,命令是用來對數據庫裏的數據進行操做的語言。

DCLData 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

wKiom1Ys5XXhhKSbAAB3OEMTkIk099.jpg


查看某庫建立時使用的語句:

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;

wKiom1Ys5rPTD7SmAAJ54TKQD9Y416.jpg

 

存儲引擎:表類型

建立每一個表時,均可以單獨指明其表類型;但,建議同一個庫內的全部表,應該使用同一種類型;

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] ...




DMLdata 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)

wKioL1Ys7iawQlUyAAUJ8B9rzlA230.jpg


查看用戶已經得到的受權:

 SHOW GRANTS [FOR user]

wKiom1Ys8CHhI-4NAAD-H8HRyGU554.jpg


收回受權:REVOKE

  REVOKE priv1,... ON db_name.tbl_name FROM 'username'@'host'; 

wKiom1Ys8LGTIKY7AAGoB7ocGRg961.jpg

如有錯誤,敬請指正!

謝謝!


關於MariaDB的學習,將會持續更新。。。。

相關文章
相關標籤/搜索