MariaDB的簡單使用

SQL語句分類:

DDL:Data Defination Language 數據定義語言

  CREATE,DROP,ALTER

  創建  刪除 修改

DML:Data Maipulation Language 數據修改語言

  INSERT,DELETE,UPDATE,SELECT

  插入  刪除  修改   查詢

  GRANT:權限新增

  REVOKE:權限刪除

數據類型:

字符型:

  定長字符型:CHAR(#)不區分字符大小,BINARY(#)區分字符大小寫,#號爲可選項,可以指定長度

  變長字符型:VARCHAR(#)不區分字符大小寫,VARBINARY(#)區分字符大小寫,#號爲可選項,可以指定長度

  

  對象存儲:

    TEXT:不區分大小

    BLOB:區分字符大小寫

  內置類型:

    ENUM:枚舉類型

    SET:集合

數值型

  精確數值型:

    整型:int

        tinyint:1byte

        smallint:2bytes

        mediumint:3bytes

        int:4bytes

        bigint:8bytes

    十進制:decimal

 近視數值型:

    單精度浮點型:

      float

    雙精度浮點型:

      double

日期時間型

  日期:DATE

  時間:TIME

  日期時間:DATETIME

  時間戳:TIMESTAMP

  年份:YEAR(2),YEAR(4)

修飾符

  所有類型使用:

    NOT NULL,非空約束

    DEFAULT VALUE,設定默認值

    PRIMARY KEY,主鍵

    UNIQUE KEY,唯一鍵

  數值型使用:

    UNSIGNED,無符號,即正數

    AUTO_INCREMENT,自增字段


數據庫操作語句:

創建數據庫

CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';

例:

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS mydb;
// 此條命令產生的效果爲:如果mydb數據庫不存在,就創建一個名爲mydb的新數據庫

刪除數據庫

DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

例:

MariaDB [(none)]> DROP DATABASE IF EXISTS mydb;
// 此條命令產生的效果爲:如果mydb存在,就刪除這個數據庫

設置默認數據庫

USE DB_NAME;

MariaDB [(none)]> USE mydb;

設置字符集

CHARACTER SET 'CHAR SET NAME';

例:

MariaDB [(none)]> CHARACTER SET gb2312; // 設置字符集爲gb2312

查看支持的所有字符集

SHOW CHARACTER SET;

例:

MariaDB [(none)]> SHOW CHARACTER SET;   // 查看可用字符集

設置排序規則

COLLATE 'COLLATE NAME';

例:

MariaDB [(none)]> COLLATE big5_bin;     // 設置排序規則爲big5_bin

查看支持的所有排序規則

SHOW COLLATION;

例:

MariaDB [(none)]> SHOW COLLATION;       // 查看支持的所有排序規則

獲取命令使用幫助

HELP KEYWORD;

例:

MariaDB [(none)]> HELP CREATE DATABASE;  // 獲取CREATE DATABASE命令的相關幫助信息

查看數據庫信息:SHOW DATABASES;

查看錶信息:SHOW TABLES;

NOTE:刪除操作不可逆且不可恢復。


表操作語句:

創建表

CREATE TABLE [IF NOT EXISTS] [db_name.]tb_name (col1 datatype 修飾符,col2 datatype 修飾符...) [ENGINE=''];

例:

MariaDB [mydb]> CREATE TABLE IF NOT EXISTS mytb1 (id int NOT NULL,name varchar
(100) NOT NULL,age int);
// db_name位數據庫名,創建表時需要指定表屬於哪個數據庫,如果設置了默認數據庫,則無需使用
此命令
// col1爲列名
// datatype爲數據類型
// 修飾符有NULL,NOT NULL,PRIMARY KEY,UNIQUE KEY等
//  ENGINE爲數據引擎

MariaDB [mydb]>  CREATE TABLE students(id int UNSIGNED NOT NULL PRIMARYKEY,name VARCHAR(20)
 NOT NULL,age Tinyint UNSIGNED);
//  定義id字段爲無符號整數,並且要求爲非空,且爲主鍵
//  定義name字段爲可變字符,長度限制爲20,並且要求爲非空
//  定義age字段爲無符號Tinyint

可以定義單個字段爲主鍵,也可以定義多個字段爲主鍵,只要多個字段聯合起來不相同即可

例:

MariaDB [mydb]>  CREATE TABLE tbl2(id int UNSIGNED NOT NULL,name VARCHAR(20) NOT NULL,age 
tinyint UNSIGNED,PRIMARY KEY(id,name));
// PRIMARY KEY(id,name)
// 這裏定義id和name同時爲主鍵,只要id+name不重複即可

獲取幫助:

MariaDB [mydb]>  HELP CREATE TABLE;


ENGINE即數據庫引擎,也稱之爲表類型,查看錶類型列表命令如下:

MariaDB [mydb]> SHOW ENGINES;

表格存儲格式:

ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}


查看錶

SHOW TABLES [FROM db_name];

例:

MariaDB [mydb]> SHOW TABLES FROM mydb;

查看錶結構

MariaDB [mydb]>  DESC [DB_NAME.]tb_name;

例:

MariaDB [mydb]> DESC mydb.mytb1;

查看錶創建命令

MariaDB [mydb]>  SHOW CREATE TBALE tbl_name;

例:

MariaDB [mydb]>  SHOW CREATE TABLE mytb1;

查看錶狀態:

MariaDB [mydb]>  SHOW TABLE STATUS LIKE 'tbl_name'[\G]

例:

MariaDB [mydb]>  SHOW TABLE STATUS LIKE mytb1 \G;
// \G表示豎排顯示

刪除表:NOTE:刪除操作不可逆且不可恢復。

DROP TABLE [IF EXISTS] tb_name;

例:

MariaDB [mydb]> DROP TABLE IF EXISTS mytb1;


修改表操作

使用ALTER TABLE命令,這個命令下有很多子命令


添加字段

ALTER TABLE tbl_name ADD col1 data_type [FIRST|AFTER col_name]

例:

MariaDB [mydb]> ALTER TABLE students ADD age ENUM('m','f') FIRST;
即在students表中添加一個字段age,其字符類型爲枚舉型,只能爲m或f,且位於第一個字段

ADD子命令還可以單獨添加字段的約束

例:

Maria DB [mydb]> ALTER TABLE students ADD UNIQUE KEY(name);

刪除字段

ALTER TABLE students DROP COLUMN col_name;

例:

MariaDB [mydb]> ALTER TABLE students DROP COLUMN age;
意爲刪除students表中的age字段

修改字段名和字段屬性:(無法單獨修改字段屬性)

ALTER TABLE students CHANGE col_name col_name_new data_type options;

例:

MariaDB [mydb]> ALTER TABLE students CHANGE age ages int UNSIGGNED NOT NULL;
意爲修改students表的字段age爲ages,並且設置類型爲int的無符號,不能爲空

NOTE:需要注意的是,CHANGE命令修改字段屬性時,必須修改字段名,不能只修改字段屬性,而不修改字段名,但修改字段名時,可以不修改字段屬性。

修改字段屬性

ALTER TABLE MODIFY col_name data_type options;

例:

MariaDB [mydb]> ALTER TABLE MODIFY age int;
只修改字段屬性


索引:

索引是特殊數據結構,定義在查找時作爲查找條件的字段;可加速查詢速度,缺點是會佔據額外空間

索引可以有額外名稱;如果不設置名稱,並且是單鍵索引,那麼索引名稱默認爲字段名

創建索引

CREATE INDEX index_name ON tbl_name (index_col_name,...);

例:

MariaDB [mydb]> CREATE INDEX myindex ON students (id);
// 這裏是爲students表的id字段創建索引,且命名爲myindex
MariaDB [mydb]> CREATE INDEX myindex2 ON students (age,name);
// 這裏是爲students表達age和name字段創建聯合索引,且命名爲myindex2

刪除索引

DROP INDEX index_name ON tbl_name;

例:

MariaDB [mydb]> DROP INDEX myindex ON students;
// 這裏是刪除表students中的名爲myindex索引

ALTER TABLE tbl_name DROP INDEX(col_name);

例:

MariaDB [mydb]> ALTER TABLE students DROP INDEX(age);
// 這裏是刪除表students中的age字段上的索引

添加索引

ALTER TABLE tbl_name ADD INDEX(col_name);

MariaDB [mydb]> ALTER TABLE students ADD INDEX(age);
// 這裏是給表students的age字段添加索引

查看索引

SHOW INDEXES FROM [db_name.]tbl_name;

MariaDB [mydb]> SHOW INDEXES FROM mydb.students;
// 這裏是顯示出mydb數據庫下的students表中的所有索引


數據操作:


插入數據

INSERT [INTO] tbl_name [(col_name,...)] (VALUES | VALUE) (VAL1,...),(...),...

例:

MariaDB [mydb]> INSERT INTO students VALUES (1,'li','m'),(2,'wa','f');
可以一次性插入所有字段的數據
MariaDB [mydb]> INSERT INTO students (sid,name) VALUES (3,'zz'),(4,'dd');
也可以插入指定字段的數據

查詢數據

SELECT col1,col2,...FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];

  ORDER BY 'col_name' 根據col_name升序排序

  ORDER BY 'col_name' DESC 根據col_name降序排序

  ORDER BY 'col_name' DESC LIMIT 4 根據col_name降序排序,只顯示4個

  ORDER BY 'col_name' DESC LIMIT 1,2 根據col_name降序排序,並且偏移1個,顯示2個

  

  col_name可用'*'指代所有字段

  as:字段別名,col1 AS alias_name

