初识MySQL
储存数据
1 文件:
文件地址与数据格式杂乱(每个人都可以按自己的格式来存) 例如:
user:xxx:age:xxx
user.xxx.age.xxx
user-xxx-age-xxx
从而出现↓↓↓
2 软件开发目录规范:
规定了数据存储的位置,例如:
bin:启动文件
conf:配置文件
core:核心逻辑代码文件
db:数据文件
log:日志文件
lib:公共模块文件
...
(现在还是自己和自己玩,每个人的数据都自己储存--->单机游戏)
接着出现↓↓↓
3 数据库:
实现了数据共享,每个人的数据都储存在一个数据库里--->网络游戏
但是存在安全问题--->所有人的数据都放在一个数据库里,这个数据库没了,所有人的数据就都没了
所以出现了--->数据库集群 图解↓↓↓
(从原先一个数据库存储数据到现在每收到一份数据,就往其他所以数据库发送一份数据,这样一个数据库没了,还有其他数据库,从而避免了一个数据库挂了,所有数据陪葬的问题)
2 数据库分类
数据库本质就是一款cs架构软件(client--->客户端,server--->服务端)
数据库相关软件:
1 关系型数据库:(记)
固定表结构并且表与表之间可以建关系
常见软件:mysql --- postgresql---sqlite---db2---oracle---access---sql server
2 非关系型数据库:(记)
没有固定表结构并且储存数据以key value键值对的形式(类似字典)
常见软件:MongoDB---redis---memcache(逐渐淘汰)
3 MySQL简介
'''
MySQL本质上也是一款基于网络通信的应用程序
'''
任何基于网络通信的软件底层肯定都是socket
服务端
基于socket通信
本地文件操作
解析指令(SQL语句)
客户端
基于socket通信
发送指令
解析指令(SQL语句)
SQL语句的由来:
'''
mysql不单单支持mysql客户端操作,也支持其他编程语言来操作
python、Java、php、c++、go...
这些编程语言语法都不一样,mysql如何做到兼容↓↓↓
两种思路
1 自己精通多种语言,自由切换(不现实,且切换也需要耗费资源)
2 统一的思想(采用统一的一种语言--->sql语句)
'''
4 重要概念介绍
'''
库 ------> 文件夹
表 ------> 文件夹里的文件
记录 ------> 文件内一行行的数据
表头 ---> 表格的第一行数据
字段 ---> 字段名 + 字段类型
'''
5 下载与安装
1 版本问题
5.6(主流,逐渐向 5.7 过度)
5.7(主流)
8.0(最新版,一般不采用最新版本)
2 下载
官网 ---> 选择版本 ---> 下载压缩包 ---> 解压安装
6 系统服务配置
1 环境变量添加
我的电脑 ---> 属性 ---> 高级配置 ---> 环境变量 ---> path ---> 将bin目录路径添加进去
2 系统服务制作(全部在管理员身份下操作)
# 初始化(5.7之前需要先初始化) mysqld --initialize-insecure # 查看系统服务 services.msc # 制作成系统服务 mysqld --install # 启动服务 net start mysql # 停止服务 net stop mysql ps(windows操作系统上没有重启mysql服务的命令,如果需要重启服务,只能先stop再start)
7 用户登录
# 管理员初次登录无需密码 mysql -u用户名 -p密码 ---> 密码可以换行再输入,会将输入的密码隐藏成*****,如果在-p后直接输入密码,则是明文 # 游客模式 直接输入mysql 则进入游客模式,有很多限制 # 忘记密码 1 跳过授权表启动 mysqld --skip-grant-tables 2 无密码登录 mysql -uroot -p 3 修改用户密码(修改对应用户的密码) update mysql.user set password=password(新密码) where user="root" and host="localhost"; 4 退出正常启动
8 配置文件
mysql默认配置文件my-default.ini不能修改 自己创建并命名my.ini # \s 查看基本信息 my.ini文件内容 ---> 将字符编码改成utf8,Windows默认gbk [mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
9 基本SQL语句
-------------------------------- 库的增删改查 -----------------------------------------
# 增: create database 库名(文件夹名) # 改 alter database 库名(文件夹名) charset='gbk'; alter database ... # 查 show database; show create database db1(按创建的库名查) # 删 drop database 库名(文件夹名);
--------------------------------- 表的增删改查 --------------------------------------
注意:要先切换到需要操作的库里(文件夹里)--->use 库名(文件夹名) 查看当前所在的库(文件夹):select database(); # 增: create table 表名(文件名) (id int,name char(4)); # 创建出来的可能是多个文件,解耦管理 # 改 alter table 表名 modify name char(16); # 更改名字的最大字符长度 # 查 show tables; # 查所有表 show create table 表名; # 根据表名查看该表的详细信息 describe 表名; == desc 表名; # 根据表名查看该表的表结构 # 删 drop table 表名;
----------------------------------- 记录的增删改查 -------------------------------------
# 增 insert into 库名.表名 values(1,'xxx'); # 增加单条数据 insert into 库名.表名 values(2,'xxx'),(3,'xxx'),(4,'xxx') # 增加多条数据 # 改 update 库名.表名 set name='XXX' where id > 1; # 修改名字,条件放在where后 update 库名.表名 set name='XXX' where id = 2 or id = 3; # where后可以用逻辑运算符 # 查 select id,name from 库名.表名; # 库名可不指定,默认当前库 select * from 表名; # 根据表名查看该表下所有记录 # 删 delete from 库名.表名 where id > 3; # 根据where后的条件判断需要删除哪些记录(数据) delete from 库名.表名 where name='XXX'; delete from 库名.表名; # 删除该表中的所有记录(数据) # 总结: 库 == 表:show(查)、alter(改)、create(增)、drop(删) ps(表:查看当前所在库:select 库名()) (关键字后要带database/table 再+具体库名/表名) 记录:select(查)、update(改)、insert into(增)、delete(删)
总结
1 数据库发展史: bs/cs架构 文件存储(单机) ---> 存储在一个数据库上(不安全) ---> 数据库集群(联机) 2 数据库分类 2.1 关系型数据库 -固定的表结构,表与表之间可以简历关联 -常见软件:mysql、postgresql、oracl、sqlite、db2、sql server access 2.2 非关系型数据库 -没有固定的表结构,存储数据按照kv键值对的格式(类似字典) -常见软件:MongoDB、redis、memcache ''' 常见软件最好能记住默认端口号 -mysql -3306 -redis -6379 -MongoDB -27017 -Django -8000 -flask -5000 ''' 3 mysql简介 # ps:防呆思想 3.1 版本问题 -SQL语句的由来 -统一思想 3.2 下载与安装 4 环境变量及系统服务 4.1 先添加环境变量 4.2 命令 mysqld --install net start mysql net stop mysql mysqld --remove 5 用户登录及密码相关 mysql 游客模式 mysql -u用户名 -p密码 5.1 直接修改 mysqladmin -u用户名 -p原密码 password 新密码 5.2 忘记密码 ... 6 重要概念 -库 ---> 文件夹 -表 ---> 文件 -数据 ---> 文件内一行行数据 7 配置文件 my.ini ... 8 基本SQL语句 ...
愿君前程似锦,归来仍是少年