約束
-
主鍵約束
- primary key
- primary key(欄位名...)
-
外來鍵約束
constraint fk_table1_table2 foreign key(欄位) references table2(欄位)
-
其它約束
- unique
- not null
- default
- auto_increment
CREATE TABLE t_emp( id INT PRIMARY KEY auto_increment, name VARCHAR(22) not null unique, sex VARCHAR(2) DEFAULT '男' ) DEFAULT CHARSET=utf8;
表操作
檢視錶結構與修改表名
-
檢視資料表基本結構
desc 表名
-
檢視資料表詳細結構
show create table 表名 \G
不僅可以返回給我們建表時所寫的詳細語句,而且還可以檢視儲存引擎和字元編碼
-
修改表名
ALTER TABLE 舊錶名 RENAME 新表名;
修改欄位名與欄位資料型別
-
修改欄位名
ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 新資料型別;
-
修改欄位資料型別
ALTER TABLE 表名 MODIFY 欄位名 資料型別;
新增與刪除欄位
- first 在表的第一列新增欄位
- after 在表的指定列後新增欄位
- drop 刪除欄位
修改欄位的排列位置
-
ALTER TABLE 表名 MODIFY 欄位1 資料型別 FIRST|AFTER 欄位2;
刪除表的外來鍵約束
-
ALTER TABLE 表名 DROP FOREIGN KEY 外來鍵約束名;
增刪改
插入資料
INSERT INTO 表名 (欄位名) VALUES (內容), (內容), (內容)...;
更新資料
UPDATE 表名 SET 欄位名1 = 內容1, 欄位名2 = 內容2, 欄位名3 = 內容3 WHERE 過濾條件;
刪除資料
-
DELETE FROM 表名 WHERE 條件語句;
-
清空表
TRUNCATE 表名
查詢
單表查詢
-
SELECT 欄位名 FROM 表名;
-
帶in關鍵字的查詢
SELECT 欄位名 FROM 表名 WHERE 欄位名 (not) IN (n1,n2,n3,...);
-
範圍查詢
SELECT 欄位名 FROM 表名 WHERE 欄位名 (not) BETWEEN n1 AND n2;
-
帶like的字元匹配查詢
- 使用萬用字元
%
模糊匹配資料內容(百分號萬用字元%
可以匹配任意長度的字元,甚至包括零字元。)
SELECT 欄位名 FROM 表名 WHERE 欄位名 LIKE '字元%';
- 使用萬用字元
_
模糊匹配資料內容(下劃線萬用字元_
只能模糊匹配1個
字元。)
SELECT 欄位名 FROM 表名 WHERE 欄位名 LIKE '字元_';
- 使用萬用字元
-
查詢空值與去除重複結果
-
int (not) null
-
去重
SELECT DISTINCT 欄位名 FROM 表名;
-
-
帶 AND 與 OR 的多條件查詢
SELECT 欄位名 FROM 表名 WHERE 表示式1 AND / OR 表示式2;
-
-
對查詢結果進行排序
SELECT 欄位名 FROM 表名 ORDER BY 欄位名 [ASC[DESC]];
-
分組查詢
SELECT 欄位名 FROM 表名 GROUP BY 欄位名;
-
限制查詢
SELECT 欄位名 FROM 表名 LIMIT [OFFSET,] 記錄數;
-
第一個引數,
OFFSET
,可選引數,表示偏移量 -
第二個引數,記錄數,表示返回查詢結果的條數
-
連線查詢
-
內連線查詢
表1 [inner] join 表2 on 表1.欄位=表2.欄位
-
外連線查詢
表1 left/right [outer] join 表2 on 表1.欄位=表2.欄位
子查詢
-
帶比較運算子的子查詢
eg: select name, age from tb_emp where age > (select avg(age) from tb_emp);
-
關鍵字子查詢
tb_salary
id position salary 1 Java 8000 2 Java 8400 3 Java 9000 4 Python 6500 5 Python 10000 #1.使用 ALL 關鍵字進行查詢 select position, salary from tb_salary where salary > all (select salary from tb_salary where position = 'Java'); #2.使用 ANY 關鍵字進行查詢 select position, salary from tb_salary where salary > any (select salary from tb_salary where position = 'Java'); #3.使用 IN 關鍵字進行查詢 select position, salary from tb_salary where position in ('Java');
檢視
-
建立檢視
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
-
刪除檢視
DROP VIEW view_name;