数据库 是所有软件体系中最核心的存在 DBA 存数据 管理数据
概念 数据库(DB DateBase) 数据仓库,软件 安装在操作系统之上
数据库分类
关系型数据库(SQL) MySQL,Oracle,Sql Server,DB2,SQLlite
通过表和表之间,行和列之间的关系进行数据的存储
非关系型数据库(NOSQL) Not Only
Redis,MongDB 对象存储 通过对象的自身属性来决定
DBMS(数据库管理系统)
数据库的管理软件,科学有效的管理我们的数据,维护和获取数据
MySQL 关系数据库管理系统 SQL语言用于访问数据库最常用标准化语言
体积小 速度快 总体拥有成本低
数据库数据类型 列类型
数值 tinyint 十分小的数据 smallint 较小的数据 int 标准的整数 4个字节 bigint 较大的数据
float 浮点数 4个字节 double 浮点数 8个字节 decimal 字符串浮点数
字符串 char 字符串固定大小 0~255 varchar 可变字符串 0~65535(常用)String
tinytext 微型文本 2^8-1 text 文本串 2^16-1
时间日期 date YYYY-MM-DD,日期格式 time HH:mm:ss时间格式
datetime YYYY-MM-DD HH:mm:ss最常用的时间格式
timestamp 时间戳 1970.1.1 到现在毫秒数 全球统一
year 年份表示
null 没有值 未知 不要使用null 进行运算
DML语言 数据操作语言
添加 insert insert into 表名([字段名1,字段名2])values('值1'),('值2');
修改update update 表名 set 字段名=value,字段名=value where 条件;
where 子句 运算符 id等于某个值,大于某个值,在某个区间内修改
通过多个条件定位数据 and
删除 delete delete from 表名 where 条件;
清空 truncate命令 作用 完全清空一个数据库表,表的结构和索引约束不会变
truncate table 表名 ;//自增会归零
DQL 查询数据 slete 使用频率最高的语句 slete 字段 from 表名 as 起别名
函数 concat(a,b)
去重 distinct 去除查询出来的结果中重复的数据 重复的数据只显示一条
where 条件子句 搜索条件一个或多个表达式组成 结果为 布尔值
作用 检索 数据中符合条件的值
逻辑运算符 与 a and b && 或 a or b !! 非 not a !
模糊查询 比较运算符
is null a is null is not null a is not null
between a between b and c 若a在b和c之间 则结果为真
like a like b SQL匹配 如果a匹配b 则结果为真
in a in(a1,a2,a3...) 假设a 在a1,a2,或者其中一个值中,结果为真
联表查询 ,分析需求 分析查询字段(连接查询) 确定使用哪种连接查询
确定交叉点 判断条件
join on 连接查询 where 等值查询,
inner join 如果表中至少有一个匹配,就返回行
left join 即使右表中没有匹配,也会从左表中返回所有的值
right join 即使左表中没有匹配,也会从右表中返回所有的值
排序 升序 asc 降序 desc order by 通过哪个字段排序 asc/desc
分页 limit 起始页值(n-1)*页面大小,页面大小 n 当前页 (数据总数/页面大小=总页数)
select p.username,addr,result from people as p inner join student as s
on p.id = s.id order by result asc limit 0,2;
子查询 本质在where语句中嵌套一个查询语句
select p.username,result from people p inner join student s
on p.id = s.id where p.username like '%刘%' order by result asc;
select p.username,s.result from people p,student s where p.username = (select username from people where username like '刘_')
查询 语法 select 查询字段 from 表 xxx join 链接的表 on 等值判断
where (具体的值 子查询语句)group by (通过哪个字段分组)
having (过滤分组后的信息 条件和where一样 位置不同)
order by (通过哪个字段排序)升序或降序
limit startindex pagesize 起始页值(n-1)*页面大小,页面大小 n 当前页
事务 要么都成功,要么都失败
SQL 执行 A给B转账 A1000----》 200 B 200
SQL 执行 B收到A的·钱 A800 -----》B400、
将一组SQL放在一个批次中执行
事务原则 ACID原则 原子性,一致性,隔离性,持久性 (脏读,幻读)
原子性 Atomicity 要么都成功 要么都失败
一致性Consistency 事务前后的数据完整性要保持一致
持久性 Durability 事务一旦提交则不可逆 被持续化到数据库中
隔离性 Isolation 事务的隔离性 是多个用户并发访问数据库时 数据库
为每一个用户开启的事务 不能被其他事务操作干扰
(1)原子性(A):安全性管理子系统;
(2)一致性(C):完整性管理子系统;
(3)隔离性(I):并发控制子系统;
(4)持久性(D):恢复管理子系统;
执行事务 MySQL 默认开启事务自动提交
set autocommit = 0;//关闭
set autocommit = 1;//开启 默认
//手动处理事务
set autocommit = 0;//关闭自动提交
//事务开启
start transaction; //标记一个事务开始,从这个之后sql都在同一事务内
insert xx;
insert xx;
提交 持久化(成功)
commit
回滚 回到原来的样子(失败)
rollback
//事务结束
set autocommit = 1;//开启自动提交