MySQL 1、初识数据库

一、什么是数据库?

以特定的格式保存好的文件,我们就叫做数据库。

提供较为便捷的数据的存取服务的软件集合、解决方案,我们就叫它数据库。

存储数据用文件就可以了,为什么还要弄个数据库。

文件或数据库都可以存储数据,但是如果用文件,对于其内数据内容的管理工作就需要程序员自己做,如果用数据库,只需要几条语句就可以了。

相比较于数据库,文件的缺点在于

1.文件的安全性

2.文件不利于数据查询和管理

3.文件不利于存储海量数据

4.文件在程序中控制不方便
数据库的存储介质:磁盘和内存

在Linux中,安装包一般是.rpm格式的。

rpm -qa查看系统中之前安装过的安装包

数据库可以更有效的管理数据。

指令:

启动:systemctl start mysqld

MySQL的登录:mysql -uroot -p

连接数据库:mysql -h 127.0.0.1 -p 3306 -u

127.0.0.1为指定主机ip(这里是本地ip,如果支持远端,也可以输入远端ip)

3306是mysql的默认端口号(数据库是建议改端口号的)

-u表示想以哪个用户登录

-p选项后面跟密码
mysql实际上是一套网络服务

mysql是数据库的客户端

mysqld是数据库的服务端

我们目录下的mysql实际上是MySQL的客户端,mysqld是MySQL的服务端,也叫数据库服务,实际是一个应用程序,启动之后变成进程。
如果数据库被卸载,其内的数据仍然会保留下来
数据库的本质:对文件的内容提供基本的内容操作,不需要用户、程序员手动进行数据管理,可直接通过mysql软件来操作文件。mysqld是一个软件层,能够帮助用户进行数据管理。
什么是数据库?

mysql实际上是一个数据库服务,以mysqld的形式呈现,最终在磁盘上会有大量的文件保存数据库内部的数据,我们把服务端和这些数据统称为数据库。
实际mysql的服务端就是一个网络服务器,也就是说它采用TCP协议,mysql处于应用层,就是一个应用层服务。在网络的视角,mysqld它就是一个应用层服务,在系统的视角,它就是一个用户层的一个进程

:::3306和LISTEN是TCP协议,是mysqld应用层

它是一个网络服务,内部一定有自己的协议(我们不学mysql的协议规范等等)

要重启的是服务端

d开头的这个表示未来我们建库或者建表以及数据、数据库,都会放在这个目录

s开头的这个主要是用来进行管道通信的。

最重要的就是datadir。第一节1:12:00-1:16:00改mysql路径

改端口号:第一节1:58:45

二、创建一个数据库

mysql是一个关系型数据库(数据和数据之间、数据的行列之间、表与表之间有较大的联系、关系,数据间耦合度较高)。像Nosql(not only sql)这种,它的数据和字段之间没有关系。

创建一个数据库,本质是在做什么?建表本质在Linux上是做什么?

本质是在系统里创建了一个目录,建表本质是创建文件。

在MySQL中建立一个表本质是在Linux上创建对应的文件。

建表的行为在数据库里对应着两个文件。
数据库命令:

show databases;//显示当前数据库支持的数据库列表

creat database +名称;//创建数据库

在MySQL中,建立一个数据库本质是在Linux下建立了一个目录。这个目录就叫数据库。我们操作的是客户端,也就是说实际上本质是客户端构建一个sql,通过网络或本地进程间通信,交给服务端进程,服务端进程收到sql指令,在它的进程内部,一定有对应的系统调用,帮我们创建目录

use +库名称;//使用该库、进入该库

select database();//可以查一下现在用的是哪个库

system clear//执行系统的清屏命令,因为mysql没有清屏命令

create table user(//建表

name varchar(20),

age int

);

show tables;//查看表

desc user;//查看表的具体结构

insert into 表名 () values ();//插入数据

select * from user;

mysql有自己的缓存,不是每个操作都反映在磁盘上

上图是Linux环境下的。

Mysql本质就是一个命令行的client,未来我们知道的图形化界面的访问数据库的软件,也是client,(mysql的生态中,也会提供第三方库,让语言也能直接访问MySQL,这种也叫client(客户端))(Linux中的mysql是一个客户端,mysqld是一个数据库服务端)

服务器、数据库、表关系

MySQL实际是以二进制形式存数据的,只是呈现出来的不一样,MySQL为我们做了相关转换(呈现出来的是逻辑结构)mysql的逻辑结构是行和列的

第一节最后二十分钟,了解就行

mysql架构

mysql在不同环境下都有编好的,我们可以直接拿来用,现在的它在大部分平台都是可以跑的。所以mysql的底层源码在不同平台的底层源码是不一样的,但是上层的sql语句基本都是一样的。而C/C++这样的语言在不同平台上,底层的源码也是不一样的。

Mysql分为三层,第一层叫链接层,主要作链接管理、安全管理、鉴权(例如检测密码是否正确等等)。第二层主要作词法语法分析、系统调优、编译处理等等。第三层是存储引擎层,且支持插件。每一个存储引擎其实都是一个类。

sshd:远程登录协议,如果这个不启动,我们就无法在windows用xshell登录mysql

相关推荐
桀桀桀桀桀桀3 分钟前
数据库中的用户管理和权限管理
数据库·mysql
superman超哥1 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452001 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
engchina2 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina2 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生2 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
威哥爱编程2 小时前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
小华同学ai2 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
Acrelhuang2 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
十叶知秋3 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试