数据库
基础篇
MYSQL概述
SQL
函数
约束
多表查询
事务
进阶篇
存储索引
索引
SQL优化
试图/存储过程/触发器
锁
InnoDB核心
MySQL管理
运维篇
日志
主从复制
分库本表
读写分离
基础篇
MySQL
数据库概念:存储数据的仓库,数据是有组织的进行存储(DataBase,DB)
数据库管理系统:操作和管理数据库的大型软件(Data Management System,DBMS)
SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准(Structured Query Language,SQL)
主流的关系型数据库管理系统
Oracle
MySQL
SQL Server
PostgreSQL
注:SQL来统一操作这些数据库管理系统
注:SQL是操作关系型数据库的编程语言,是统一标准
启动和停止
在命令行里输入
net start mysql80
net stop mysql80
注:mysql默认开机自启
客户端连接
方式一:在开始菜单里找到mysql,然后登录
方式二:mysql -u root -p
注:在任意环境中都想使用该指令,就需要配置环境
数据模型
关系型数据库(RDBMS)
概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库、
特点:使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便
SQL
SQL通用语法
SQL分类
DDL
DML
DQL
DCL
SQL通用语句
SQL语句可以单行或多行书写,以分号结束
SQL语句可以使用空格/缩进 来增强语句的可读性
MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
单行注释 – 或 #
多行注释 /**/
SQL分类
DDL(Data Definition Language)
- 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML(Data Manipulation Language)
- 数据操作语言,用来对数据库中的数据进行增删改
DQL(Data Query Language)
- 数据查询语言,用来查询数据库中表的记录
DCL(Data Control Language)
- 数据控制语言,用来创建数据库用户,控制数据库的访问权限
DDL
查询 SHOW DATABASES;
查询当前数据库 select database();
创建 create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
注:这里的参数,都可以不要
注:if not exists 如果不存在
注:这里的字符集,推荐使用utf8mb4
删除 drop database[if exists] 数据库名;
- 使用 use 数据库名;
查询当前库的所有表 show tables;
查询表结构 desc 表名;
查询指定表的建表语句 show create table 表名;
创建表
create table 表名(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释],
字段3 字段3类型[comment 字段3注释]
)[commment 表注释];
注:在sql中字符串是varchar(size)
create table user(
id int comment'编号',
mame varchar(10) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
)comment '用户表';
DDL 文件中的数据类型
数值类型
字符串类型
varchar性能低
char 性能好
日期
date -----> YYYY-MM-DD
time ------> HH : MM :SS
datetime -> YYYY-MM-DD HH:MM:SS
DDL-表操作-修改
添加字段 alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
修改字段
修改数据类型
- alter table 表名 modify 字段名 新数据类型
修改字段名和字段类型
- alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束]
删除字段
- alter table 表面 drop 字段名;
修改表名
- alter table 表名 rename to 新表名;
删除表
drop table[if exists] 表名;
truncate table 表名;
- 删除表中的数据,表的格式会被保存
MySQL图形化工具
DataGrip —> 里面可以操作SQL语句
DML
添加数据(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 表名(值1,值2),(值1,值2),(值1,值2);
注:
插入数据时,指定的字段顺序需要与值的顺序是一一对应的
字符串和日期型数据应该包含在引号中
插入的数据大小,应该在字段的规定范围内
修改数据
update 表名 set 字段1 = 值1 ,字段2 = 值2,[where 条件];
注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有的数据
update employee set name 'itheima' where id = 1;
删除语句
delete from 表名 [where 条件]
注:
delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
delete 语句不能删除某一个字段的值(可以使用update)
DQL
涉及关键字,select
基本查询
条件查询
聚合函数
分组查询
排序查询
分页查询
基本查询
查询多个字段
select 字段1,字段2 frrom 表名;
select * from 表名;
设置别名
- select 字段1[as 别名],字段2[别名2] from 表名
去除重复记录
- selsect distinct 字段列表 from 表名;
条件查询
语法:select 字段列表 from 表名 where 条件列表;
注:in(…) 只要满足其一
注:like ‘____‘ 查询为两个字符的信息
注:like’%x‘; -----> 只要保证最后一个字符是x就行
聚合函数
介绍:将一列数据作为一个整体,进行纵向计算
常见聚合函数
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
语法:
select 聚合函数(字段列表) from 表名 where 条件列表;
注:null 值不参与所有的聚合函数运算
分组查询
语法:
select 字段列表 from 表名[where 条件] group by 分组字段名[having 分组后过滤条件];
where 和 having 区别
执行时机不同
- where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
判断条件不同
- 判断条件不同:where不能对聚合函数进行判断,而having可以