【1.0】数据库知识点小结数据库初识

发布时间 2023-06-30 20:52:04作者: Chimengmeng

【1.0】数据库知识点小结数据库初识

【一】存储数据的演变过程

【1】文件存储

  • 随意地存放到一个文件中、数据格式也是千差万别的
  • 完全取决于个人

【2】软件开发目录规范

(1)概要

  • 限制了存储数据的具体位置
    • 建立专门的文件夹存储数据

(2)软件开发目录规范

  • bin

    • main.py
  • conf

    • settings.py
  • lib

    • common.py
  • core

    • src.py
  • interface

    • interface.py
  • db

    • moduls.py
    • db_hander.py
  • log

    • logs.log
  • README.md

假设上面是一个游戏

每一个人的游戏数据只会保存在本地

注册登录账号也只能在本地有效

(3)如何将单机变成联网

  • 建立数据库服务端
    • 将数据库保存部分统一到一个位置
    • 所有的数据操作都会经过这个总的数据库

【3】数据库的本质

  • 数据库其实就是一块基于网络通信的应用程序
  • 每个人都有开发一块数据库的能力

【4】数据库的介绍

关系型数据库

  • MySQL

  • Oracle

  • db2

  • access

  • sql server

非关系型数据库

  • Redis
  • MongoDB
  • memcache

关系型(存储数据)

  • 彼此之间有关联
  • 存储数据的表型形式通常以表格形式存储
    • 每个字段限制每个字段下的存储数据的格式

非关系型(缓存数据)

  • 存储数据通常是K:V形式存储数据

【二】MySQL之SQL语句的由来

  • 任何基于网络通信的应用程序底层用的都是scoket
    • 服务端
      • 基于socket通信
      • 收发消息
    • 客户端
      • 基于socket通信
      • 收发消息

MySQL不单单支持MySQL自己的客户端app还支持其他语言编程语言来充当客户端操作,如何解决?

  • 让服务端兼容所有语言(一人精通多国语言)
  • 采用统一的语言(SQL语句)

【三】什么是库/表/记录/表头/表单

库(Database):
	库是指在数据库管理系统中用于存储和组织数据的容器。
	它可以视为一个文件夹,用于存放相关的数据表。
	数据库中可以包含多个库,每个库可以包含多个表。

表(Table):
	表是数据库中的一个基本组成单位,用于存储和展示数据。
	表由行(记录)和列(字段)组成,每一行表示一个记录,每一列表示一个字段。
	表可以看作是一个二维数据结构,类似于电子表格。

记录(Record):
	记录也称作行,是表中的一个数据项或实体。
	每一行都代表了一个完整的数据记录,其中包含了各个字段的具体数值或信息。
	例如,在一个学生信息表中,每一行代表一个学生的具体信息。

表头(Header):
	表头是表中的第一行,用于描述每个列字段的含义或名称。
	表头通常包含了列的标签或标题,通过表头可以了解每个列字段所代表的意义,方便数据的理解和查询。

表单(Form):
	表单是一种用来收集和展示数据的界面形式,常见于数据输入和显示的场景中。表单通常包含了各种输入字段(例如文本框、下拉列表等)和相关的操作按钮,用户可以通过表单进行数据的录入、编辑和提交等操作。
	表单的数据可以被存储到相应的表中,用于后续的数据处理和分析。
  • 库:
    • 相当于我们的文件夹
  • 表:
    • 相当于我们的文件
  • 记录:
    • 相当于我们一行行的数据
  • 表头:
    • 表格的第一行字段
  • 表单:
    • 表头对应的每一条数据

【四】MySQL的安装

【1】各种服务器的端口

MySQL :3306
Redis : 6379
MongoDB : 27017
Django : 8000
flask : 5000

见博客:

MySQL有很多版本,但是用的比较多的还是 5.6 版本

"""
服务端:
	mysqld.exe
	
客户端:
	mysql.exe
"""

配置 MySQL 尽量使用管理员身份的 CMD 终端

