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 user1@localhost;
- GRANT ALL ON 數據庫.* TO 用戶名@IP地址;
撤銷授權
- REVOKE 權限1, … , 權限n ON 數據庫.* FROM 用戶名@IP地址;
- 例如;REVOKE CREATE,ALTER,DROP ON mydb1.* FROM user1@localhost;
查看權限
- SHOW GRANTS FOR 用戶名@IP地址
刪除用戶
- DROP USER 用戶名@IP地址