分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
SHOW DATABASES;
SELECT DATABASE();
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
DROP DATABASE[IF EXISTS]数据库名;
USE 数据库名;
SHOW TABLES;
DESC 表名;
SHOW CREATE TABLE 表名;
```sql
CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], ... 字段n 字段n类型[COMMENT 字段n注释] )[COMMENT 表注释];
[...]为可选参数,最后一个字段后面没有逗号
### 数据类型
主要分为三类:数值类型、字符串类型、日期时间类型。
1. 数值类型
![alt text](https://cdn.limfx.pro/-img-c1c3995f-ac91-43fb-927a-6c87a2162644-articles-de7be5d8-c63c-4cf4-9b50-273c25feb838-articelcontent-e88746b3-81e5-4663-a20d-00ebf97502ff/image-1.png)
123.45 精度:5(整个数值长度),标度:2(小数位数)
2. 字符串类型
![alt text](https://cdn.limfx.pro/-img-c1c3995f-ac91-43fb-927a-6c87a2162644-articles-de7be5d8-c63c-4cf4-9b50-273c25feb838-articelcontent-6547fd39-d350-4a43-b1d1-35cfc5c9a2f9/image-2.png)
char(n) 性能好
varchar(n)性能差些
3. 日期类型
![alt text](https://cdn.limfx.pro/-img-c1c3995f-ac91-43fb-927a-6c87a2162644-articles-de7be5d8-c63c-4cf4-9b50-273c25feb838-articelcontent-484f0085-edd5-45a9-8108-9888e6c20c39/image-3.png)
### 修改
1. 添加字段
```sql
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
ALTER TABLE 表名 DROP 字段名;
ALTER TABLE 表名 RENAME TO 新表名;
DROP TABLE [IF EXISTS];
2.删除指定表,并重新创建该表(清空数据,只留表格)TRUNCATE TABLE 表名;
添加数据-INSERT 修改数据-UPDATE 删除数据-DELETE
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,...);
UPDATE 表名 SET 字段名1=值1, 字段名2=值2,...[WHERE 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
DELETE FROM 表名 [WHERE 条件];
注意:
查询关键字:SELECT
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
SELECT 字段1,字段2,字段3,... FROM 表名;
SELECT * FROM 表名;//开发中尽量不写*,不直观且影响效率
SELECT 字段1[AS 别名1(as可以省略)],字段2[AS 别名2],... FROM 表名;
SELECT DISTINCT 字段列表 FROM 表名;
SELECT 字段列表 FROM 表名 WHERE 条件列表;
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
BETWEEN...(最小值)AND...(最大值) | 在某范围之内(含最小、最大值) |
IN(...) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND或&& | 并且(多个条件同时成立) |
OR或|| | 或者(多个条件任意一个成立) |
NOT或! | 非,不是 |
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
SELECT 聚合函数(字段列表) FROM 表名;
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
管理数据库用户,控制数据库访问的权限
USE mysql;
SELECT * FROM user;
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
DROP USER '用户名'@'主机名';
权限 | 说明 |
---|---|
All, ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
本文章使用limfx的vscode插件快速发布