SQL語句


SQL語句


DDL: CREATE, DROP, ALTER

DML: INSERT(REPLACE), DELETE, UPDATE, SELECT

DCL: GRANT, REVOKE

數據類型:

字符:

變長字符:VARCHAR(#),VARBINARY(#)

定長字符: CHAR(#), BINARY(#)

內建類型: ENUM, SET

對象: TEXT, BLOB

數值:

精確數值

整型: INT

TINYINT, AMALLINT, INT, MEDIUMINT, BIGINT

十進制:DECIMAL

近似數值

單精度: FLOAT

雙精度:  DOUBLE

日期時間型:

DATE:    日期

TIME:   時間

DATATIME: 日期時間

TIMESTAMP: 時間戳

YEAR(2|4):  年份

修飾符:

NOT NULL

DEFAULT VALUE

UNSIGNED 

AUTO_INCREMENT

PRIMARY KEY


DDL:

數據庫

CREATE DATABASE [IF NOT EXISTS] db_name;

CHARACTER SET [=] charset

COLLATE [=] collate

SHOW CHARACTER SET;    查看字符集

SHOW COLLATIONS;       查看排序規則

DROP DATABASE [IF EXISTS] db_name;  刪除數據庫

數據表

CREATE TABLE [IF NOT EXISTS] tb_name (col1 type1,col2,type2,...)

PRIMARY KEY(col1,col2,...)

INDEX(col1,col2,...)

UNIQUE(col1,col2,...)

表選項

ENGINE [=] engine_name

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

SHOW ENGINES;  查看存儲引擎;

獲取幫助:

mysql> HELP CREATE TABLE;

查看創建命令:

SHOW CREATE TABLE tb_name;

查看錶狀態:

SHOW TABLE STATUS LIKE 'tb_name'\G

刪除表:

DROP TABLE [IF EXISTS] tb_name;

修改表:

ALTER TABLE tb_name;

字段:

添加字段: ADD

ADD col1 data_type [FIRST | AFTER col_name]

刪除字段: DROP

修改字段: ALTER ,CHANGE,MODIFY

改字段名稱: CHANGE

改屬性定義:  MODIFY

索引:

添加索引: add

刪除索引:  drop {INDEX} INDEX_NAME;

表選項


查看錶上的索引:

SHOW INDEXES FROM [db_name.]tb_name;

刪除索引:

ALTER TABLE tb_name DROP INDEX index_name;


索引:

索引是一種特殊數據結構; 定義在查找時作爲查找條件的字段; 

索引,要有索引名稱;

創建索引:

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

刪除索引:

DROP INDEX index_name ON tb_name;

DML: 

INSERT :

INSERT [INTO] tbl_name [(col_name,...)]{VALUES | VALUE}(val1,...)


例:

#INSERT INTO tb1 VALUES (1,'yanguo','m'),(2,'xiaolongnv','f');

#INSERT INTO tb1 (id,name) VALUES (3,'zhangwuji'),(4,'zhaomin');

DELETE:

DELETE FROM tbl_name [WHERE where_condition]

例:

DELETE FROM tb1 WHERE id=3;

    

SELECT:

SELECT col1,col2,... FROM tb_name;

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

字段表示法:

* : 表示所有字段

as : 字段別名, col1 AS alias1

WHERE clase:

操作符

<, > ,==,>=,<=,!=

BETWEEN ... AND... (在..和..之間)

LIKE:

% 任意長度的任意字符

— 任意單個字符

RLIKE:

正則表達式,不建議使用;

條件邏輯操作:

and 

or

not

例:

SELECT * FROM tb1;

SELECT * FROM tb1 WHERE id <3;

SELECT * FROM tb1 WHERE gender IS NULL;

SELECT * FROM tb1 ORDER BY id DESC;

SELECT * FROM tb1 WHERE id BETWEEN 2 AND 4;

SELECT * FROM tb1 WHERE name LIKE 'z%';

SELECT * FROM tb1 WHERE name LIKE 'z%';



UPDATE

UPDATE tb_name SET col1=new-val1,col2=new_val2,... [WHERE clause]

注意:後面一定要指定條件WHERE,不然會更改整個表;

例:

UPDATE tb1 SET gender='f' WHERE id=4;



用戶賬號及權限管理:


用戶賬號: ‘user’@'host'

user: 用戶名

host: 此用戶訪問mysql服務時允許通過哪些主機遠程創建連接;

IP, 網絡地址, 主機名, 通配符(%和_);

禁止檢查主機名

my.cnf [mysqld]

skip_name_resove = yes  跳過主機名解析

創建用戶

CREATE USER 'username'@'host' [IDENTIFIED BY 'passwd'];

例:

CREATE USER 'candy'@'%' IDENTIFIED BY 'candy';

SELECT User,Host,Password FROM mysql.user;

刪除用戶:

DROP USER ‘username’@'host';

授權:

權限: 管理權限,數據庫,表,字段,存儲例程

GRANT priv_type,...ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'passwd']

[with option];

priv_type: ALL [PRIVILEGES]

db_name.tb_name:

*.* 所有庫的所有表;

db_name.* 指定庫的所有表;

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

db-name.routine_name: 指定庫的存儲例程;

查看指定用戶獲得的授權:

SHOW GRANTS FOR 'user'@'host';

 

查看當前用戶的授權:

SHOW GRANTS FOR CURRENT_USER;

撤消授權:

REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host';

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

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

2.對於不能夠或不能及時重讀授權表的命令,可手動讓mariadb的服務進程重讀授權表;

mysql> flush privileges;








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