語句分類
- DDL(Data Definition Language) 數(shù)據(jù)定義語言灸拍,用來定義數(shù)據(jù)庫對象:數(shù)據(jù)庫,表育韩,列等
- DML(Data Manipulation Language) 數(shù)據(jù)操作語言畦攘,用來對數(shù)據(jù)庫中表的數(shù)據(jù)進(jìn)行增刪改
- DQL(Data Query Language) 數(shù)據(jù)查詢語言集绰,用來查詢數(shù)據(jù)庫中表的記錄(數(shù)據(jù))
- DCL(Data Control Language) 數(shù)據(jù)控制語言,用來定義數(shù)據(jù)庫的訪問權(quán)限和安全級別绿鸣,及創(chuàng)建用戶
DDL操作數(shù)據(jù)庫
查詢所有數(shù)據(jù)庫
SHOW DATABASES;
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名稱;
創(chuàng)建數(shù)據(jù)庫(判斷疚沐,如果不存在則創(chuàng)建)
CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫名稱;
刪除數(shù)據(jù)庫
DROP DATABASE 數(shù)據(jù)庫名稱;
刪除數(shù)據(jù)庫(判斷,如果存在則刪除)
DROP DATABASE IF EXISTS 數(shù)據(jù)庫名稱;
使用數(shù)據(jù)庫
USE 數(shù)據(jù)庫名稱;
DDL操作表
創(chuàng)建表
- 語法
CREATE TABLE 表名 (字段名 數(shù)據(jù)類型, 字段名 數(shù)據(jù)類型);
- 示例
CREATE TABLE 表名 (
字段名 數(shù)據(jù)類型,
字段名 數(shù)據(jù)類型,
...
字段名 數(shù)據(jù)類型
);
查看所有表
SHOW TABLES;
查詢表結(jié)構(gòu)
DESC 表名;
刪除表
DROP TABLE 表名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
單獨(dú)添加一個(gè)字段
ALTER TABLE 表名 ADD 字段名 數(shù)據(jù)類型;
修改某字段的數(shù)據(jù)類型
ALTER TABLE 表名 MODIFY 字段名 新數(shù)據(jù)類型;
修改字段名和數(shù)據(jù)類型
ALTER TABLE 表名 CHANGE 字段名 新字段名 新數(shù)據(jù)類型;
刪除某一字段
ALTER TABLE 表名 DROP 字段名;
DML表數(shù)據(jù)的增刪查改
給表新增數(shù)據(jù)
給指定列添加數(shù)據(jù)
- 語法
INSERT INTO 表名(字段名1, 字段名2, …) VALUES (值1, 值2, …);
- 示例
INSERT INTO goods (NAME, price, sales_volume, produced_date) VALUES ('華為P40', 5999, 1000, '2020-08-20');
給全部列添加數(shù)據(jù)
- 語法
INSERT INTO 表名 VALUES (值1, 值2, …);
- 示例
INSERT INTO goods VALUES ('小米11', 4999, 5000, '2020-12-28');
給表批量添加數(shù)據(jù)
- 注意
- 字段名和值的數(shù)量要對應(yīng)
- 值的類型和字段的類型要對應(yīng)
- 除了數(shù)值類型潮模,其他數(shù)據(jù)類型的數(shù)據(jù)都需要加引號(hào)(單引雙引都行亮蛔,推薦單引)
INSERT INTO 表名 VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …);
修改表中數(shù)據(jù)
- 注意:修改語句中必須加條件,如果不加條件擎厢,則會(huì)將所有數(shù)據(jù)都修改
UPDATE 表名 SET 字段名=新的值 [WHERE 條件];
刪除表中的數(shù)據(jù)
- 注意:刪除語句中必須加條件究流,如果不加條件辣吃,則會(huì)將所有數(shù)據(jù)都刪除
DELETE FROM 表名 [WHERE 條件];
DQL查詢表中數(shù)據(jù)
查詢指定字段的數(shù)據(jù)
SELECT 字段名1, 字段名2 FROM 表名;
查詢所有字段的數(shù)據(jù)
SELECT * FROM 表名;
去除重復(fù)行
SELECT DISTINCT 字段名1 FROM 表名;
計(jì)算列的值(四則運(yùn)算)
SELECT 字段名1 (+ - * /) 字段名2 FROM 表名;
起別名查詢
SELECT 字段名1 AS 別名1, 字段名2 AS 別名2 FROM 表名;
條件查詢
SELECT 字段名 FROM 表名 WHERE 條件;
- 比較運(yùn)算符
符號(hào) | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
- 邏輯運(yùn)算符
AND或&& | 并且 |
---|---|
OR或|| | 或者 |
NOT或! | 非、不是 |
- 范圍
BETWEEN...AND... | 在某個(gè)范圍之內(nèi)(都包含) |
---|---|
IN(...) | 多選一 |
- NULL的處理
IS NULL | 是NULL |
---|---|
IS NOT NULL | 不是NULL |
模糊查詢
- MySQL的通配符
-
%
: 表示任意多個(gè)字符 -
_
: 表示一個(gè)字符
-
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';
查詢數(shù)據(jù)排序
- 排序方式
- ASC: 升序
- DESC: 降序
SELECT 字段名 FROM 表名 ORDER BY 列名 排序方式;
聚合函數(shù)
-
注意:
- 記錄為NULL的不統(tǒng)計(jì)
- 如果不是數(shù)值類型芬探,那么計(jì)算結(jié)果為0
COUNT: 統(tǒng)計(jì)指定列記錄數(shù)
SUM: 計(jì)算指定列的數(shù)值和
MAX: 計(jì)算指定列的最大值
MIN: 計(jì)算指定列的最小值
AVG: 計(jì)算指定列的平均值
SELECT 聚合函數(shù)(字段名) FROM 表名;
分組查詢
- 注意:分組之后神得,查詢的字段為分組字段和聚合函數(shù),查詢其他字段無任何意義
SELECT * FROM 表名 GROUP BY 字段名;
-- 帶分組條件
SELECT * FROM 表名 GROUP HAVING 分組過濾條件;
- having與where的區(qū)別
- where是在分組前對數(shù)據(jù)進(jìn)行過濾偷仿,having是在分組后對數(shù)據(jù)進(jìn)行過濾
- where后面不可以使用聚合函數(shù)哩簿,having后面可以使用聚合函數(shù)
分頁查詢
注意事項(xiàng)
分頁查詢 limit 是MySQL數(shù)據(jù)庫的方言,Oracle 分頁查詢使用 rownumber酝静,SQL Server分頁查詢使用 top
offset是指偏移量卡骂,可以認(rèn)為是跳過的記錄數(shù)量,不寫則默認(rèn)為0
length是指需要顯示的總記錄數(shù)
SELECT * FROM 表名 LIMIT offset, length;
表約束
- 約束:對表中的數(shù)據(jù)進(jìn)行限定形入,保證數(shù)據(jù)的正確性全跨、有效性、完整性
約束 | 說明 |
---|---|
PRIMARY KEY | 主鍵約束 |
UNIQUE | 唯一約束 |
NOT NULL | 非空約束 |
DEFAULT | 默認(rèn)值約束 |
FOREIGN KEY | 外鍵約束 |
CHECK | 檢查約束 |
- 注意
- MySQL不支持檢查約束
- 約束通常是在創(chuàng)建表結(jié)構(gòu)的時(shí)候創(chuàng)建
主鍵約束
主鍵的作用:用來區(qū)分表中的數(shù)據(jù)
-
主鍵的特點(diǎn)
- 主鍵必須是唯一不重復(fù)的值
- 主鍵不能包含NULL值
-- 建表
CREATE TABLE 表名 (
字段名 字段類型 PRIMARY KEY,
字段名 字段類型
);
-- 建表并設(shè)置外鍵約束
CREATE TABLE 表名(
列名 數(shù)據(jù)類型,
[CONSTRAINT] [約束名稱] PRIMARY KEY(列名)
);
刪除主鍵約束
ALTER TABLE 表名 DROP PRIMARY KEY;
建表后亿遂,單獨(dú)添加主鍵約束
ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
設(shè)置主鍵自增長
- 主鍵浓若,如果讓我們自己添加很有可能重復(fù),我們通常希望在每次插入新記錄時(shí)蛇数,數(shù)據(jù)庫自動(dòng)生成主鍵字段的值
字段名 字段類型 PRIMARY KEY AUTO_INCREMENT
- 注意:AUTO_INCREMENT 的字段類型必須是數(shù)值類型
唯一約束
- 唯一約束的作用:讓字段的值唯一挪钓,不能重復(fù)
CREATE TABLE 表名 (
字段名 字段類型 UNIQUE,
字段名 字段類型
);
非空約束
- 非空約束的作用:讓字段的值不能為NULL
CREATE TABLE 表名 (
字段名 字段類型 NOT NULL,
字段名 字段類型
);
默認(rèn)值約束
- 默認(rèn)值約束的作用:如果這個(gè)字段不設(shè)置值,就使用默認(rèn)值
CREATE TABLE 表名 (
字段名 字段類型 DEFAULT 值,
字段名 字段類型
);
外鍵約束
- 外鍵:一張表中的某個(gè)字段引用其他表的主鍵耳舅,這個(gè)字段稱為外鍵
- 主表:將數(shù)據(jù)給別人用的表
- 副表/從表:使用別人數(shù)據(jù)的表
新建表時(shí)碌上,增加外鍵約束
CREATE TABLE 表名 (
字段名 字段類型,
字段名 字段類型,
-- 添加外鍵約束
[CONSTRAINT 外鍵約束名] FOREIGN KEY(外鍵字段名) REFERENCES 主表(主鍵字段名)
);
- 關(guān)鍵字解釋
- CONSTRAINT: 表示約束外鍵約束名: 給外鍵約束取個(gè)名字,將來通過約束名可以刪除這個(gè)約束
- FOREIGN KEY(外鍵字段名): 指定某個(gè)字段作為外鍵
- REFERENCES 主表(主鍵字段名) : 引用主表的主鍵的值
刪除外鍵約束
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵約束名;
已有表增加外鍵約束
ALTER TABLE 從表 ADD [CONSTRAINT 外鍵約束名稱] FOREIGN KEY (外鍵字段名) REFERENCES 主表(主鍵字段名);