【2】启动

  • MySQL所在的bin目录下

    mysqld
    
  • 本地客户端连接服务端

    • IP PORT USER PWD
    mysql -h 127.0.0.1 -P 3306 -uroot -p
    

【3】制作成系统服务

每次启动都需要分别开客户端和服务端

制作成系统服务,保证服务一直运行

# 注册系统服务
mysqld --install
# 移除系统服务
mysqld --remove

【4】设置MySQL密码

  • 终端下运行
mysqladmin -uroot -p (原密码) password (新密码)
mysqladmin -uroot -p password 1314521

【5】跳过授权表重置密码

将登录验证装饰器的校验功能取消

  • 关闭MySQL服务

    • 命令函运行终端命令
    mysqld -skip-grant-tables
    
  • 直接能以无密码的方式链接

    mysql -uroot -p
    
  • 修改当前用户的密码

    真正存储用户表的密码字段,存储的肯定是密文

    只有用户自己知道明文是什么

    密码比对只能比对密文

    update mysql.user set password=password(你的密码) where user="root" and host="localhost"
    
    alter user 'root'@'localhost' identified by '1314521';
    
  • 立刻将修改的数据刷到硬盘

flush privileges;
  • 关闭当前服务,以正常方式登入数据库

【6】修改配置文件

.ini一般都是配置文件

在启动程序的时候都会先加载配置文件

(1)统一编码

  • 找到MySQL默认配置文件

    my-default.ini
    
  • 新建 my.ini 文件

    [mysqld]
    character-set-server=utf8
    collation-server=utf8_gengral_ci
    [client]
    default-character-set=utf8
    [mysql]
    # 不需要每次输入验证码即可登陆
    user="root"
    password=你的密码
    default-character-set=utf8
    

【五】MySQL语句的初识

MySQL中的SQL语句是以分好作为结束的标志

如果没有分好,则是一条语句

【1】查看所有的库名

show databases;

【2】连接服务端命令

mysql -uroot -p

【3】命令不对,强制结束命令

  • Ctrl + c

【4】退出客户端

退出命令加不加分号都会执行

exit;
quit;

【5】只输入MySQL也能链接

但是不是管理员身份,权限不足,无法查看更多的内容

【六】补充命令

【1】查看当前进程

tasklist
tasklist |findstr mysqld

【2】杀死进程

(PID号):8504 ---- 自己的进程号

taskkill /F /PID 

【七】基本SQL语句

大部分程序的业务逻辑其实都是增删改查

【1】针对库的增删改查(文件夹)

(1)创建库

create databases db1;
# 设置库的默认编码
create databases db1 charset='gbk';

(2)查看库

# 查看所有库
show databases;
# 查看指定库
show create database db1;

(3)改库

alter database db2 charset='utf8';

(4)删库

drop database db2;

【2】针对表的增删改查(文件)

在操作表的时候要指定所在的库

(1)查看当前所在库的名字

select database();

(2)切换到指定库

use database db1;

(3)创建表

创建表指定字段

create table t1(id int,name char(4));

(4)查看当前库下面的所有表

# 查看所有的表
show tables;
# 查看指定的表
show create table t1;
# 查看当前表的详细信息
describe t1;
# 查看当前表的详细信息(简写)
desc t1;

(5)修改表

alter table t1 modify name char(16);

(6)删除表

drop table t1;

(7)以绝对路径的形式操作不同的库

create table db2.t1(id int);

【3】针对数据的增删改查(一行行数据)

操作数据要有明确的数据库下的数据表

(1)数据的增加

# 插入单条数据
insert into t1 values(1,'dream');
# 插入多条数据
insert into t1 values(1,'dream')(2,'chimeng');

(2)数据的查看

数据量大的时候不建议使用

数据会冲击服务器导致瘫痪

# 查看全部数据
select * from t1
# 根据指定字段查看数据
select name from t1;

(3)数据的更改

# 以限定调价修改指定字段的数据
update t1 set name='mengmeng' where id > 1;

(4)删除数据

# 删除指定字段的数据
delete from t1 where id > 1;
# 删除指定字段的数据
delete from t1 where name='dream';
# 清空当前表的所有数据
delete from t1;