前言
少年的征途是星辰大海
数据库有很多种,主要学习MySQL数据库(未来工作时比较常用)。
未来可期
一、数据库介绍
一)什么是数据库
- 文件保存数据会存在【安全性、数据查询和管理、海量数据存储、程序中控制的不便性等】缺点,所以提出了【数据库】。
- 数据库:是一类具体的软件,也是把很多数据组织起来。在数据库这个软件的内部也会广泛使用数据结构,组织起来的目的是:增删查改。
- 更加便于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
二)数据库的分类
数据库大体可以分为【关系型数据库】和【非关系型数据库】。
1. 关系型数据库
- 关系型数据库:是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
(对于内部数据如何组织有严格的要求) - 常用关系型数据库:
① Oracle:世界上最好的数据库(不差钱+数据重要 -> 如:银行)
② MySQL:当下互联网公司使用最广泛(开源免费,但是不适合做复杂业务)
③ SQL Server:收费,属于微软,适合中大型项目
④ SQLite:轻量级数据库–> 一共就一个可执行程序.exe,体积就几百k;【别看它小,它可以认为是“装机量最大的数据库”,在安卓系统中内置(很多安卓的应用都使用sqlite)】
2. 非关系型数据库(了解):
-
不规定基于SQL实现,现在更多是指NoSQL数据库。如:
① 基于键值对(Key-Value):如 memcached、redis
② 基于文档型:如 mongodb
③ 基于列族:如 hbase
④ 基于图型:如 neo4j -
关系型数据库和非关系型数据库的区别:
注:OLTP(On-Line Transaction Processing)是指联机事务处理,OLAP(On-Line Analytical Processing)是指联机分析处理。
二、MySQL服务器安装
MySQL的安装需要进行路径配置,具体安装过程可以参考网上或B站教程。
三、客户端连接MySQL服务器
- MySQL默认只允许在服务器本机 使用 root 用户登录,要开启 root 用户的远程登录,在MySQL服务器本机执行:
mysql -u root -p
要求输入密码,没有设置密码则直接回车
进入MySQL命令行以后,可以看到 mysql>
-- 使用mysql数据库
use mysql;
-- 更新用户表的root账户,设置为任意ip都可以访问,密码修改为123456
update user set host="%",authentication_string=password('root') where
user="root";
-- 刷新权限
flush privileges;
退出
quit;
四、SQL分类
- DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter - DML数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update
DML中又单独分了一个DQL,数据查询语言,代表指令: select - DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
(后期主要学习DDL、DML操作)
五、数据库补充
- MySql是一组程序,是客户端-服务器结构的程序(有请求request和响应response):也就是说,一个应用程序在实现一些核心逻辑的时候并不是自己一个人完成的,而是通过”网络“要和其他程序进行交互,共同完成的。
- 注:如果服务器被入侵而数据库锁定了,就【重装系统】。
- 如果MySQl密码忘了,重装是最简单的办法。(但是要注意MySQL的卸载不是一件容易的事情,可以参考网上
的教程,如果卸载不干净在重装时就会出现问题) - 在客户端里进行任意操作,都会通过网络传输给服务器,由服务器进行处理(即使客户端和服务器在同一个
主机上) - 我的电脑现在没有联网,但是为啥我的客户端还能连上服务器?
——你没联网,指的是你没有连接外面的网络,而不影响你自己主机上程序之间的通信。 - 数据是存储于服务器这边的;而客户端只是一个简单的和用户交互的程序。
因此,可以认为MySQL服务器就是MySQL数据库的本体。很多时候谈到MySQL指的也是MySQL服务器。 - 服务器也是一台计算机(电脑),所以服务器也是由以下几部分构成的:①CPU(中央处理器)②存储器(内存和外存)③输入设备 ④输出设备
PS.①此处说的“内存”其实就是我们日常生活中所说的内存(也就是机身自带内存RAM);
②此处说的“外存”,如:硬盘(每个电脑中都会有,也是最重要的外存 eg.C盘、D盘)、U盘、光盘(俗称“光碟”)、软盘… - 内存和外存的区别:①内存存储空间小,外存存储空间大;②内存访问速度快,外存访问速度慢(大概相差3-4个数量级);③内存成本高(贵),内存成本低(便宜);④内存的数据容易丢失(断电就消失),外存的数据持久存在(断电也不消失;但是数据并不是永久存在,一般的硬盘存储时间也是有一定限制的:一般的机械硬盘,能够存储几年到十几年。如果中间偶尔会使用则保存时间相对会更久一点;如果长时间不使用就更容易丢失。如果是SSD固态硬盘,存储的时间会更短一些。时间久了容易读取不出来)->(编程中很多代码的写法都是受制于这些硬件设备的)
- 数据库也是要把数据存储在外存上的,因为:外存的数据可以“持久化”保存;况且数据库数据量较大,也是需要外存这样的存储空间。
(特例:redis就是少数的“内存数据库”,换来的好处就是“运行速度快) - MySQL是如何组织数据的?
一个数据库服务器上可以管理很多数据集合,把每一个数据集合叫做一个“数据库”;每个数据库中又可以理解为有很多个“数据表”;每一个数据表又可以分为很多行,每一行就称为“一条记录”;每一行又有很多列,每一列又称为是“一个字段”。
(关系型数据库都是如此;
相对来说,非关系型数据库的组织形式更加灵活:通常是按照“文档”或者“键值对”的方式来存储的)
THINK
- 主要是数据库的分类以及各类常用数据库
- 关系型数据库和非关系型数据库的区别
- 补充内容