例:

MariaDB [mydb]> select sid AS stuid,name AS stuname FROM students;
查詢students表中sid和name的所有字段數據,並將sid臨時改名爲stusid,將name臨時改名爲stuname

   操作符:

     (1)<,>,>=,<=,==,!=

     (2)BETWEEN...AND...

      例:

MariaDB [mydb]> SELECT * FROM students WHERE sid>=2 and sid<=4;
MariaDB [mydb]> SELECT * FROM students WHERE sid BETWEEN 2 AND 4;
// 上面兩個示例的作用相同,都是刪選sid大於等於2,小於等於4的所有數據。

     (3)LIKE

       通配符:% 表示任意長度的任意字符;

           _ 表示任意單個字符;

       例:

MariaDB [mydb]> SELECT * FROM students WHERE name LIKE 'z%';
// 這裏表示在students表中查找name字段爲z開頭的任意長度的任意字符的數據

     (4)RLIKE

       基於正則表達式作字符匹配

      例:

MariaDB [mydb]> SELECT * FROM students WHERE name RLIKE '.*u.*';
// 這裏表示在students表中查找name字段中包含u字母的數據

     (5)IS NULL 爲空

         IS NOT NULL 爲非空

        例:

MariaDB [mydb]> SELECT * FROM students WHERE name IS NULL;
// 這裏表示在students表中查找name字段爲空的數據
MariaDB [mydb]> SELECT * FROM students WHERE name IS NOT NULL;
// 這裏表示在students表中查找name字段爲非空的數據

   條件邏輯操作:

    and 與

    or 或

    not 非

   例:

