【陪你沉浸式快速上手MySql——上】

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. 安装方式

605794f9ae7647f09be26cd0f9f5574b.png

2. 更改终端

3. 服务的启动和停止

c3486e18e034478aa7a3389dcdec4923.png

5fad068e34ba44e3a3c2fd303ee43d57.png

Mysql就是典型的C/S架构软件,只不过这个客户端比较low逼,不能用鼠标点,是terminal(终端),在本地用的

client 客户端 通过命令去访问/操作数据库

server 服务端

Mysql Server Mysql服务器

 

4. 连接mysql

“mysql -u root -p”的意思是我要用用户名(这里是root)密码的方式登录mysql34d600ed275e40b5af476dfa2878d438.png

5. 创建data 文件夹

 

2. 数据库的基本操作

1. 数据库显示和讲解

showda59d7a864494328a78afd2e53a4eff0.png

 

2. 创建数据库

create

bd5343b666a04de5a135090e222c35bd.png

 

不能创建和关键字同名的数据库,如果硬要创建,这样写(那个是反引号,就是Tab键上面那个键)

63a96c0e4fb841229330caf5d0334235.png

 

更规范的写法054a3498477244e5ab3524062efa887f.png

 

3. 删除数据库

drop8d471729095d48ea84d0e86a75842152.png

 

4. 查看创建数据库的SQL81db13ca3fd340f480f978db7416e073.png

 

5. 创建数据库指定字符编码以及查看数据库的字符编码

在Windows里,控制台的默认字符编码是GBK3371c60ff3f44717a240fc3b33c23f5a.png

 

在学习阶段,如果是用Windows学习数据库,为了避免乱码数据库保存的东西乱码, 如果要创建数据库指定字符编码,要给它设置成gbk。如果用Mac或者Linux学习数据库,统一给它设置成utf-8。实际开发过程中也一定是设置成utf-8b02497bc30f34a539f7321191dbb8cb6.png

 

6. 修改数据库字符编码

alter35faf540d21d4e7685603c3748e6b0d2.png

 

3. 表的基本操作

1. 引入表

仓库里面有很多架子吧,这些架子是用来归类的,架子上一排一排的东西可以类比成表。数据库数据库,数据在表之中

 

2.引用数据库和查看数据库中的表

use9477c3ff31384dcea89b1eb6194ff969.png

 

3. 创建表

create31823b59647f4dcc93b8fc9db295f83a.png

 

更有b格地创建表(bushi):04a00ee476e34c7fbb2e1f9645f62fac.png

auto_increment:自动增长,在这里是以int类型自动增长,类似于自加“++”

primary key :主键,如果在一个字段(id,name,phone,address就是字段)后面加上了 primary key,就意味着这个字段是唯一的,不能有重复的,而且必须要填,不能为空。一般都是加在id后面,因为我们一般就是用id来作为区分的标准。

comment:注释(注意后面是单引号,不是反引号)

not null :在一个字段后面加上了 not null,意味着这个字段不能为空

default :默认值

engine=innodb:数据库引擎

 

看看两种创建方式的对比:16f8c6b62cf245ddab2e745188b3ee3d.png93bcb133a93443d18e38f94fd25da063.png

 

5. 查看表的结构

desc0304b265dece440db0afaca19d81bd29.png

 

6. 删除表

drop

这些表我随便建的,展示用

删除一个表6e44fe6c2fb64be88bd0288b342cfcc4.png

 

同时删除多个表6b0510403ee74375aed87d85070699a0.png

 

7. 修改表

添加字段:(alter:改变)7996bee6bda5459db0dcd36832d0eb00.png

 

在指定位置添加字段:443e829e627442e49b2bb6d12dac5b2a.png

907b12ab52384ddf8fac941593226065.png

 

删除字段:

drop

6975e661d529488f81209a21c1e00c79.png

 

修改字段:

改字段名和类型:

changec7d612c5d44f4e4aadb59ce84c7acd9d.png

 

只改字段类型:

modify871124273ee64a84a77d213f4caa08d2.png

 

修改表名:

rename7a27c6a49c58471a80be758764efc4ca.png

 

4. 数据操作

1. 操作数据

现在我们有表了,但是表里还没有数据f093f6ccef3348c1a6d25c46668ab608.png

select: 选择

*: 全部

from: 从哪张表

 

插入数据:

insert:插入4a4ab27ba0ae46bc80e58b49cdd42311.png3d605caaabb74d06844594b28c7e09d2.pngc8b47ff1f8e44a8db101e83dbace0cdd.pngf53cf64297c842fc9795daa59c078370.png

实际开发的时候大抵不是这么写的,但是这是学习阶段

 

一次性插入多条数据:477550e407414f1b8b92904f564e042e.png

 

2. 删除数据

delete3af13779884742ea8fbe5ccecda9e46f.png

delete:删除

from:想删除的数据来自哪张表

where:根据哪个字段来删除

 

如果不根据id来删除:e5b4dff436314903a4ed0634138781a4.png

这样一删就删了两行,容易出错,我们删数据的时候一般情况是按照唯一的主键来删除数据的

 

where语句也可以这样用:fc5d3d004f6c4e37863ed20f76067877.png

 

清空表:

用delete操作清空表:99f5d8da689c455bab9427afd30ad81c.png

因为我们从有一行的 id=6 就使用了delete语句,delete操作不会删除表的结构,只是删除数据,不会重置表的自动增量计数器 (创建teacher这张表的时候定义id是自动增长的,还记得吧) 。而且用delete操作清空表,需要遍历整张表,相当于用了一个for语句,速度很慢,一般不会用于清空整张表。

 

用truncate操作清空表:07534942aebd41f1a7e96421b4619a09.png

用truncate操作清空表,直接删除整个数据页,并且释放空间。truncate操作也不会删除表的结构,但它会重置表的自动增量计数器。清空表的时候一般用truncate而不用delete,truncate操作通常比delete更快,数据量大时更是如此

 

3. 更新数据

update:更新ff911fae88ff488ead6f0cdaf917552a.png

 

也可以同时更新多个数据6a1d827dfbe84ea4b42e43eb2f109256.png

注意:无论任何时候都要格外注意where后面接的东西,一般情况下where后面的都是唯一的

 

如果不加where会怎么样:0b91c940f5574b8f820db46bab2fe714.png

 

where后面也可以接多个条件d6c157fc73534c729318311b5904d081.png

 

4. 查询表数据(基本)

其实对于初学者来说,查询数据是最难的,我们先来看看最基本的,后面会说进阶的7a026ac317a5483bb6bf1c8e5e152d64.png

 

查询表的全部数据:(前面已经遇到很多次了)1dc4bbe0bdbb4ddf959e7618401d18fc.png

 

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包括了一系列的命令,这些命令用于授予或撤销用户访问数据库中特定数据的权限,以及控制不同用户对数据库对象的操作能力。

 

 

 

  • 38
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值