MySQL基础

1 数据库介绍

1.1 常见的数据库软件

常见的数据库软件:Mysql/Oracle/SqlServer等
这些都是关系型数据库
还有一些非关系型数据库,比如redis

1.2 存储结构

先安装数据库软件;
建数据库;
在数据库中建表;
通过客户端软件可以操作数据库,比如cmd,navicat等

1.3 SQL语言

SQL,结构化查询语言
可以大致分为四类:
DDL:数据定义语言
DML:数据操纵语言
DCL:数据控制语言
TCL:事务控制语言

2 数据库管理

2.1连接数据库

打开cmd,输入mysql -uroot -p
MySQL底层原理 - 图1
或者 mysql -uroot -proot
MySQL底层原理 - 图2

2.2 查看已有的数据库

MySQL底层原理 - 图3

2.3 数据库的创建

创建时,如果不指定,使用默认的编码方式
Utf8 /utf8mb4
MySQL底层原理 - 图4

2.3 数据库修改

比如修改编码方式
MySQL底层原理 - 图5

2.4 删除数据库

MySQL底层原理 - 图6

2.5 查看数据库信息

MySQL底层原理 - 图7

2.6 切换数据库

MySQL底层原理 - 图8

3 表管理

3.1 查看所有表

MySQL底层原理 - 图9

3.2 新建表

MySQL底层原理 - 图10
Char和varchar的区别?
varchar 长度可变,比如定义为varchar(100),如果数据实际长度为10,name改字段只会分配10个字节
char 长度固定,不管数据实际占用几个字节,都会分配指定长度的字节

3.3 展示表结构

MySQL底层原理 - 图11

3.4 删除表

MySQL底层原理 - 图12

3.5修改表

1.增加
MySQL底层原理 - 图13
2.修改类型
MySQL底层原理 - 图14
3.改变名字
MySQL底层原理 - 图15
4.改表名
MySQL底层原理 - 图16
5.删除列
MySQL底层原理 - 图17

4 数据表的增删改操作 重点

CRUD
Create 添加 read 查询 update 更新 delete 删除

4.1 insert 插入数据

注意事项:
列数和值数保持一致,列的顺序和值的顺序、类型保持一致
如果插入所有列,列名可以不写,但是值的个数、顺序、类型要保持一致
如果插入多条记录 insert into 表(列。。。。) values(….),(….),…(….)
MySQL底层原理 - 图18MySQL底层原理 - 图19MySQL底层原理 - 图20MySQL底层原理 - 图21

4.2 删除数据

删除全部数据
MySQL底层原理 - 图22
根据条件删除特定数据
MySQL底层原理 - 图23
清空数据还有另一种写法 truncate
delete与truncate不同?了解
启用事务情况下,delete支持回滚,truncate不支持
针对自增的数据,delete后不会清除表中记录的自增到的最大值,truncate相当于恢复到表的初始状态

4.3 更新数据

MySQL底层原理 - 图24MySQL底层原理 - 图25MySQL底层原理 - 图26

5 数据表查询

5.1查询指定列

MySQL底层原理 - 图27

5.2 列设置别名

as 可以省略
MySQL底层原理 - 图28

5.3 列名可以参与运算

MySQL底层原理 - 图29
Gender列也是字符串类型,+1时,不会报错,表面上看也进行了运算,没有什么实际意义,如果要对字符串进行操作,一般需要借助mysql中提供的函数

MySQL底层原理 - 图30

5.4 去重

关键字 distinct
MySQL底层原理 - 图31
distinct 后面可以跟多个字段,多个字段都相同才会去重
MySQL底层原理 - 图32

5.5 条件查询

逻辑判断 and / or
MySQL底层原理 - 图33MySQL底层原理 - 图34
条件判断
MySQL底层原理 - 图35MySQL底层原理 - 图36MySQL底层原理 - 图37
针对日期类型也可以使用
MySQL底层原理 - 图38MySQL底层原理 - 图39
判断是否为null
MySQL底层原理 - 图40MySQL底层原理 - 图41

模糊查询:针对字符串 like %匹配多个字符 _匹配一个字符
%XXX% 是否包含
%XXX 是否已XXX结尾
XXX% 是否以XXX开头
MySQL底层原理 - 图42MySQL底层原理 - 图43MySQL底层原理 - 图44MySQL底层原理 - 图45

5.6聚合函数

count() 针对所有记录统计
count(列名), 针对指定列里非null的数据进行统计
count(1)作用和count(
) 相同
MySQL底层原理 - 图46MySQL底层原理 - 图47MySQL底层原理 - 图48MySQL底层原理 - 图49MySQL底层原理 - 图50MySQL底层原理 - 图51MySQL底层原理 - 图52
本例中查询id没有实际意义
MySQL底层原理 - 图53
一个语句中可以使用多个统计函数
MySQL底层原理 - 图54MySQL底层原理 - 图55

5.7 排序

Order by 默认升序,可以根据多列排序
MySQL底层原理 - 图56MySQL底层原理 - 图57MySQL底层原理 - 图58

5.8 分组

Group by一般结合聚合函数使用,select 后出现字段要么来自分组的列名,要么时聚合函数
MySQL底层原理 - 图59MySQL底层原理 - 图60
Having是对分组后的数据进行过滤
Having和where均可实现条件过滤,但having可以使用聚合函数,having跟在group by后,它作用于组
MySQL底层原理 - 图61
5.9 分页查询
limit
如何计算offset?
Offset = (page - 1) * pageSize
MySQL底层原理 - 图62MySQL底层原理 - 图63
各个关键字的顺序:
MySQL底层原理 - 图64

6常用函数

Now() 获取当前日期时间
Date_format() 日期格式化
Concat() 字符串拼接

日期的格式化,转换为一个指定的样式
年-月-日 时:分:秒 2022-03-15 16:20:30
n年月日时分秒 20220315162030