MariaDB [mydb]> SELECT * FROM students WHERE sid >=2 AND sid <= 4;
// 這裏表示查找students表中sid小於等於4且大於等於2的數據
MariaDB [mydb]> SELECT * FROM students WHERE sid >=2 OR name == 'zi';
// 這裏表示查找students表中sid大於等於2或者name爲zi的數據 
MariaDB [mydb]> SELECT * FROM students WHERE NOT sid >=2;
// 這裏表示查找students表中sid小於2的數據,即sid>=2取反


刪除數據

DELETE FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m],n];

例:

MariaDB [mydb]> DELETE FROM students where sid == 3;
// 這裏表示刪除students表中sid爲3的所有行數據

NOTE:需要注意的是,如果DELETE FROM tbl_name後不接條件語句,那麼默認會刪除整張表的數據。


更新數據

UPDATE tbl_name SET col1=new_val1,col2=new_val2,...[WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m],n];

例:

MariaDB [mydb]> UPDATE students SET name='zi',age=16 WHERE id == 4;
// 這裏表示修改students表中的id爲4的行的name字段爲zi,age爲16


用戶帳號及權限管理:

用戶帳號格式:USERNAME@HOST

  USERNAME:用戶名

  HOST:此用戶訪問mysqld服務時允許通過哪些主機遠程創建連接:其中可以是IP,主機名,通配符(%和_);


