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