名称 | 解释 |
---|---|
DDL | 数据库定义语言,用来定义数据库对象 |
DML | 数据库操作语言,用来对数据库中的表进行增删改查 |
DQL | 数据库查询语言,用来查询数据库中表的记录 |
DCL | 数据库控制语言,用来创建数据库用户。控制数据库的访问权限 |
①查询数据库
查询所有数据库//
SHOW DATABASES;
查询当前数据库//
SELECT DATABASE();
②创建数据库
CREATE DATABASE [IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集] [COLLATE 排序规则];
③删除数据库
DROP DATABASE [IF EXISTS]数据库名;
④使用数据库
USE 数据库名;
通过USE指令进入数据库后可进行以下操作
————————————————————————————————————————————————————————————
<1>查询当前数据库所有表
SHOW TABLES;
<2>结构表查询
DESC 表名;
<3>查询指定表的建表语句
SHOW CREATE TABLE 表名;
表内操作
————————————————————————————————————————————————————————————
①新建表
CREATE TABLE 表名(
字段1 字段1类型[ COMMENT 字段注释],
字段2 字段2类型[ COMMENT 字段注释],
age tinyint unsigned(无负数类型) comment '年龄',
xxx date(时间)
字段n 字段n类型[ COMMENT 字段注释]
);
//[]指选填内容,编码中不需要添加[]。
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
删除表
DROP TABLE [IF EXISTS]表名;(仅仅删除)
TRUNCATE TABLE 表名;(删除重新创建/初始化)
2.1添加数据
①给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2…) VALUES(值1,值2…);
②给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2…);
③批量添加
INSERT INTO 表名(字段名1,字段名2…)
VALUES(值1,值2…),(值1,值2…); INSERT INTO 表名 VALUES(值1,值2…);
2.2修改数据
UPDATA 表名 SET 字段名1=值1,字段2=值2,… [WHERE 条件];
2.3删除数据
DELETE FROM 表名 [WHERE 条件];
SELECT 字段列表
FROM 列表名称
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排列字段列表
LIMIT 分页列表
—————————————————————————————————————————————————————————
执行顺序
FROM→WHERE→GROUP BY → HAVING→SELECT→ORDER BY→LIMIT
3.1基础查询
SELECT 字段1,字段2.... FROM 表名;
SELECT * FROM 表名;//返回所有字段
SELECT 字段1[AS ‘别名1’] FROM 表名;//AS可省略
SELECT DISTINCT 字段名 FROM 表名;//去除重复
3.2条件查询
SELECT 字段名 FROM 表名 WHERE 条件;
运算符 | 解释 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<>或!= | 不等于 |
BETWEEN…AND… | 在某个范围之内包含边界值 |
IN(…) | 在in之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
AND 或&& | 并且 |
OR或 丨丨 | 或者 |
NOT 或 ! | 非,不是 |
SELECT 字段名 FROM 表名 WHERE LINK ‘_ _’;//查找为两个字符
SELECT 字段名 FROM 表名 WHERE LINK ‘%A’;//查找字段中有A的字段
SELECT 字段名 FROM 表名 WHERE IN(15,20,25);//查找字段中有15,20,25的字段
SELECT 字段名 FROM 表名 WHERE 条件 AND 条件 AND 条件 AND 条件....;
3.3聚合查询
函数 | 说明 |
---|---|
COUNT | 统计数量 |
MAX | 最大值 |
MIN | 最小值 |
AVG | 平均值 |
SUM | 求和 |
SELECT 函数(字段名) FROM 表名;
SELECT MAX(字段名) FROM 表名;//求字段中最大值
3.4分组查询
SELECT 字段 FROM 表名[WHERE 条件]GROUP BY 分组字段名[HAVING 分组后过滤条件];
//HAVING 可对聚合函数进行判断。
WHERE 是对分组前字段进行筛选,HAVING 是对分组后字段进行筛选。
SELECT 字段名,COUNT(*) FROM 表名 GROUP BY 字段名;//统计某字段中的种类个数
SELECT 字段,COUNT(*) 新字段名 FROM 表名 WHERE 条件 GROUP BY 字段 HAVING 分组后条件;
3.5排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式;
ASC:升序(默认)
DESC:降序
//在字段1执行完之后再进行字段2排序
3.6分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
SELECT * FROM 表名 LIMIT (页码-1)*查询记录数,查询记录数;
4.1管理用户
1.查询用户
USE mysql;
SELECT * FROM user;
2.创建用户
CREATE USER ‘用户名’@‘主机名’ IDENTIFIDE BY ‘密码’;
CREATE USER ‘用户名’@‘%’ IDENTIFIDE BY ‘密码’;//任意主机都能登录
3.修改用户密码
ALTER USER ‘用户名’@‘主机名’ IDENTIFIED WITH mysql_native_password BY '新密码';
4.删除用户
DROP USER ‘用户名’@‘主机名’;
4.1用户权限
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
1.查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2.授予权限
GRANT 权限列表 ON 数据库名,表名 TO '用户名'@'主机名';
3.撤销权限
REVOKE 权限列表 ON 数据库名,表名 FROM ‘用户名’@'主机名';
GRANT ALL ON XXX,* TO '2022熬夜通宵'@'%';//给用户2022熬夜通宵授予在XXX数据库所有权限。