創建用戶

CREATE USER USERNAME@HOST [IDENTIFIED BY 'PASSWORD'];

例:

MariaDB [mydb]> CREATE USER user1@localhost IDENTIFIED BY 'redhat';
這裏表示創建一個用戶名爲user1且密碼爲redhat的用戶,且此用戶只能通過本機登錄

刪除用戶:

DROP USER 'USERNAME@LOCALHOST;

例:

MariaDB [mydb]> DROP USER user1@localhost;
這裏表示刪除可以通過本機登錄的用戶user1

用戶授權

權限分類:管理,數據庫,表,字段,存儲例程(存儲過程,存儲函數,觸發器)等;

GRANT priv_type,...ON [object_type] db_name.tb_name TO 'USERNAME@HOST' [IDENTIFIED BY 'PASSWORD'] [WITH GRANT OPTION];

意爲:給予指定登錄位置的指定用戶在指定數據庫的指定表中的指定權限;

  選項:

  priv_type:ALL | [PRIVILEGES],ALL表示所有權限

  db_name.tb_name:

    *.*:所有數據庫的所有表;

    db_name.*:制定庫的所有表;

    db_name.tb_name:指定庫的指定表;

    db_name.routing_name:制定庫的存儲例程;

  WITH GRANT OPTION:意味着指定用戶可以把自己的所有權限轉授(複製)到其他的用戶;

例:

MariaDB [mydb]> GRANT SELECT,DELETE ON mydb.students TO user1@localhost;
// 這裏表示給只能在本機登錄的user1用戶賦予在mydb數據庫中的students表的查詢及刪除權限

NOTE:需要注意的是,如果用戶不存在,這可以在指定用戶的時候加上IDENTIFIED BY PASSWORD即可創建新用戶並同時指定密碼

查看用戶權限

SHOW GRANTS FOR USERNAME@HOST;

查看指定用戶的權限

SHOW GRANTS FOR CURRENT_USER;

查看當前用戶的權限

例:

MariaDB [mydb]> SHOW GRANTS FOR user1@localhost
// 這裏表示查看限制本機登錄的用戶user1的權限

回收用戶權限

REVOKE priv_type,...ON db_name.tb_name FROM USERNAME@HOST;

例:

MariaDB [mydb]> REVOKE DELETE ON mydb.students FROM user1@localhost;
// 這裏表示從限制本機登錄的用戶user1權限中回收在mydb數據庫中的students表的DELETE權限


注意:MariaDB服務進程啓動時會讀取mysql數據庫中的所有授權表至內存中;

(1)GRANT或REVOKE等執行權限操作會保存於授權表中,MariaDB的服務進程會自動重讀授權表;

(2)對於不能夠或不能及時重讀授權表的命令執行後,可手動讓MariaDB的服務進程重讀授權表;

    重讀授權表命令:FLUSH PRIVILEGES;



寫的比較潦草,如有遺漏錯誤和爭議之處,歡迎大家的批評指正和討論,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章