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'@'%';