learn_mysql
MySQL
SQL
DDL
简介:DDL(Data Definition Language)数据定义语句。这些语句定义了不同的数据段、数据库、表、列、索引、约束等数据库对象。常用的语句关键字主要有CREATGE、DROP、ALTER等。是对数据库内部对象进行创建、删除、修改等操作的语言。
DDL - 数据库操作
查询
查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
删除
DROP DATABASE [IF EXISTS] 数据库名;
使用
USE 数据库名;
DDL - 表操作 - 查询
查询当前数据库所有表
SHOW TABLES;
查询表结构
DESC 表名;
查询指定表的建表语句
SHOW CREATE TABLE 表名;
DDL - 表操作 - 创建
1 | CREATE TABLE 表名( |
注意:[…]为可选参数,最后一个字段后面不用加逗号(,)
DDL - 表操作 - 添加
ALTER TABLE 表名 ADD 字段名 字段类型 [COMMENT 字段注释] [约束];
DDL - 表操作 - 修改
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 字段注释] [约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
DDL - 表操作 - 删除
删除表
DROP TABLE [IF EXISTS] 表;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
DML
简介:数据操作语言,用于操作数据库对象中所包含的数据.
常用关键字包括:
INSERT(添加数据语句)
UPDATE(更新数据语句)
DELETE(删除数据语句)
DML - 添加数据
1. 给指定字段添加数据
1 | INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...); |
2. 给全部字段添加数据
1 | INSERT INTO 表名 VALUES(值1,值2,...); |
3. 批量添加数据
1 | INSERT INTO 表名 (字段1,字段2,...) VALUES(值1,值2,...),VALUES(值1,值2,...),VALUES(值1,值2,...); |
DML - 修改数据
1 | UPDATE 表名 SET 字段1 = 值1,字段2 = 值2,... [WHERE 条件]; |
DML - 删除数据
1 | DELETE FROM 表名 [WHERE 条件]; |
DQL
介绍:DQL 英文全称是 Data Query Language(数据库查询语言),数据查询语言,用来查询数据库中表的记录。
查询关键字:SELECT
DQL - 执行顺序
1 | SELECT |
DQL - 基本查询
1. 查询多个字段
1 | // 查询指定字段 |
2. 设置别名
1 | SELECT 字段1 [as 别名1],字段2 [as 别名2],... FROM 表名; |
3. 去除重复记录
1 | SELECT DISTINCT 字段列表 FROM 表名; |
DQL - 条件查询
1. 语法
1 | SELECT 字段列表 FROM 表名 WHERE 条件列表; |
2. 条件
| 比较运算符 | 功能 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| = | 等于 |
| <> 或 != | 不等于 |
| BETWEEN …AND … | 在某个范围之内(含最小、最大值) |
| IN(…) | 在 in 之后的列表中的值,多选一 |
| LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
| IS NULL | 是 NULL |
| 逻辑运算符 | 功能 |
|---|---|
| AND 或 && | 并且(多个条件同时成立) |
| OR 或 || | 或者(多个条件任意一个成立) |
| NOT 或 ! | 非,不是 |
DQL - 聚合函数
1. 介绍
将一列数据作为一个整体,进行纵向计算。
2. 常见的聚合函数
| 函数 | 功能 |
|---|---|
| count | 统计数量 |
| max | 最大值 |
| min | 最小值 |
| avg | 平均值 |
| sum | 求和 |
3. 语法
1 | SELECT 聚合函数(字段列表) FROM 表名; |
注意:所有 null 不参与聚合函数的运算。
DQL - 分组查询
1. 语法
1 | SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY分组字段名 [HAVING 分组后过滤条件]; |
2. where 和 having 区别
执行时间不同:where 是分组之前进行过滤,不满足 where 条件,不参与分组;having 是分组之后对结果进行过滤。
判断条件不同:where 不能对聚合函数进行判断,而 having 可以。
DQL - 排序查询
1. 语法
1 | SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2; |
2. 排序方式
ASC:升序(默认值)
DESC:降序
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
DQL - 分页查询
1. 语法
1 | SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录; |
注意:
- 起始索引从 0 开始,起始索引 = (查询页码-1) * 每页显示记录数。
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL 中是 LIMIT。
- 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit10。
DCL
DCL 英文全称是 Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访
问权限。
DCL - 用户管理
1. 查询用户表
1 | SELECT * FROM mysql.user; |
查询结果
其中 Host 代表当前用户访问的主机, 如果为 localhost, 仅代表只能够在当前本机访问,是不可以
远程访问的。 User 代表的是访问该数据库的用户名。在 MySQL 中需要通过 Host 和 User 来唯一标识一
个用户。
2. 创建用户
1 | CREATE user '用户名'@'主机号' IDENTIFIED BY '密码'; |
3. 修改用户
1 | ALTER user '用户名'@'主机号' IDENTIFIED WITH mysql_native_password BY '新密码'; |
4. 删除用户
1 | DROP user '用户'@'主机号'; |
注意事项:
• 在 MySQL 中需要通过用户名@主机名的方式,来唯一标识一个用户。
• 主机名可以使用 % 通配。
• 这类 SQL 开发人员操作的比较少,主要是 DBA( Database Administrator 数据库
管理员)使用。
DCL - 权限管理
MySQL 中定义了很多种权限,但是常用的就以下几种:
| 权限 | 说明 |
|---|---|
| ALL,ALL PRIVILEGES | 所有权限 |
| SELECT | 查询数据 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
| ALTER | 修改表 |
| DROP | 删除数据库/表/视图 |
| CREATE | 创建数据库/表 |
1. 查询权限
1 | SHOW GRANTS FOR '用户名'@'主机名'; |
2. 授予权限
1 | GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; |
3. 撤销权限
1 | REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; |
注意事项
多个权限之间,使用逗号分隔
授权时,数据库名和表名可以使用 * 进行通配,代表所有






