MySQL学习

102 阅读4分钟

一、什么是关系型数据库?

简单来说就是由多张表互相连接组成的数据库。 注意,这里的数据库不是MySQL,MySQL是DBMS,是一种关系型数据库管理系统。数据库是我们用SQL语言CREATE的那个。

二、SQL分类

  • DDL(Data Definition Language)定义:定义数据库对象(库、表、字段)
  • DML(Manipulation)操作:增删改
  • DQL(Query)查询:查
  • DCL(Control)控制:用户、访问权限

三、DDL

注:[ ]中括号表示可加可不加的操作

DDL-数据库操作

  • SHOW DATABASES; 展示所有数据库
  • SELECT DATABASE(); 在当前数据库查询
  • CREATE DATABASE + 数据库名; 创库
  • DROP DATABASE + 数据库名; 删库
  • USE + 数据库名; 用这个库

DDL-表操作

  • SHOW TABLES; 查询当前数据库所有表

  • DESC + 表名; 查询表结构

  • SHOW CREATE TABLE + 表名; 查询指定表的建表语句

  • CREATE TABLE + 表名 (

    字段1 字段1类型,

    字段2 字段2类型,

);

  • ALTER TABLE + 表名 + ADD + 字段名 + 类型(长度); 添加字段
  • ALTER TABLE + 表名 + MODIFY + 字段名 + 新数据类型(长度); 修改数据类型;
  • ALTER TABLE + 表名 + CHANGE + 旧字段名 + 新字段名 + 类型(长度); 修改字段名和字段类型;
  • ALTER TABLE + 表名 + DROP + DROP + 字段名; 删除字段

四、DML

1.插入

  • INSERT INTO + 表名(字段名1,字段名2) + VALUES(值1,值2); 给指定字段添加数据
  • INSERT INTO + 表名 + VALUES(值1, 值2); 给全部字段添加数据
  • INSERT INTO + 表名 + VALUES(值1, 值2),(值1, 值2),(值1, 值2); 批量添加数据
  • INSERT INTO + 表名(字段1,字段2) + VALUES(值1, 值2),(值1, 值2),(值1, 值2);另一种批量添加数据方式

2.更新和删除

  • UPDATE + 表名 + SET + 字段名1=值1, 字段名2=值2,... [WHERE 条件];修改数据
  • DELETE FROM + 表名 [WHERE 条件]; 删除数据

五、DQL

1.DQL语法

  • SELECT 查哪个字段
  • FROM 从哪个表查
  • WHERE 加查询条件
  • GROUP BY 分组
  • HAVING 对GROUP BY分组后的进行条件查询,类似于对一个组的数据WHERE操作
  • ORDER BY 排序
  • LIMIT 分页,控制返回多少数据

2.DQL-基本查询

  • SELECT + 字段1,字段2 + FROM + 表名;查询多个字段
  • SELECT * FROM + 表名; 查询所有
  • SELECT 字段1[AS + 别名],字段2[AS + 别名] + FROM + 表名; 查询并设置表名
  • SELECT DISTINCT + 字段列表 + FROM + 表名; 去除重复记录

3.DQL-条件查询

  • SELECT + 字段 + FROM + 表名 + WHERE + 条件列表;

条件类型如图:

image.png

image.png

4.DQL-聚合函数

  • SELECT + 聚合函数(字段列表) + FROM + 表名;

将一列数据作为整体,进行纵向计算。

常见聚合函数如图:

image.png

5.DQL-分组查询

  • SELECT + 字段列表 + FROM + 表名 [WHERE + 条件] + GROUP BY + 分组字段名 [HAVING + 分组后过滤条件]

WHERE和HAVING的区别:

  • 执行时机:WHERE是分组之前过滤,不满足条件不参与分组。HAVING是分组之后对结果进行过滤。
  • 判断条件:WHERE不能对聚合函数进行判断,HAVING可以。

6.DQL-排序查询

  • SELECT + 字段列表 + FROM + 表名 + ORDER BY + 字段1 排序方式1, 字段2 排序方式2;

排序方式:

  • ASC:升序(默认)
  • DESC:降序

7.DQL-分页查询

  • SELECT + 字段列表 + FROM + 表名 + LIMIT + 起始索引, 查询记录数;

注意事项:

  • 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
  • 如果查询第一页,起始索引可以省略,直接写成LIMIT 10

8.DQL-执行顺序

image.png

六、DCL

1.DCL-用户管理

  • USE mysql;

    SELECT * FROM USER; 查询用户

  • CREATE USER + '用户名'@'主机名' + IDENTIFIED BY '密码'; 创建用户

  • ALTER USER + '用户名'@'主机名' + IDENTIFIED WITH mysql_native_password BY '新密码'; 修改用户密码

  • DROP USER + '用户名'@'主机名'; 删除用户

2.DCL-权限控制

  • SHOW GRANTS FOR '用户名'@'主机名'; 查询权限
  • GRANT + 权限列表 + ON + 数据库名.表 + TO + '用户名'@'主机名'; 授予权限
  • REVOKE + 权限列表 + ON + 数据库名.表名 + FROM + '用户名'@'主机名'; 撤销权限

常用权限:

image.png

七、函数

1.字符串函数

常用字符串函数:

image.png

2.数值函数

常用数值函数: image.png

3.日期函数

常用日期函数: image.png

4.流程函数

可以在SQL语句中实现条件筛选,从而提高语句的效率 image.png

八、约束

约束是作用于表中字段商店规则,用于限制存储在表中的数据,从而保证数据库中数据的正确性、有效性和完整性。

分类:

image.png

外键约束(阿里规范里禁用任何外键和级联,相关需求应该在应用层进行处理)

image.png

image.png 参考资料:www.bilibili.com/video/BV1Kr…