数据库阶段总结
数据库基本概念和简单使用总结
- 数据库的演变过程
- 软件开发架构
- 数据库概念
- SQL语句与NoSQL语句
- MySQL数据库的安装与基本介绍
- 修改密码与破解密码
- 字符编码与配置文件
- 基本SQL语句
- 存储引擎
- 创建表的完整语法
数据库的演变过程
1.文件的存储方式
类似于excel表等文本软件,安全性低,兼容性差
2.单机游戏的存储方式
该存储方式是将数据保留在本地,数据难分享给其他用户
3.网络游戏的存储方式
将数据存储在服务器中,用户数据可以实时交互,安全性高
软件开发架构
c/s结构
由客户端,服务端组成,
客户端相当于,客人要自带餐具去吃饭;服务端相当于,餐厅但不提供餐具
b/s架构
浏览器,服务器(端),浏览器:客户叫外卖;服务器:餐厅送外卖和餐具
数据库概念
数据库是一种c/s架构的软件
1.关系型数据库
# 有固定的结构,表与表之间通过外键建立关系
关系数据库软件:mysql,mariaDB,orcale,sql sever,postger sql,sqlite
2.非关系型数据库
# 没有固定的表结构,数据存储格式采用的是K:V键值对的形式 非关系型软件:redis、mongoDB、memcache
SQL语句与NoSQL语句
# SQL语句是用来操作关系型数据库的语言 # NoSQL语句是来操作非关系型数据库的语言
概念
# 针对关系型数据库 库 对应 文件夹 表 对应 文件夹里面的文件 数据 对应 文件内容
MySQL数据库的安装与基本介绍
MySQL的版本介绍
MySQL5.5 基本不用 MySQL5.6 使用广泛 MySQL5.7 逐步过渡 MySQL8.0 最新版
下载流程与安装
1.进入官网https://dev.mysql.com/,点击downloads
2.进入后下拉,点击MySQL community (GPI)Downloads
3.点击MySQL community server
4. 8.0版本为最新不推荐使用,点击archives寻找旧版本
5. 在框中选择版本和操作系统,选择与电脑位数相同的下载
6.找到文件夹解压到D盘,尽量解压到找的到的位置
系统服务制作
1.查看计算机内部所有的系统服务
鼠标移动到任务栏右键任务管理器查看服务即可
2.将MySQL服务器加到系统服务中(该命令执行前,需要先配置环境变量,否则无法直接安装)
# 一定要以管理者身份打开cmd 输入命令: mysqld --install
3.添加完成后第一次需要手动启动 找到MySQL服务右键点击启动
4.完成上述操作后,就可以在DOS界面直接启动MySQL客服端,无需启动服务端
MySQL的登录
完成系统制作后,就可以在DOS界面直接启动MySQL客服端,无需启动服务端,(需要进行环境变量设置)
-
开启一个新的DOS界面进入客户端
-
管理员模式
# 管理员用户名:root 密码:没有密码 # 完整命令 MySQL -h 127.0.0.1 -P 3306 -uroot -p # 本地操作可简化 mysql -uroot -p
-
退出客户端
exit/puit
移除之前环境
1.以管理员身份打开cmd窗口
2.将MySQL服务关闭,输入命令 net stop mysql
3.移除mysql服务端,输入命令 mysql --remove
4.删除mysql相关环境变量
5.删除mysql删光文件
修改密码与破解密码
方法1:
# 必须在mysql用户登录状态下执行 mysql -u用户名 -p密码 # 此处命令用于修改当前用户的密码 set password = password('修改密码');
方法2:
# 不用登录的情况下某用户的密码修改 mysqladmin -u用户名 -p原密码 password 新密码 # 如果没有密码 mysqladmin -u用户名 password 密码 # 将密码设置为空 mysqladmin -uroot -p密码 password
如果忘了密码如何解决???(仅限于本地,不要再公司或其他公用场合用)
1.以管理员身份打开cmd窗口(否者无法停止mysql服务)
2.先停止mysql服务
net stop mysql
3.取消验证授权表,达到不需要密码就可以登录的效果
mysqld --skip-grant-tables
4.开新的cmd窗口,以管理员身份登录
mysql -uroot -p
5.修改忘记用户的密码
# 修改对应用户的密码 update mysql.user set password= password(1111)where user="root" and host ="loaclhost";
6.重启服务(以管理员身份模式重新开个cmd窗口)
cirl + c 停止服务 或则 net stop mysql
net start mysql
字符编码与配置文件
服务端和客户端的字符编码不一样,这有可能在日常的实践中造成乱码,以下时解决该问题的一种方法。
1.找到mysql根目录下的my-default.ini文件
2.my-default.ini不要直接修改,最好复制一个在做修改,并重命名必须为为my.ini
3.清空my.ini文件内容,讲以下内容拷贝进文件
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8
# 修改完配置配置文件一定要重启服务端
基本SQL语句
针对库
show databases; # 查看数据库 create database name; # 创建数据库 show create database 数据库名; # 查看指定数据库 alter database 名 charset=‘gdk’; # 修改数据编码 drop database 名 # 删除对应数据库
针对表
create table 表名(名 数据类型)# 创建表 show create table 名 # 查看表结构 desc 表名; # 查看表结构 alter table 名 modify name varchar(16); # 修改字段类型 drop table t1; # 删除指定的表
针对数据
select * from 表名; # 查看指定表的所有数据 insert into t1 values(id,字符内容),(id,字符内容); # 插入多个数据 select id,name form 表名; # 查看指定字段对应的数据 update 表名 set name='字符内容' where id =id号; # 将对应id的数据的name字段改为'字符内容' delete from 表名 where id=id号; # 删除符合条件的数据 delete from 表名; # 删除表中所有的记录
存储引擎
MySQL内部针对数据的存储有不同的方式
数据库的存储方式就是存储引擎
主要存储引擎
innoDB,myisam,blackhole,memory
存储引擎表文件
语法:
create table 表名(id int,内容 类型)engine=innoDB;
不同存储引擎的文件数目也不同
innoDB:
.frm 表结构
.idb 表数据、索引(类似于目录)
myisam:
.frm 表结构
.myd 表数据
.myi 表索引
# 重启之后数据为空
memory:
.frm 表结构
# 无论输入什么数据,都为空
blackhole:
.frm 表结构
创建表的完整语法
语法: create table 表名( 字段名 数据类型(宽度)约束条件, 字段名 数据类型(宽度)约束条件 ); ''' 1.字段名和数据类型是必须的,宽度和约束条件可选 2.约束条件可选,且一个字段可以有多个约束条件 3.最后结尾字段语句不能有逗号 '''
数据类型
整形
tinyint smallint int bigint ''' 不同整形存储的数字范围不同 其他数据类型也默认自带正负号 '''
浮点型
float double decimal ''' 不同的浮点型小数范围不同和精度不一样 精确度:float< double < decimal '''
字符型
char(x): 最多可以存储x个字符,在严格模式下,操过了报错,没有超过时默认空格填充空余 优点:存取速度快 缺点:浪费存储空间 varchar(x): 最多可以存储x个字符,超过报错,没有超过时不用空格填充空余 优点:节省存储空间 缺点:存取速度慢 # varchar在存储数据时,会空出一字节计算字符长度没所以慢 ''' 结论:两者各有相应的使用场合,要取长补短 ''' # 默认情况下char会自动填充存储并在查询的时候自动去除空格 char_length()
时间类型
date 年以日 time 时分秒 Datatime 年月日时分秒 year 年 # 针对时间的数据一般为自动获取
枚举与集合类型
enum 多选一 set 多选多(包含多选一) eg: create table en1( id int, name varchar(16), gender enum('male','female','other'), hobby set('basketball','football','doublecolorball') );
宽度说明
int(x) char(x) ''' 针对数据类型 宽度并不是用来限制存储长度而是用来表示展示长度 以后在定义数字,不需手动添加宽度 '''
约束条件
unsigned #无符号 语法: create table 表名 ( 元素名 数据类型 unsigned ); zerofilll # 0填充 语法: create table 表名 ( 元素名 数据类型 zerofill ); default # 默认值 语法: create table 表名( id int, 元素名 字符类型(16) default '字符内容' ); not null # 不能为空(使用频率高) 语法: create table 表名( id int, 字符名 字符类型 not null ); # unique 唯一 '''单列唯一''' 语法: create table 表名( id int, 字符名 字符类型 unique ); '''多列唯一''' create table 表名( id int, 元素1 int, 元素2 int, unique(元素1,元素2) );