b站Micro_Frank付费课的笔记
0. 开场
1. 什么是数据库
保存,使用...数据(qq账号密码、银行的钱的数目等等)的仓库
1-1 抛出问题,数据库的诞生
瞬时---》放在内存里,程序结束,第二次运行的时候,上次的数据就没了;
后来:保存在文件里(由原来保存在内存里到保存在硬盘里)
“由瞬时转台---》持久性数据”
1-2 萌芽阶段
文件系统是萌芽阶段的数据库,不管是加密还是不加密,但用文件来保存数据很蠢,来看看后人是怎么解决的
1-3 CRUD
无论什么数据库,上手的第一件事情是看它怎么CRUD(增删改查)。对于新手而言,查找数据是最难的。
2-1 层次模型
查找分类数据的效率低下,不同层出现重复的数据时,难以保证数据的完整性
2-2 网状模型
虽然解决了层级模型没办法保证数据的完整性的问题,但没有解决导航问题,找不到父了(管子的父有共性也有特殊性)
2-3 关系型
把一个公共的字段绑定到所有表中,它和所有表都有关系,但互不影响。通过一个公共的字段管理所有的数据,关系说白了就是共性
表各管各的,互不影响
能找到父了(通过公共的字段)
3. 学习什么数据库呢
这不是学生应该纠结的问题,选择什么数据库是由企业决定的,由业务决定的,我们应该把基础打牢,掌握通用的知识,这样要学其他数据库时上手才快,换成其他的技术点也一样,比如语言(才发现Frank在b站发的解决广大it学子的问题里说过的话早在Mysql付费课里就说过了)
1. 安装连接以及配置(这部分一笔带过,建议去看专门讲MySql安装和配置的博客)
1. 安装方式
2. 更改终端
3. 服务的启动和停止
Mysql就是典型的C/S架构软件,只不过这个客户端比较low逼,不能用鼠标点,是terminal(终端),在本地用的
client 客户端 通过命令去访问/操作数据库
server 服务端
Mysql Server Mysql服务器
4. 连接mysql
“mysql -u root -p”的意思是我要用用户名(这里是root)密码的方式登录mysql
5. 创建data 文件夹
2. 数据库的基本操作
1. 数据库显示和讲解
show
2. 创建数据库
create
不能创建和关键字同名的数据库,如果硬要创建,这样写(那个是反引号,就是Tab键上面那个键)
更规范的写法
3. 删除数据库
drop
4. 查看创建数据库的SQL![81db13ca3fd340f480f978db7416e073.png](https://i-blog.csdnimg.cn/blog_migrate/5b7fd93165d890800d60a15a7f50affb.png)
5. 创建数据库指定字符编码以及查看数据库的字符编码
在Windows里,控制台的默认字符编码是GBK
在学习阶段,如果是用Windows学习数据库,为了避免乱码数据库保存的东西乱码, 如果要创建数据库指定字符编码,要给它设置成gbk。如果用Mac或者Linux学习数据库,统一给它设置成utf-8。实际开发过程中也一定是设置成utf-8
6. 修改数据库字符编码
alter
3. 表的基本操作
1. 引入表
仓库里面有很多架子吧,这些架子是用来归类的,架子上一排一排的东西可以类比成表。数据库数据库,数据在表之中
2.引用数据库和查看数据库中的表
use
3. 创建表
create
更有b格地创建表(bushi):
auto_increment:自动增长,在这里是以int类型自动增长,类似于自加“++”
primary key :主键,如果在一个字段(id,name,phone,address就是字段)后面加上了 primary key,就意味着这个字段是唯一的,不能有重复的,而且必须要填,不能为空。一般都是加在id后面,因为我们一般就是用id来作为区分的标准。
comment:注释(注意后面是单引号,不是反引号)
not null :在一个字段后面加上了 not null,意味着这个字段不能为空
default :默认值
engine=innodb:数据库引擎
看看两种创建方式的对比:
5. 查看表的结构
desc
6. 删除表
drop
这些表我随便建的,展示用
删除一个表
同时删除多个表
7. 修改表
添加字段:(alter:改变)
在指定位置添加字段:
删除字段:
drop
修改字段:
改字段名和类型:
change
只改字段类型:
modify
修改表名:
rename
4. 数据操作
1. 操作数据
现在我们有表了,但是表里还没有数据
select: 选择
*: 全部
from: 从哪张表
插入数据:
insert:插入
实际开发的时候大抵不是这么写的,但是这是学习阶段
一次性插入多条数据:
2. 删除数据
delete
delete:删除
from:想删除的数据来自哪张表
where:根据哪个字段来删除
如果不根据id来删除:
这样一删就删了两行,容易出错,我们删数据的时候一般情况是按照唯一的主键来删除数据的
where语句也可以这样用:
清空表:
用delete操作清空表:
因为我们从有一行的 id=6 就使用了delete语句,delete操作不会删除表的结构,只是删除数据,不会重置表的自动增量计数器 (创建teacher这张表的时候定义id是自动增长的,还记得吧) 。而且用delete操作清空表,需要遍历整张表,相当于用了一个for语句,速度很慢,一般不会用于清空整张表。
用truncate操作清空表:
用truncate操作清空表,直接删除整个数据页,并且释放空间。truncate操作也不会删除表的结构,但它会重置表的自动增量计数器。清空表的时候一般用truncate而不用delete,truncate操作通常比delete更快,数据量大时更是如此
3. 更新数据
update:更新
也可以同时更新多个数据
注意:无论任何时候都要格外注意where后面接的东西,一般情况下where后面的都是唯一的
如果不加where会怎么样:
where后面也可以接多个条件
4. 查询表数据(基本)
其实对于初学者来说,查询数据是最难的,我们先来看看最基本的,后面会说进阶的
查询表的全部数据:(前面已经遇到很多次了)
5. SQL语句区分
DDL:data definition language,数据定义语言,像create,drop,alter,show 这些是定义数据库的时候用的,给数据库用的。DDL主要用于创建、修改和删除数据库中的对象,比如数据库、表、索引和视图等。
DML:data manipulation language,数据操作语言,像insert,delete,update,select这些是用来操作数据库中存储的数据。DMLDML主要用于插入、查询、更新和删除数据库表中的记录。
DCL:data control language,数据控制语言,数据库管理系统(DBMS)中用来管理数据库中的数据访问权限和安全的语言。DCL包括了一系列的命令,这些命令用于授予或撤销用户访问数据库中特定数据的权限,以及控制不同用户对数据库对象的操作能力。