MariaDB之SQL語句基礎
阿新 • • 發佈:2019-05-01
code character collation base edi ali 創建數據庫 指定表 engine
數據庫組件:
數據庫:database 表: table 索引:index 視圖:view 用戶:user 權限:privileges 存儲過程:procedure 存儲函數:function 觸發器:trigger 事件調度器:event scheduler
DDL:Data Defination Language,數據定義語言
CREATE, DROP, ALTER
DML: Data Manipulation Language,數據操作語言
INSERT, DELETE, UPDATE, SELECT
DCL: Data Control Language,數據控制語言
GRANT, REVOKE
數據類型:
字符:
定長字符:CHAR(#)不區分大小寫, CHARBINARY(#)區分大小寫 變長字符: VARCHAR(#)不區分大小寫, VARCHARBINARY(#)區分大小寫
內建類型:ENUM, SET
對象存儲:
TEXT:不區分字符大小寫,最大可達到4G
BLOB: 區分字符大小寫
數值型 精確數值型 整型:int tinyint:1byte smallint: 2bytes mediumint:3bytes int: 4bytes bigint: 8bytes 十進制: decimal 近似數值型 單精度浮點型 float 雙精度浮點型 double
日期時間型: 日期: DATA 時間: TIME 日期時間:DATETIME 時間戳: TIMESTAMP 年份: YEAR(2), YEAR(4)
修飾符:
所有類型使用:
NOT NULL
DEFAULT
PRIMARY KEY
UNIQUE KEY
數值型使用:
UNSIGNED
AUTO_INCREMENT
DDL: CREATE、DROP、ALTER
數據庫:
創建數據庫:CREATE DATABASE|SCHMA [IF NOT EXISTS]‘DB_NAME‘;
# CREATE DATABASE test CHARACTER SET = utf8; 刪除數據庫:DROP DATABASE|SCHEMA [IF EXISTX] ‘DB_NAME‘;
# DROP DATABASE [IF EXISTS] test; 設置字符集: CHARACTER SET [=] ‘character set name‘ 設置排序規則: COLLATE ‘collate name‘ 查看支持的所有字符集: SHOW CHARACTER SET; 查看支持的所有排序規則:SHOW COLLATIONS;
獲取命令使用幫助:
msyql> HELP KEYWORD;
查看數據庫:SHOW DATABASES;
查看數據庫創建命令: SHOW CREATE DATABASE test \G
表:
創建表:CREATE TABLE [IF NOT EXISTS] ‘tb_name‘ (col type1,col type2...)
表選項:
設置存儲引擎: ENGINE [=] engine_name
指明行格式: ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSE|REDUNANT|COMPACT}
查看存儲引擎: SHOW ENGINES;
獲取幫助:
mysql> HELP CREATE TABLE
查看表創建命令:SHOW CREATE TABLE table_name;或 SHOW CREATE TABLE table_name \G
查看表狀態: SHOW TABLE STATUS LIKE ‘table_name‘\G
# CREATE TABLE students (id int(10) UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20) NOT NULL,age TINYINT(3) UNSIGNED);
# CREATE TABLE students2 (id int(10) UNSIGNED NOT NULL,name VARCHAR(20) NOT NULL,age TINYINT(3) UNSIGNED,PRIMARY KEY(id,name));
# 描述表結構: DESC student;
刪除表: DROP TABLE [IF EXISTS] ‘tbl_name‘;
# DROP TABLE [IF EXISTS] students;
修改表:ALTER TABLE ‘tbl_name‘
字段:
添加字段: add
Add col1 data_type [FIRST|AFTER col_name]
# ALTER TABLE ‘user‘ ADD gender ENUM(‘m‘,‘f‘);
刪除字段:drop
# ALTER TABLE students DROP gender;
修改字段:
修改字段名稱:change
# ALTER TABLE students CHANGE id sid int UNSIGNED NOT NULL;
修改字段屬性定義: modify
# ALTER TABLE students MODIFY sid tinyint UNSIGNED NOT NULL;
修改字段默認值: alter
# ALTER TABLE students ALTER gender SET DEFAULT ‘m‘;
索引:實際應用中不建議修改索引
添加索引:add
# ALTER TABLE students ADD UNIQUE KEY(name);
# ALTER TABLE students ADD INDEX(age);
刪除索引:drop
# ALTER TABLE students DROP age;
表選項:
索引:特殊數據結構,定義在查找時作為查找條件的字段
創建索引: CREATE INDEX index_name ON tbl_name(index_col_name,...); 刪除索引: DROP INDEX index_name ON tbl_name;
查看表上的索引:SHOW INDEXES FROM [db_name.]tbl_name;
# SHOW INDEXES FROM test.students;
DML: INSERT、DELETE、SELECT、UPDATE
INSERT INTO:
INSERT [INTO] tbl_name [(col1,col2,...)] { VALUES | VALUE } (VAL1,...),(...)...
# INSERT INTO students VALUES(1,‘alen‘,‘m‘),(2,‘張三‘,‘f‘);
SELECT:
SELECT col1,col2,... FROM tbl_name [WHERE clause][ORDER BY ‘col_name‘][LIMIT [m,]n]
字段表示法:
*:所有字段
as: 字段別名,col1 AS alias1;
DELETE:
DELETE FROM tbl_name [WHERE clause] [ORDER BY ‘col_name‘ [DESC]] [LIMIT [m,]n];
UPDATE:
UPDATE tbl_name SET col1=new_val1, col2=new_val2,..[WHERE clause] [ORDER BY ‘col_name‘ [DESC]] [limit [m,]n];
DCL: GRANT、REVOKE
用戶賬號及權限管理:
用戶賬號:‘user‘@‘host‘
user:用戶名 host: 此用戶訪問mysqld服務時允許通過哪些主機遠程創建連接 IP、網絡地址、主機名、通配符(%和_)
禁止檢查主機名:
my.cnf--> skip_name_resolve = yes
創建用戶賬號:
CREATE USER ‘username‘@‘host‘ [IDENTIFIED BY ‘password‘] # CREATE USER ‘wpuser‘@‘%‘ IDENTIFIED BY ‘wppassword‘; # SELECT User,Host,Password FORM user;
刪除用戶:
DROP USER ‘username‘@‘host‘;
# DROP USER ‘wpuser‘@‘host‘;
授權:
授權級別: 管理權限、數據庫、表、字段、存儲例程
GRANT pri_type,... ON [object_type] db_name.tb_name TO ‘user‘@‘host‘ [IDENTIFIED BY ‘password‘] [WITH GRANT OPTION];
priv_type: ALL [PRIVILEGES] db_name.tb_name; *.*: 指定庫的所有表;
db_name.*:指定庫的所有表; db_name.tb_name: 指定庫的指定表; db_name.routeine_name:指定庫的存儲例程;
查看指定用戶獲得的授權:
SHOW GRANTS FOR ‘root‘@‘localhost‘; # SHOW GRANTS FOR ‘wpuser‘@‘%‘; # SHOW GRANTS FOR CURRENT_USER;
回收授權:
REVOKE priv_type,... ON db_name.tb_name FROM ‘user‘@‘host‘;
# USE mysql;
# REVOKE DELETE ON test.* FROM ‘wpuser‘@‘%‘;
# SHOW GRANTS FOR ‘wpuser‘@‘%‘;
Note: MariaDB服務器進程啟動時會讀取mysql庫中的所有授權表至內存中;
1. GRANT或REVOKE等執行權限操作會保存於表中,MariaDB的服務進程會自動重讀授權表;
2.對於不能夠或不能及時重讀授權表的命令,可手動讓MariaDB的服務進程重讀授權表
# FLUSH PRIVILEGES
MariaDB之SQL語句基礎