今日内容概要
- 数据存取演变史
- 数据库软件应用史
- 数据库的本质
- 数据库的分类
- MySQL数据库
- 基本使用
- 系统服务制作
- MyAQL之密码相关操作
- SQL与NoSQL
- 数据库重要概念
- 基本SQL语句
数据存储演变史
1.文本文件
缺点:
(1)文件路径不一致:
C:\a.txt
D:\aaa\b.txt
E:\ccc.txt
(2)数据格式不一致:
jason|123
tony$123
kevin@123
上述两种格式的不同导致了程序的兼容性比较差。
2.软件开发目录规范
(1)规定了数据文件的大致存储位置:db文件夹
(2)针对数据格式还是没有完全统一:比如统一json文件但是内部键值对不同。
3.数据库服务
统一存储位置;也统一了数据格式(完全统一)
数据库软件应用史
1.单级游戏
特点:数据库服务全部在本地完成
不同计算机上的相同程序,缺点是数据无法做到共享;
2.网络游戏
特点:数据库服务单独在网络架设(远程数据库服务)
不同计算机上的相同程序,数据可以共享;
3.数据库集群
需要考虑到的问题:
数据安全性问题;
服务器负载问题。
解决办法:
让多台服务器运行相同的数据库服务。
数据库的本质
1.不同角度描述数据库
(1)站在底层原理的角度
数据库指的是专用用于操作数据的进程;
eg:运行在内存中的代码。
(2)站在现实应用的角度
数据库指的是拥有操作界面的应用程序
eg:用于操作进程的界面。
2.数据库本质描述
在非特殊情况下提数据库就是在指数据库软件;
我们也称数据库软件本质是一款cs架构的应用程序;
所有的程序员理论上都可以编写的。
数据库的分类(理论重点)
1.关系型数据库
(1)数据的组织方式有明确的表结构:
eg表里面有固定的字段:id;name;password
关系型数据库存取数据的方式可以看成是表格。
(2)表与表之间可以建立数据库层面的关系:
eg用户表中某条数据与房屋表某条数据有绑定:用户表;房屋表
只要获取到用户表的一条数据,就可以获取到与之相关的其他表数据。
(3)关系型数据库软件:
MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、sql server
MySQL:开源,使用最为广泛,数据库学习阶段必须要学的。
PostgreSQL:开源,支持二次开发(支持在原基础上更改功能)。
MariaDB:开源,与MySQL是同一个作者,用法也极其相似。
Oracle:收费,但是安全性极高,主要用与银行及各大重要机关。
sqlite:小型数据库,主要用于本地测试(django框架自带该数据库)
2.非关系型数据库
(1)数据的组织形式没有明确的表结构,是以k:v键值对的形式组织的,并且没有固定键值对。
eg:第一次存:{‘name’:‘jason’}
那么第二次存可以换成{‘username’:‘kevin’,‘pwd’:123}
(2)数据之间无法直接建立数据库层面的关系;
但是可以间接建立(例如用代码实现)。
(3)非关系型数据库软件:
redis、mongoDB、memcache
redis:目前最火的软件,使用频率最高的缓存型数据库。
mongoDB:稳定型数据库,最像关系型的非关系型数据库,主要用于爬虫以及大数据。
memcache:已经被redis淘汰。
MySQL简介
前戏:
虽然数据库很多,但是其底层操作几乎一致,学会一个其他的都可以快速上手。
学了MySQL基本就可以快速上手所有的关系型数据库甚至非关系型数据库。
1.MySQL版本问题
虽然在版本上又区别,但是在操作上几乎没有区别,主要体现在底层运作。
5.6X:前几年使用频率最高的版本
5.7X:最近尝试迁移的版本(频率+)
8.0X:最新版 功能很强大 但是线上环境几乎不用(本地自己用非常好用)
2.下载与安装
(1)访问官网:
https://www.mysql.com/
(2)点击DOWNLOADS
(3)点击GPL
(4)点击community server
(5)点击archives
(6)点击download
3.解压安装
上述方式下载的压缩包里含有服务端和客户端,支持本地操作。
4.主要文件介绍
(1)bin文件夹
mysqld.exe服务端
mysql.exe客户端
(2)data文件夹
存取数据
(3)my-default.ini
默认配置文件
基本使用
1.先启动服务端
可能会报错:拷贝关键信息去百度
2.查找mysqld文件位置
mysqld
cmd窗口就是服务端,一定不要关闭!!!
3.再次开启新的cmd窗口
mysql
直接回车会以游客模式进入,功能很少。
4.用户名密码登录
mysql -u用户名 -p密码
mysql默认管理员账号,用户名是root ,密码是空。
5.退出
exit
quit
系统服务制作
1.如何解决每次都需要切换路径查找文件的缺陷:
添加环境变量:
将D:\mysql-5.6.44-winx64\bin(mysql下bin文件路径)添加到环境变量path中。
2.将mysql服务端制作成系统服务(随着计算机的开启而启动,关闭而结束)
(1)以管理员身份打开cmd窗口
(2)执行系统服务命令:mysqld --install(3)启动服务端(两种方式)
方式一:右键直接点启动
方式二:命令启动: net start mysql
(4)服务端配置完成
3.补充命令
(1)查看系统服务的命令:services.msc
(2)关闭mysql服务端:net stop mysql
(3)移除系统服务(首先确保服务已经关闭,其次执行移除命令):mysqld --remove
MyAQL之密码相关操作
1.修改密码
方式一(通用的修改方式):
mysqladmin命令:
mysqladmin -u用户名 -p原密码 password 新密码
第一次修改密码:
mysqladmin -uroot -p password 123
第二次修改密码:
mysqladmin -uroot -p123 password 000000
方式二(偏门方式):
需要先登录,并且有些版本无法使用!!!
命令:set password=PASSWORD(新密码);
2.忘记密码
方式一:
直接重装MySQL
方式二:
拷贝对应文件
先关闭服务端,然后以不需要校验用户身份的方式启动。再修改,最后再安装正常方式启动。
1.net stop mysql
2.mysqld --skip-grant-tables
3.mysql -uroot -p
4.update mysql.user set password=password(123) where Host=‘localhost’ and User=‘root’;
5.net stop mysql
6.net start mysql
SQL与NoSQL
1.数据库的服务端支持各种语言充当客户端
eg:以MySQL服务端为例:
MySQL客户端、python代码编写的客户端、java代码编写的客户端
为了能够兼容所有类型的客户端,有两种策略:
(1)服务端兼容
不太合理,消耗数据库服务端资源!!!
(2)制定统一标准
SQL语句;NoSQL语句
2.SQL与NoSQL
SQL语句的意思是操作关系型数据库的语法
NoSQL语句的意思操作非关系型数据库的语法
需要强调:SQL有时候也用来表示关系型数据库,NoSQL也用来表示非关系型数据库.
数据库重要概念
1.一些概念
库————>文件夹
表————>文件夹里面的文件
记录————>文件里一行行的数据
一些命令:
show databases; 查看所有的数据库
show tables; 查看所有的表
select * from mysql.user; 查看user表里面所有的记录
2.补充
(1)SQL语句结束符是分号
;
(2)取消SQL语句的执行
\c
基本SQL语句
1.针对库的基本SQL语句
(1)增creat database 库名;
(2)查
show databases; show creat database 库名;
(3)改
# 改编码(采用gbk编码) alter database 库名 charset='gbk';
(4)删
drop database 库名;
2.针对表的基本SQL语句
前提条件:首先了解自己当前在哪个库里面操作表!!!
命令一(查看当前所在的库名):select database();
如果没有切换指定的库 那么默认是NULL,如图所示.
命令二(切换库名):use 库名;
(1)增create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型);
(2)查
show tables; show create table 表名; describe 表名; desc 表名;
(3)改
# 改表名 alter table 旧表名 rename 新表名;
(4)删
drop table 表名;
3.针对记录的基本SQL语句
前提条件:既然想操作记录,那么肯定的先有库和表!!!
(1)增insert into 表名 values(数据,数据); insert into 表名 values(数据,数据),(数据,数据),(数据,数据);
(2)查
ps:如果表中字段较多出现了错乱 可以结尾写\G # *表示查看所有字段 select * from 表名; select 字段1,字段2 from 表名;
(3)改
update 表名 set 字段名=新数据 where 筛选条件;
(4)删
delete from 表名; # 删除表中所有的数据 delete from 表名 where 筛选条件 # 按照条件删除数据