SQL
- 什麼是SQL:結構化查詢語言(Structured Query Language)。
- SQL的作用:用戶端使用SQL來操作伺服器,如啟動mysql.exe,連接配接伺服器後,就可以使用sql來操作伺服器了。
- SQL标準(例如SQL99,即1999年制定的标準):由國際标準化組織(ISO)制定的,對DBMS的統一操作方式(例如相同的語句可以操作:mysql、oracle等)。
- SQL方言:某種DBMS不隻會支援SQL标準,而且還會有一些自己獨有的文法,這就稱之為方言!例如limit語句隻在MySQL中可以使用
SQL文法
- SQL語句可以在單行或多行書寫,以分号結尾
- 可使用空格和縮進來增強語句的可讀性
- MySQL不差別大小寫,建議使用大寫
SQL語句分類
- DDL(Data Definition Language):資料定義語言,用來定義資料庫對象:庫、表、列等;建立、删除、修改:庫、表結構!!!
- DML(Data Manipulation Language):資料操作語言,用來定義資料庫記錄(資料); 增、删、改:表記錄
- DCL(Data Control Language):資料控制語言,用來定義通路權限和安全級别;
- DQL(Data Query Language):資料查詢語言,用來查詢記錄(資料)。
總結
- ddl:資料庫或表的結構操作
- dml:對表的記錄進行更新(增、删、改)
- dql:對表的記錄的查詢
- dcl:對使用者的建立,及授權!
DDL
資料庫
- 檢視所有資料庫:SHOW DATABASES
- 切換(選擇要操作的)資料庫:USE 資料庫名
- 建立資料庫:CREATE DATABASE [IF NOT EXISTS] mydb1 [CHARSET=utf8]
- 删除資料庫:DROP DATABASE [IF EXISTS] mydb1
- 修改資料庫編碼:ALTER DATABASE mydb1 CHARACTER SET utf8
資料類型
- int:整型
- double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;
- decimal:浮點型,在表單錢方面使用該類型,因為不會出現精度缺失問題;
- char:固定長度字元串類型; char(255),資料的長度不足指定長度,補足到指定長度!
- varchar:可變長度字元串類型; varchar(65535), zhangSan
- text(clob):字元串類型;
- blob:位元組類型;
- date:日期類型,格式為:yyyy-MM-dd;
- time:時間類型,格式為:hh:mm:ss
- datetime:日期時間類型,格式為:timestamp
- timestamp:時間戳類型
表
- 檢視目前資料庫中所有表名稱:SHOW TABLES;
- 檢視表結構:DESC 表名;
- 删除表:DROP TABLE 表名;
-
建立表:CREATE TABLE [IF NOT EXISTS] 表名(
列名 列類型,
列名 列類型,
...
列名 列類型
);
- 修改表:字首:ALTER TABLE 表名
-
修改之添加列:ALTER TABLE 表名 ADD (
列名 列類型,
列名 列類型,
...
);
- 修改之修改列類型:ALTER TABLE 表名 MODIFY 列名 列類型;
- 修改之修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 列類型;
- 修改之删除列:ALTER TABLE 表名 DROP 列名;
- 修改表名稱:ALTER TABLE 原表名 RENAME TO 新表名;
DML
插入
- INTERT INTO 表名(列名1,列名2, ...) VALUES(列值1, 列值2, ...);
- INTERT INTO 表名 VALUES(列值1, 列值2,...);
修改
- UPDATE 表名 SET 列名1=列值1, 列名2=列值2, ... [WHERE 條件];
- 幾個常見的條件:
WHERE age >= 18 AND age <= 80 WHERE age BETWEEN 18 AND 80 WHERE name='zhangSan' OR name='liSi' WHERE name IN ('zhangSan', 'liSi') WHERE age IS NULL, 不能使用等号 WHERE age IS NOT NULL
删除
- DELETE FROM 表名 [WHERE 條件];
- TRUNCATE TABLE 表名:TRUNCATE是DDL語句,它是先删除drop該表,再create該表。而且無法復原!!
DCL
建立使用者
- CREATE USER 使用者名@IP位址 IDENTIFIED BY '密碼'; --使用者隻能在指定的IP位址上登入
- CREATE USER 使用者名@'%' IDENTIFIED BY '密碼';--使用者可以在任意IP位址上登入
使用者授權
- GRANT 權限1, … , 權限n ON 資料庫.* TO 使用者名@IP位址;
- 例如;GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb1.* TO [email protected];
- GRANT ALL ON 資料庫.* TO 使用者名@IP位址;
撤銷授權
- REVOKE 權限1, … , 權限n ON 資料庫.* FROM 使用者名@IP位址;
- 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM [email protected];
檢視權限
- SHOW GRANTS FOR 使用者名@IP位址
删除使用者
- DROP USER 使用者名@IP位址