数据库概念
在学习数据库之前,大家保存数据要么是在程序运行期间,例如:在学习编程语言的时候,大家写过的管理系统,运用一些简单的数据结构(例如顺序表)来组织数据,可是程序一旦结束,数据就会丢失,只有程序重新运行才能输入和查看数据,这是因为我们的数据是在内存上保存的,一旦遇到断电或者程序关闭等外部影响,我们的数据就会清空,这也是内存上数据的存储特点。
如果再高级一点,我们可以使用文件来保存数据,例如在C语言中的文件操作函数,我们可以将数据保存到文件上,或者使用 excel 来保存数据,但是文件保存数据不利于数据的查询和管理,也不利于存储海量的数据,文件在程序中不方便控制。
因此,数据库就顺势而生。
数据库是组织和保存数据的应用程序,底层使用了一些合适的数据结构对数据进行组织,方便用户进行增删查改的基本操作。
数据库把数据保存在磁盘中,实现对数据的持久化,每次程序重新加载数据就可以从数据库中读取以前的数据;
数据库还能提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
数据库的分类
关系型数据库(RDBMS):
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个
关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
举例:
一张图表由行和列组成:例如我们使用的 excel 表格
数据库里由很多的表格,这些表格之间存在某些联系,例如:一家商店使用一个数据库来保存数据,里面由很多张数据表,一张商品表包含商品名称、商品价格、商品库存、商品描述,一张客户需求表包括客户名称,需要的商品以及数量,金额,这两张数据表相辅相成,存在联系,而包含这两个数据表的数据库被称为关系型数据库。
关系型数据库基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
1.Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统,收费。
2.MySQL:属于甲骨文,不适合做复杂的业务。开源、免费。
3.SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
非关系型数据库:
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
1.基于键值对(Key-Value):如 memcached、redis
2.基于文档型:如 mongodb
3.基于列族:如 hbase
4.基于图型:如 neo4j
MySQL
这里我使用的是 MySQL 8.0 大版本作为演示
配置文件的介绍
注意别乱删东西!!!!
修改配置文件记得要备份一份!!!
MySQL 的配置文件是 my.ini
如果你是默认安装路径,可以在 C:\ProgramData\MySQL\MySQL Server 8.0 这个路径找到这个配置文件,文件的打开方式,这里使用 VS2022 编译器打开,你也可以使用 VScode 或者记事板,编译器打开会有颜色标记,比较好看一些。
所有的客户端配置都在 client 结点下,注释以 # 开头,绿色的是注释。
port = 3306 表示MySQL 服务开启的是 3306 端口
mysqld 是MySQL 守护
下面的 datadir=D:/database/MySQL/data8.0 是我指定 MySQL 数据保存的位置,大家可以自行设置。
存储引擎,用来处理数据的,是 MySQL 的核心
log-output=FILE 通用日志保存在文件中
general-log=1 开启通用日志,记录每一条数据库操作
general_log_file=“路径” ,通用日志的路径
slow-query-log=1 慢查询日志,数据操作超过了指定的时间
slow_query_log_file="路径” 慢日志的路径
long_query_time=10 慢查询日志的执行超过时间
log-error=“路劲” ,错误日志的存储路劲
log-bin=“路径” 记录所有的修改操作,用于集群环境
server-id=1 用于集群环境,一个集群环境的 id 不能重复
客户端工具
我们使用 MySQL 数据库的时候,我们可以直接通过 cmd 窗口打开 MySQL ,前提是你配置好了环境变量:
win + r ,输入 cmd ,输入 mysql -uroot -p
解释一些这个命令行:mysql 表示要执行 mysql.exe 的程序,-u 表示使用(use),后面 root 是用户名(默认是 root),-uroot b表示登录用户名,-p 表示需要用户输入密码才能使用
我们还可以直接点击MySQL 自带的客户端工具:
我们还可以使用可视化客户端工具:例如MySQL workbench ,这个可以在官网自行下载
可以在里面连接数据库,然后编辑我们的SQL 语句
或者你可以使用其他可视化工具。
SQL
DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter
DML数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select
DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
注意:SQL 是针对数据库操作的语言,可以类比我们的编程语言,数据库是用来存放数据的,这两个是两个东西,大家不要混淆。
数据之间的关系
MySQL数据库中可以包含很多个数据库
上面除了 javatest 是我自己创建的数据库, 其他四个数据库是MySQL自带的数据库,不要删除!!!不要删除!!! 这些自带的数据库包含MySQL 自身的一些配置、性能、系统变量等信息,在不清楚它们的具体作用的时候,不要修改!!!不要修改!!!如果改错了或者删除了,MySQL就可能无法启动,如果你还没有备份的话,那就 请重装数据库吧!!!!
一句忠告:不要随便删除系统自带的东西,因为你伤不起!!!!!
每个数据库中,又可以包含很多张数据表。
一张表有很多个数据行,例如 张三—男—1——54185254501 这就是数据行
每个数据行由列组成,例如上面的数据行是由 学生姓名、性别、班级和联系方式这四个列组成的
总结:
在 MySQL 数据库中我们可以创建属于自己的数据库,每个数据库中会有很多张数据表,每张数据表有很多的数据行,每个数据行有很多个列组成。