数据库阶段总结

数据库基本概念和简单使用总结

  • 数据库的演变过程
  • 软件开发架构
  • 数据库概念
  • 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客服端,无需启动服务端,(需要进行环境变量设置)

  1. 开启一个新的DOS界面进入客户端

  2. 管理员模式

    # 管理员用户名:root   密码:没有密码
    # 完整命令
        MySQL -h 127.0.0.1 -P 3306 -uroot -p
    # 本地操作可简化
        mysql -uroot -p
  3. 退出客户端

    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)
);

 

posted @ 2021-09-05 18:34  微纯册  阅读(44)  评论(0编辑  收藏  举报