统一了存取位置,也统一了数据格式(完全统一)
软件应用分类 | 描述 |
---|---|
单机游戏 | 不同计算机上的相同程序,数据无法共享,数据库服务全部在本地完成 |
网络游戏 | 不同计算机上的相同程序,数据可以共享,数据库服务单独在网络架设(远程数据库服务) |
远程数据库服务/数据库集群:
让多台服务器运行相同的数据库服务
数据库三字在不同角度下描述的意思不一样
数据库本质:指的是专用于操作数据的进程(运行在内存中的代码)
数据库本质:指的是拥有操作界面的应用程序(用于操作进程的界面)
不做特殊说明下,数据库其实都是在指数据库软件,我们也称数据库软件本质是一款cs架构的应用程序(所有程序员理论上都可以编写,市面上已经有很多的数据库软件)
id name password
关系数据库存取数据可以看成是表格
只要获取到用户表的一条数据,就可以获取到与之相关的其他表数据
MySQL、PostgreSQL、MariaDB、Oracle、sqlite、db2、SQL Server
关系数据库 | 功能 |
---|---|
MySQL | 开源,使用最为广泛,数据库学习必学 |
PostgreSQL | 开源,支持二次开发 |
MariaDB | 与MySQL是同一个作者,用法也及其相似 |
Oracle | 收费,安全性极高,主要用于银行及各大重要机关 |
sqlite | 小型数据库,主要用于本地测试(Django框架自带该数据库) |
是以k:v键值对的形式组织的
{'name': 'jason'} {'username': 'kevin', 'pwd': 123}
Redis、MongoDB、memcache
非关系数据库 | 功能 |
---|---|
Redis | 目前最火,使用频率最高的缓存型数据库 |
MongoDB | 稳定性数据库,最像关系型的非关系型数据库,主要用于爬虫、大数据 |
memcache | 已经被Redis淘汰 |
虽然数据库软件很多,但是底层操作几乎一致,学了MySQL基本就可以快速上手所有的关系型数据库甚至非关系型数据库
虽然版本有区别,但是操作上几乎没区别,主要体现在底层运作
官网链接:https://www.mysql.com/
将下载好的安装包解压到除C盘以外的容易找的路径下,下载的压缩包里含有服务端和客户端,支持本地操作
文件夹 | 介绍 |
---|---|
bin文件夹 | 服务端:mysqld.exe 客户端:mysql.exe |
data文件夹 | 存取数据 |
my-default.ini | 默认配置文件 |
注意:cmd窗口就是服务端,不要关闭
可能会报错,拷贝关键信息百度解决
注意:直接回车会以游客模式进入,功能很少
mysql -u用户名 -p密码 # mysql默认管理员账号 用户名是root 密码是空 mysql -uroot -p
exit 或 quit
添加环境变量:
以管理员身份打开cmd窗口
执行系统服务命令:mysqld --install
启动服务端
方式1:任务管理器→服务→MySQL右键直接点击启动
方式2:命令启动
net start mysql
相关命令:
services.msc # 查看系统服务命令 net start mysql # 启动mysql服务端 net stop mysql # 关闭mysql服务端 # 移除系统服务 # 1.先确保服务已经关闭 # 2.执行移除命令 mysqld --remove
mysqladmin命令
通用方式:直接在cmd中写
mysqladmin -u用户名 -p原密码 password 新密码 # 第一次修改: mysqladmin -u用户名 -p password 123 # 第二次修改: mysqladmin -u用户名 -p123 password 321
偏门方式(有些版本无法使用):需要先登录
set password=PASSWORD(新密码);
直接重装/拷贝对应的文件
先关闭服务端,然后以不需要校验用户身份的方式启动,再修改,最后再安装正常方式启动
# 1.关闭服务端 net stop mysql # 2.mysql启动参数 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
数据库的服务端支持各种语言充当客户端:MySQL客户端、python代码编写的客户端、java代码编写的客户端
为了能够兼容所有类型的客户端,有两种策略:
SQL语句/NoSQL语句 | 描述 |
---|---|
SQL语句 | 操作关系型数据库的语法 |
NoSQL语句 | 操作非关系型数据库的语法 |
简单理解,不完全准确
名词 | 简单概念 |
---|---|
库 | 文件夹 |
表 | 文件夹里的文件 |
记录 | 文件里一行行的数据 |
查看库、表、记录的SQL语句
show databases; # 查看所有的数据库 show tables; # 查看所有的表 select * from mysql.user; # 查看user表里的所有记录
select database(); # 如果没有切换到指定的库,那么默认是NULL use 库名;
create database 库名;
show databases; show create database 库名;
alter database 库名 charset='gbk';
drop database 库名;
create table 表名(字段名 字段类型,字段名 字段类型,字段名 字段类型);
show tables; show create table 表名; describe 表名; desc 表名;
alter table 旧表名 rename 新表名; # 改表名
drop table 表名;
操作记录,肯定得先有库和表
insert into 表名 values(数据,数据); insert into 表名 values(数据,数据),(数据,数据),(数据,数据);
如果表中字段较多出现了错乱 可以结尾写\G
select * from 表名; # *表示查看所有字段 select 字段1,字段2 from 表名;
update 表名 set 字段名=新数据 where 筛选条件;
delete from 表名; # 删除表中所有的数据 delete from 表名 where 筛选条件 # 按照条件删除数据