写在最前边:
研究生一枚,为后端实习和未来工作打基础。无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了。
韩顺平老师课程地址:https://www.bilibili.com/video/BV1fh411y7R8?spm_id_from=333.999.0.0
阅读提醒:本笔试适合有编程语言基础的伙伴阅读,因为本兔兔是本专业的,有c、c++、python 、sql基础,笔记中特别的基础的内容就没有记录。完全零基础的小伙伴建议跟着韩老师的课程自己记录。
Java 基础
第三阶段 分析需求、提高代码实现能力
第三章 Mysql基础
驾驭数据库的能力是衡量程序员技术的标准
一、MySQL安装和配置
1、选择版本 5.7,因为目前最稳定
2、配置过程遇到的问题:
1) 已经安装了其他版本的MySql,建议卸载然后跟着韩老师学习5.7,因为别的版本不稳定,mysql服务总是自动停止。
彻底卸载mysql的方法
2)记录自己root用户 的密码 是: 姓名全拼
3、使用命令行连接到MySQL
mysql必须是一个运行的状态哦
4、使用Navicat 管理数据库(SQLyog也行)
二、MySQL 的三层结构
1、MySQL数据库中 普通
表的本质是文件
:
2、三层分别是:
二、SQL语句学习
1、SQL语句分类
2、数据库的操作
1)创建数据库
![]()
- 创建数据库 \ 表 的时候,如果名称和关键字重名可以加上反义号 ’ ’ 。无论什么名字都带着反义号更加规范
2)查看数据库
3)删除数据库
慎用!!!
4)备份数据库 在安装目录\bin下使用DOS指令操作
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 保存路径\\文件名.sql
5)恢复数据库 在cmd中进入MySQL数据库后,再使用该指令命令行
Source 文件名.sql
恢复技巧:还可以把备份的sql文件扔到navicat中全部执行一遍
4)备份 表 在安装目录\bin下使用DOS指令操作
mysqldump -u 用户名 -p 数据库 表1 表2 表n > 保存路径\\文件名.sql
3、表的操作
三、MySQL常用的 列类型【数据类型】
使用原则:在能够满足需求的情况下,尽量选择占用空间小的类型
0、bit类型
1、数值类型
细节1:数值类型还细分为有符号、无符号
细节2:DECIMAL[M , D]
1、M是所有位数的总数 = 整数位数 + 小数位数。最大是65,默认为10 2、D是所有小数位数。最大是30,默认为0
细节3:
整型列,存放的值不符合要求会报错;小数列,存放的值不符合要求会被四舍五入或者补0
2、文本类型(字符串类型)
细节1:
1、CHAR是固定长度的字符串,VARCHAR是变长字符串
细节2:
1、CHAR最多 255 ``字符`` 2、VARCHAR最多 65535 ``字节``,其中由3个字节用来记录字符串长度,所以真正存放数据的是65532个字节。
细节3:VARCHAR真正可以存放的字符数量
1、不同的 字符集,字符使用的字节大小不一样。 2、如果是utf8字符,则1个字符占用3个字节,真正可以存放 56635 / 3 = 21844个字符 3、如果是gbk字符,则1个字符占用2个字节,真正可以存放 56635 / 2 =32766个字符
细节4:
在创建表的 create语句中,列类型括号中填的都是字符数量(不区别中英文) 而不是字节。
3、二进制数据类型
4、日期类型
相关函数 【在insert 、select语句中都可以使用】
最后一格 年月日 操作函数的演示
相关函数使用细节
四、修改表
五、CRUD操作
1、INSERT INTO 语句注意事项
2、UPDATE…SET…[WHERE…]语句注意事项
3、DELETE FROM语句注意事项
4、SELECT 语句注意事项
六、函数
1、统计函数count
细节:count(*)和count(列)的区别:
2、合计函数sum
细节:仅对数值起作用哦!!
3、其他合计函数avg、max、min
4、分组统计
5、字符串函数 【字符索引从 1 开始】
6、数学函数
7、加密函数 和 系统函数
8、流程控制函数
七、高级查询语句
1、WHERE语句
2、LIKE操作符语句—— 【%和 _】
3、判NULL 要用 IS
4、查询表结构
5、排序
6、分页查询
注意LIMIT后必须加确定的值而不是表达式哦
八、高级分组语句 分组函数+group by
count 不统计 null ,统计的是非null的行数
1、不加筛选时,两张表查询结果是笛卡尔积
2、筛选条件要多思考哦,编号相等只是最简单的
3、自连接将同一个表看做两个表使用,进行连接操作
注意:需要起别名哦!
九、行
子查询(嵌套查询)
嵌入到其他sql语句中的 select语句
1、单行子查询
子查询只返回一行数据
2、多行子查询
子查询返回多行数据,使用关键字 in
3、子查询 充当临时表 可以解决很多复杂的查询
4、all操作符
等价于使用MAX:
5、any操作符
等价于使用MIN:
十、列
子查询(嵌套查询)
例题
十一、表复制【自我复制、蠕虫复制】
1、使用场景
十二、表去重
十三、合并查询结果
union all 不会取消重复行
union == 会取消重复行==
十四、外连接
1、出现的需求
要求显示部门名【部门表】、员工名【员工表】,并且没有员工的部门也要显示 出来。
以前的技术:做不到2、分类
十五、约束
1、主键 —— primary key 【不允许null】
2、unique 【允许null时可插入null】
3、外键 【允许null时可插入null】
4、check 【mysql5.7 在语法上支持,只是做语法校验,但是实际不生效】
十六、自增长
1、需求
2、使用
3、细节
十七、索引 不用加内存、不用改程序、不用调用sql就能提高数据库性能的手段
1、索引机制
2、索引类型
3、查询和删除索引
4、适合创建索引的场景
十八、事务 用于保证数据的一致性
1、由一组相关的增删改语句组成(
不含select语句
),该组语句要么 全部成功,要么 全部失败。2、事务操作
3、细节
4、事务隔离级别
没有事务隔离会造成的危害:
mysql隔离级别 隔离级别演示视频