SQL語句:
DDL(Data Definition Languages)語句:數據定義語言;操作對象:數據段、數據庫、表、列、索引等。
數據庫:
創建:CREATE DATABASE dbname;
刪除:DROP DATABASE dbname;
表:
創建:CREATE TABLE tablename(
id INT(5) auto_increment(自增關鍵詞) PRIMARY KEY,
name VARCHAR(20) NOT NULL);
刪除:DROP TABLE tablename;
修改:ALTER TABLE tablename RENAME new_tablename;(修改表名)
ALTER TABLE tablename MODIFY name VARCHAR(10);(修改某列的屬性)
ALTER TABLE tablename ADD column_name VARCHAR(20) [FIRST/(AFTER col_name)](作為插入的位置);(添加一列)
ALTER TABLE tablename DROP col_name;(刪除一列)
ALTER TABLE tablename CHANGE old_col_name new_col_name VARCHAR(20) [FIRST/(AFTER col_name)];(修改列名)
(!CHANGE和MODEFY區別:CHANGE可以修改列名,MODIFY不可以,但是CHANGE兩次列名都得寫。)
DML(Data Manipulation Languages)語句:數據操縱語句;操作對象:表的增刪查改
增:INSERT INTO tablename(col1_name,col2_name) values(value1,value2);
刪:DELETE FROM tablename [WHERE CONDITION];
查:SELECT * FROM tablename;
改:UPDATE tablename set col_name = 'value' where id = 1;
查詢升級版(還會更新):
ONE:
SELECT dep,COUNT(*)
FROM tablename
GROUP BY dep
HAVING COUNT(*) >= 2;
TWO:
SELECT *
FROM tablename
WHERE col_name='abc'
LIMIT 0,2(0,2意為:從序號0開始後面的兩條數據,eg:2,2意為,從序號1開始後面的兩條)
ORDER BY col_name DESC;
THREE:
SELECT *
FROM tablename
WHERE dep IN(
SELECT dep
FROM tablename_1);(!如果子查詢記錄數唯一,IN可以用“=”代替。)
FOUR:
SELECT dep FROM tablename
UNION / (UNION ALL)
SELECT dep FROM tablename_2
知識點:表的連接查詢。
WITH ROLLUP:對分類聚合的結果再匯總。
HAVING和WHERE的區別:WHERE是聚合前進行條件篩選,HAVING是聚合後進行條件篩選,能用WHERE時優先使用WHERE這樣對查詢可以
做到一定的優化。
UNION和UNION ALL的區別:UNION是將UNION ALL後的結果進行一次DISTINCT,去除重復記錄後的結果。
DCL(Data Control Languages)語句:數據控制語言(開發人員很少使用);操作對象:數據許可、訪問級別
授權:GRANT SELECT,INSERT ON tablename.* TO 'Z1'@'localhost' IDENTIFY BY '123';
收回:REVOKE INSERT ON tablename.* FROM 'Z1'@'localhost';
知識點:元數據,為數據的數據,如表名列名等表的各種屬性名稱。
information_schema數據庫就是用來記錄MySQL中的元數據信息,此數據庫是一個虛擬的數據庫,物理上並不存在相關的目錄和文件,全部為視圖。
視圖:
SCHEMATA:所有數據庫信息。
TABLES:數據庫中的表信息
COLUMNS:表中的列信息
STATISTICS:表索引的信息