数据库
-
基础篇
-
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)
sql
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可以