MySQL-基础篇
从数据库的基础的概念特性到数据库当中的SQL语句,再到数据库当中的存储引擎、索引优化以及分库分表、数据库的集群,甚至于数据库的底层原理
- MySQL概述
- SQL
- 函数
- 约束
- 多表查询
- 事务
这块由于上学期学过一些就速过。
MySQL概述
通过SQL就可以操作数据库管理系统,通过数据库管理系统操作数据库以及数据
这块没跟着按,之前跟着韩顺平老师安过 net start mysql
通过表存储数据的数据库就称为关系型数据库,不通过表存储数据的数据库就称为非关系型数据库
如果以后遇到版本不兼容等啥问题的话,回过头来安一下
SQL
通用语法
SQL分类
DDL
在MySQL中,如果要设置字符集,不建议设为UTF-8,因为它存储的字符长度是3个字节,在数据库当中,有一些特殊的字符是占4个字节的,推荐使用utf-8mb4(这个支持)。
这个()必须加,不然会报错,涉及到后面要讲的函数
在命令行里,执行sql语句前,先清楚当前所在的数据库。不要在系统库里面执行任意的操作。
这个就是存储引擎👆
这个是默认的字符集👆后面是排序规则
MySQL中的数据类型
数值类型
字符串类型
日期时间类型
精度和标度
123.45 精度为5(整个数长度),标度是2(小数位数)
如果是定长字符串char(10),即使存储1个字符,也会占用10个字符的空间,其他空间会使用空格进行补位
变长字符串varchar和上面那个不同,使用时,要根据内容去计算使用的空间
、
DML
DQL
between and使用既包含最小值,也包含最大值
作用于某一列的
统计数量用的是count
方言指的是数据库和数据库之间不同的地方
【TODO】Oracle中是通过什么number配合子查询?? 没听懂,后面需要的时候再学习
DCL
DCL控制的主要就是有哪些用户来访问这台数据库服务器
当这个用户访问时,可以操作哪些数据库
主机名指的是在哪一个主机上这个用户可以访问当前MySQL
主要是运维人员用
*.*
函数
函数在MySQL当中已经内置了
函数是指一段可以直接被另一段程序调用的程序或代码
字符串函数
数值函数
【六位随机验证码】
也可以在后面补零,好聪明
日期函数
current
第一个时间减去第二个时间
流程函数
第二个空是指什么都没有,而不是null
约束
概述
自动增长AUTO_INCREMENT
约束演示
【弹幕】name是 null的时候没分空间就寄了 id没申请到 name是tom3的时候 一切正常申请 在检查唯一的时候发现tom3已有 插入失败 但是id申请了
也可以通过图形化界面添加约束
外键约束
子表:指的是具有外键的表,即(dept_id)
父表:指的是外键所关联的表
也可以称为主表和从表,只是在逻辑上存在这种关系,并没有设置物理外键
需要建立外键关联
实例
蓝色小钥匙代表外键,黄色的代表主键
保证数据的一致性和完整性
级联
【弹幕】例如每张表只能有一个自动增长项,通常为主键。这都是在练习时报错我自己查的
oracle数据库里面是没有auto_increment,要想实现主键自增,要通过一个数据库对象sequence序列
多表查询
多表关系
也可以合并为一张表
多表查询概述
需要消除无效的笛卡尔积
内连接
影式内连接和显式内连接的区别
1.表的连接形式
2.连接条件的表示形式
一旦为表起了别名,就不能再直接通过表名来限定字段
外连接
项目开发中,左外用的比较多一点
这两条sql相同
自连接
自连接查询的时候,一定要给表起别名
联合查询
union(可以去重),union all(一股脑全返回)
子查询
注意 all、some、any的用法
经常出现在from之后,把表子查询返回的结果作为一张临时表再和其他表进行联查操作
多表查询案例 p48、p49 先跳
明天上课先自己写一下
回头核对
涵盖了内连接、外连接、自连接子查询以及它们的整合使用
事务
简介
eg:转钱的三步操作需要控制在一个事务的范围之内
对于mysql数据库来说,事务是默认自动提交的
所以要想把若干个操作放在一个事务的范围内,就需要手动的去开启事务、提交事务、(如果出现异常)进行事务的回滚
操作
对于当前来说,每一条sql语句就是一个事务
方法1👇
如果是1就是自动提交
设置的参数是会话参数,只针对于当前窗口有效
对于业务操作来讲,如果是正确操作,需要提交事务,错误操作,则需回滚事务
方法2👇
四大特性
事务一旦提交之后,最终数据就会持久化,在磁盘当中永久地保留下来
并发事务问题
并发事务所引发的问题,指的是多个并发事务在执行的过程当中所出现的脏读、幻读、不可重复读问题
事务隔离级别
就是解决并发事务所遇到的问题的
读未提交、读已提交、可重复读、串行化
Oracle数据库默认级别是read committe
串行化的事务隔离级别是最高的,但是性能是最差的
read uncommitted性能是最高的,但是数据安全性是最差的
在业务当中,选择事务的隔离级别时,即要权衡数据的安全性,也要权衡数据库的并发性能
set session指的是会话级别的,如果设置的是这个级别,仅代表针对当前客户端窗口有效
串行化指的就是在进行并发事务操作的时候,只允许一次一个事务来操作
A事务在操作的时候,B事务只有当A事务提交完成之后才能操作
底层原理在进阶篇
周一下午完 p57end √完美完成