mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)
在介紹這些SQL語言之前,先羅列一下mysql的常用數據類型和數據類型修飾,供查詢參考
后面的帶數字表示此類型的字段長度
數值型:
TINYINT 1 ,SMALLINT 2,MEDIUMINT 3 ,INT 4,BIGINT 8,DECIMAL,FLOAT 4,DOUBLE 8,BIT
字符串型
CHAR,VARCHAR,BINARY,VBINARY,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOG,TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT,EMUM,SET
日期時間型
date,time,datetime,timestamp
數據限定修飾:
NOT NULL,NULL,DEFAULT,AUTO_INCREMENT,UNSIGNED,PRIMARY KEY,UNIQUE KEY,FOREIGN KEY
CHARACTER SET?#ps:SHOW CHARACTER SET 顯示當前數據庫所支持的所有字符集
COLLATION?#ps:SHOW COLLATION 顯示所支持的所有排序規則
以下是SQL的每種DDL,DCL,DML語言
DDL
----Data Definition Language 數據庫定義語言
如 create procedure之類
創建數據庫
CREATE DATABASE [IF NOT EXISTS] DBNAME [CHARACTER SET 'CHAR_NAME'] [COLLATE 'COLL_NAME']
修改:ALTER 刪除:DROP
創建一張新表
CRTATE TABLE [IF NOT EXISTS] TBNAME(col_name col_definition,...)
EXAMPLE:
也可以這樣寫(區別在于單獨定義主鍵,唯一鍵和索引):
查詢出一張表的數據后創建新表(字段定義會丟失,數據會保留)
CREATE TABLE TBNAME SELECT...
EXAMPLE:
以一張表的格式定義,創建一張新的空表
CREATE TABLE TBNAME1 LIKE TBNAME2
修改表:
ALTER TABLE tb_name
MODIFY #修改字段定義
CHANGE #可以修改字段名和字段定義
ADD
DROP
EXAMPLE:
給表添加字段
添加惟一鍵
修改字段:
修改course字段為Course字段,并放在Name字段之后(修改字段需要帶上新的字段的定義)ps:MODIFY只能修改字段定義
重命名表名
添加一個外鍵約束
創建索引
CREATE INDEX index_name ON TABLE (col_name[(length)] [ASC|DESC]) [USING {BTREE|HASH}];
刪除索引
DROP INDEX index_name ON TBNAME;
查看表狀態:SHOW STATUS LIKE 'TBNAME';
查看表的索引:SHOW INDEXES FROM TBNAME;
DML
----Data Manipulation Language 數據操縱語言
如insert,delete,update,select(插入、刪除、修改、檢索)
插入修改數據
#如果每個字段都有值,不需要寫字段名稱,每組值用,隔開
mysql>INSERT INTO tb_name (col1,col2) VALUES ('STRING',NUM),('STRING',NUM);
mysql>INSERT INTO tb_name SET ?col1='string',col2='string';
mysql>INSERT INTO tb_name (col1,col2,col3) SELECT...;
EXAMPLE:
更新數據
替換數據:
和UPDATE使用方式一樣,只要將UPDATE換成REPLACE即可
刪除數據
mysql>DELETE FROM tb_name WHERE conditions;
清空表:將會重置計數器
mysql>TRUNCATE tb_name
查詢數據
單表查詢:
mysql>SELECT [DISTINCT] column FROM tb_name WHERE CONDITION;
EXAMPLE:
#基本投影查詢
#重復的結果只顯示一次
#組合條件,可以使用AND,OR,NOT,XOR組合多個條件
#使用BETWEEN...AND...篩選出年齡介于20-25之間的數據
#查詢Name以Y開頭的的數據,%表示任意長度的任意字符,_表示任意單個字符
#使用正則表達式匹配查詢,關鍵詞為RLINK或者REGEXP
#使用IN關鍵詞,將條件限定在一個列表中。用IS關鍵詞,表示條件是否為空(IS NULL 或者 IS NOT NULL)
#將查詢的結果進行排序
#查詢結果別名顯示
#LIMIT限定查詢結果的條數,LIMIT 2,3表示偏移2條數據后,取3條數據
#求平均數:AVG(),最大值:MAX() 最小值MIN() 數量:COUNT() 求和:SUM()
#分組GROUP BY
#別名:AS
#過濾:HAVING
多表查詢:
#指定已哪個字段連接2張表
#連接時指定別名
#左外連接...LEFT JOIN...ON...
#右外連接...RIGHT JOIN...ON...
子查詢
#查詢年齡大于平均年齡的數據
#在FROM中使用子查詢
#聯合查詢
創建視圖
CREATE VIEW VIEW_NAME AS SELECT....
DCL
----Data Control Language 數據庫控制語言
如grant,deny,revoke等,只有管理員才有這樣的權限。
創建用戶
mysql>CREATE USER 'USERNAME'@'HOST' IDENTIFIED BY 'PASSWORD'
刪除用戶
mysql>DROP USER 'USERNAME'@'HOSHOST支持通配符
_:任意單個字符
%:任意多個字符
授權
mysql>GRANT pri1,pri2...ON DB_NAME.TB_NAME TO 'USERNAME'@'HOST' [IDENTIFIED BY 'PASSWORD']
取消授權
mysql>REVOKE pri1,pri2...ON DB_NAME.TB_NAME FROM 'USERNAME'@'HOST';
查看授權
mysql>SHOW GRANTS FOR 'USERNAME'@'HOST';
EXAMPLE:
本文轉自lustlost 51CTO博客,原文鏈接:http://blog.51cto.com/lustlost/1224775,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的mysql ddl dcl_MySQL常用DDL、DML、DCL语言整理(附样例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ms+sql迁移到mysql_mssql
- 下一篇: mysql最大并行用户设置_mysql