MySQL常用DDL、DML、DCL語言整理


DDL

----Data Definition Language 數據庫定義語言 如 create procedure之類

創建數據庫

CREATE DATABASE [IF NOT EXISTS] DBNAME [CHARACTER SET 'CHAR_NAME'] [COLLATE 'COLL_NAME']

修改:ALTER 刪除:DROP

 

DML

----Data Manipulation Language 數據操縱語言

如insert,delete,update,select(插入、刪除、修改、檢索)插入修改數據

 

mysql>INSERT INTO students (Name,Gender,teacher) VALUE ('lujunyi','M','mage'),('wusong','M','zhuima');

mysql>INSERT INTO students SET Name='lujunyi',Gender='M',tearcher='zhuima';

 

更新數據

mysql>UPDATE tb_name SET column=value WHERE column=value;

mysql>UPDATE students SET Course='mysql' WHERE Name='lujunyi';

 

替換數據:

 和UPDATE使用方式一樣,只要將UPDATE換成REPLACE即可

 

刪除數據:

mysql>DELETE FROM tb_name WHERE conditions;

mysql>DELETE FROM students WHERE Course='mysql';
 
        

清空表:

mysql>TRUNCATE tb_name

 

查詢數據

單表查詢:

mysql>SELECT [DISTINCT] column FROM tb_name WHERE CONDITION;

 

EXAMPLE:

#基本投影查詢

mysql>SELECT Name,teacher FROM students WHERE Name='wusong';

 

#重復的結果只顯示一次

mysql>SELECT DISTINCT Gender FROM students;

 

#組合條件,可以使用AND,OR,NOT,XOR組合多個條件

mysql>SELECT * FROM students WHERE Age>20 AND Gender='M';

 

#使用BETWEEN...AND...篩選出年齡介於20-25之間的數據

mysql>SELECT * FROM students WHERE Age BETWEEN 20 AND 25;

 

#查詢Name以Y開頭的的數據,%表示任意長度的任意字符,_表示任意單個字符

mysql>SELECT * FROM student WHERE Name LIKE 'Y%';

 

#使用正則表達式匹配查詢,關鍵詞為RLINK或者REGEXP

mysql> SELECT * FROM students WHERE Name RLINK '^[MNY].*$';

 

#使用IN關鍵詞,將條件限定在一個列表中。用IS關鍵詞,表示條件是否為空(IS NULL 或者 IS NOT NULL)

mysql>SELECT * FROM students WHERE Age IN (20,22,24);

 

#將查詢的結果進行排序

mysql>SELECT * FROM students ORDER BY Name {ASC|DESC};

 

#查詢結果別名顯示

mysql>SELECT Name AS Stu_Name FROM students;

 

#LIMIT限定查詢結果的條數,LIMIT 2,3表示偏移2條數據后,取3條數據

mysql>SELECT * FROM students LIMIT 2;

 

#求平均數:AVG(),最大值:MAX() 最小值MIN() 數量:COUNT() 求和:SUM()

mysql>SELECT AVG(age) FROM students;

 

#分組GROUP BY

mysql>SELECT Age, Gender FROM students GROUP BY Gender;

 

#別名:AS

mysql>SELECT COUNT(Age) AS Num,Age FROM students GROUP BY Age;

 

#過濾:HAVING

mysql>SELECT COUNT(Age) AS Num,Age FROM students GROUP BY Age HAVING Num>2;

 

多表查詢:

#指定已哪個字段連接2張表

mysql>SELECT students.Name,courses.Cname FROM students,courses WHERE students.CID1 = courses.CID;

 

#連接時指定別名

mysql>SELECT students.Name,courses.Cname FROM students,courses WHERE students.CID1 = courses.CID;

 

#左外連接...LEFT JOIN...ON...

mysql>SELECT s.Name,c.Cname FROM students AS s LEFT JOIN courses AS c ON s.CID1=c.CID;

 

#右外連接...RIGHT JOIN...ON...

mysql>SELECT s.Name,c.Cname FROM students AS s RIGHT JOIN courses AS c ON s.CID1=c.CID;

 

子查詢

#查詢年齡大於平均年齡的數據

mysql>SELECT * FROM students WHERE Age > (SELECT AVG(Age) FROM students);

 

#在FROM中使用子查詢

mysql>SELECT Name,Age FROM (SELECT * FROM students WHERE CID IN (2,3)) AS t WHERE Age>20;

 

#聯合查詢

mysql>(SELECT Name,Age FROM students) UNION (SELECT Tname,Age FROM tutors);

 

創建視圖

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:

mysql>CREATE USER 'lujunyi'@'%' IDENTIFIED BY '123456';

mysql>SHOW GRANTS FOR 'lujunyi'@'%';

mysql>GRANT ALL PRIVILEGES ON testdb.* TO 'lujunyi'@'%';

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM