一、用法
和group by 一起使用,分組後再進行條件過濾就用到having了。
GROUP BY 分組欄位名 HAVING 分組後過濾條件
二、和WHERE的區別
1where是分組之前進行過濾,不滿足where條件的資料不參與分組,而having是分組之後對分組結果進行過濾。
2.where不能對聚合函式進行判斷,having可以。
1.查詢資料庫
#查詢所有資料庫
SHOW DATABASES;
#查詢當前資料庫
SELECT DATABASE();
2.建立資料庫
CREATE DATABASE [IF NOT EXISTS] 資料庫名 [DEFAULT CHARSET 字符集] [COLLATE 排序規則];
3.刪除資料庫
DROP DATABASE [IF EXISTS] 資料庫名;
4.使用資料庫
USE 資料庫名;
二、DDL-表操作
1.查詢表
#查詢當前資料庫所有表
SHOW TABLES;
#查詢表結構
DESC 表名;
#查詢指定表的建表語句
SHOW CREATE TABLE 表名;
2.建立表
CREATE TABLE 表名(
欄位1 型別 [COMMENT 註釋],
欄位2 型別 [COMMENT 註釋],
...
欄位N 型別 [COMMENT 註釋]
)[COMMENT 表註釋]
3.修改表名
ALTER TABLE 表名 RENAME TO 新表名;
4.刪除表
DROP TABLE [IF EXISTS] 表名;
#刪除表並重新建立該表
TRUNCATE TABLE 表名;
5.修改欄位
#修改資料型別
ALTER TABLE 表名 MODIFY 欄位名 新資料型別(長度);
#修改欄位名和欄位型別
ALTER TABLE CHANGE 舊欄位名 新欄位名 型別(長度) [COMMENT 註釋] [約束];
6.刪除欄位
ALTER TABLE 表名 DROP 欄位名;
三、DML-新增/修改/刪除資料
1.新增資料
#單條資料
#指定欄位
INSERT INTO 表名 (欄位名1,欄位名2,...) VALUES(值1,值2,...);
#全部欄位
INSERT INTO 表名 VALUES(值1,值2,...);
#批次
#指定欄位
INSERT INTO 表名 (欄位名1,欄位名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
#全部欄位
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
2.修改資料
UPDATE 表名 SET 欄位名1=值1,欄位名2=值2,...[WHERE 條件]
3.刪除資料
DELETE FROM 表名 [WHERE 條件]
四、DQL-查詢資料
1.語法
SELECT 欄位
FROM 表名
WHERE 條件
GROUP BY 分組欄位
HAVING 分組後條件
ORDER BY 排序欄位
LIMIT 分頁引數