Python攻城师的成长————MYSQL数据库基础

Python攻城师的成长————MYSQL数据库基础,第1张

今日学习目标
  • 开始接触数据库,先了解部分简单 *** 作。

文章目录
  • 今日学习目标
  • 学习内容
  • 一、数据演变史
    • 1.单独的文本文件
    • 2.软件开发目录规范
    • 3.数据库应用
  • 二、数据库应用发展史
    • 1.单机游戏阶段
    • 2.多机游戏阶段
  • 三、数据库本质
  • 四、数据库分类
  • 五、SQL与NoSQL
  • 六、MySQL简介
    • 1.版本问题
    • 2.下载使用
    • 3.目录结构
  • 七、基本使用
  • 八、系统服务
    • 问题一:
    • 问题二:
  • 九、修改密码
  • 十、数据库 *** 作简介
    • *** 作库的基本SQL语句
    • *** 作表的基本SQL语句
    • *** 作记录的基本SQL语句


学习内容
  • 数据演变史
  • 存取发展史
  • 数据库本质
  • 数据库分类
  • SQL与NoSQL
  • MySQL下载与安装
  • 系统服务制作
  • 重要概念
  • 基本SQL语句

一、数据演变史 1.单独的文本文件

最基础的数据存储方式,但没有统一的规范,导致它的存放位置和数据格式有所不同,不利于以后不同的人去维护。
缺点

  • 没有固定的存放位置:
  • 没有固定的数据格式

总结
程序彼此无法兼容 没有统一的标准

2.软件开发目录规范

解决了部分问题,还没出现相对完善的数据存储方式。

部分完善:
按照文件功能的不同规定了相应的位置
缺点:
文件查找变得统一 但是没有解决格式问题(核心问题)

3.数据库应用

较为完善的处理了数据储存的两大问题做到了真正的将数据处理部分统一了起来。

解决了存放位置和数据格式问题
二、数据库应用发展史 1.单机游戏阶段

当处理完数据储存方式后,只是解决了各种项目上的问题,暂时只能实现数据的区域性共享,无法向互联网上进行交互。
问题
数据各自保存在各自的计算机上 无法实现远程共享

2.多机游戏阶段

利用服务器解决了数据交互共享,使得开发的项目可以去共更多人使用。
实现:
数据统一基于网络保存到某个固定的服务器上 实现数据共享

问题:
如果所有的数据全部存储到一台远程服务器上,那么数据的安全性降低 服务器的压力上升

集群:
所以增加远程服务器的数量 数据同步保存 任务均匀分担,具有相同功能的多个服务器组合到一起 就可以称之为是集群

三、数据库本质
  • 数据库在微观层面上来说
    运行在计算机上专门处理数据的进程(程序)
  • 数据库在宏观层面上来说
    提供给 *** 作者一个简单快捷的 *** 作进程的软件

总结

  • 我们平时在说数据库的时候大部分指的是 *** 作数据库的应用软件
  • 数据库软件的本质其实也是一款CS架构的软件
    既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件
    在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件
四、数据库分类

目前市面上有很多数据库软件 大致可以分为两类

  1. 关系型数据库
    特点:

     1. 有固定的表结构(最主要的特征)
     	eg:有固定字段的excel表格
       	id	name	gender
       	
    2. 并且表与表之间可以建立代码层面的关系
     eg:用户表与房屋表
       	用户买房 那么用户数据和房屋数据就应该有关系
    

    常见数据库名称:

    MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server

    MySQL:关系型数据库的代表 开源免费 使用频率极高
    Oracle:安全性极高 但是使用和维护收费 使用成本高
    PostgreSQL:支持二次开发(自己嫁接、扩展功能)
    MariaDB:与MySQL是同一个作者 开发的初衷是作为MySQL的替代品
    sqlite:小型数据库 携带方便但功能较少 主要用于本地测试使用
    sql server:老牌数据库软件 目前主流不用
    
  2. 非关系型数据库
    特点:

     1. 没有固定的表结构 数据存取采用K:V键值对的形式(最主要的特征)
     	{'name':'jason'} {'username':'jason','pwd':123}
     	
    2. 并且表与表之间无法建立代码层面的关系
    

    常见数据库名称:

    Redis、MongoDB、Memcache

    Redis:目前最火的非关系型数据库 数据类型丰富 功能强大
    MongoDB:最像关系型数据库的非关系型数据库 主要用于爬虫和大数据
    Memcache:被redis取代了!!!
    
五、SQL与NoSQL

引入:
数据库服务端支持很多客户端来链接使用,这就使得数据库自带的客户端可能是 python代码编写的也可能是 java代码编写的 …
那如何让服务端兼容诸多客户端 实现正常交互呢?

解决方式:

方式1:让服务端识别并自动切换对应语言

方式2:统一沟通标准

在中和了各种条件下,还是感觉方式二更加方便简单合理

结果:

产生了统一的数据库语言:SQL语句与NoSQL语句

  • SQL语句
    与关系型数据库交互的语言
  • NoSQL语句
    与非关系型数据库交互的语言

总结:

  • SQL有时候用来标识关系型数据库 有时候表示SQL语句
  • NoSQL有时候用来标识非关系型数据库 有时候表示NoSQL语句
六、MySQL简介 1.版本问题
5.6X:使用最为广泛的稳定版本
5.7X:目前正在逐步过渡使用的版本
8.0X:最新版本 暂时不投入正常生产环境使用(其实很好用!!!)

补充:

如果仅是小白最初阶段的学习,那么版本不同是不会有太大的问题出现,因为SQL语句是一样的只不过底层有变化 目前不用考虑。

2.下载使用
官网:https://www.mysql.com/

仅提供官方网站,详细的安装与配置详细教程网上都会有。

3.目录结构

整体MYSQL下载下来后解压出来会有以下文件(部分重要文件):

bin文件夹
	mysqld.exe		服务端
	mysql.exe			客户端
'''学习阶段服务端在本地启动即可'''

data文件夹
	存放数据
	
my-default.ini文件
	默认配置文件
	
README文件
	说明书
七、基本使用

必须要先启动服务端 再启动客户端链接

以D:\mysql-5.6.44-winx64为例

  1. 以管理员身份运行cmd
    切换到bin路径下
    cd mysql-5.6.44-winx64\bin
  2. 启动服务端
    mysqld
    注意:维持cmd窗口不要关闭 重新打开一个新的cmd窗口
  3. 启动客户端链接服务端
    先切换到bin路径下
    cd mysql-5.6.44-winx64\bin
    然后直接输入mysql即可登录服务端
    注意:不带用户名和密码 是游客模式(只能体验基本功能)

提示:
启动服务端的时候可能会报错
解决策略:
拷贝报错信息(mysql启动报错’错误代码)网上搜索,基本都会有解决方式

八、系统服务

引入:
取消繁杂的命令启动,利用计算机的系统服务处理。

问题:

  1. 我们不想切换路径 直接输入命令
  2. 我们不想自己启动服务端 设置成开机自启动(消耗的资源很少 不要担心)
问题一:

针对第一个点的解决措施就是添加环境变量

将D:\mysql-5.6.44-winx64\bin添加到系统环境变量
问题二:

针对第二个点的解决措施就是编写固定的指令即可

  1. 先确保之前测试的服务端关闭(直接点击关闭即可)

  2. 重新以管理员的身份打开cmd窗口

    mysqld --install
    
  3. 初次启动需要人为干预

    net start mysql
    
  4. 关闭所有的cmd 随意打开一个cmd窗口
    输入mysql即可链接到服务端

补充:

如果想要移除系统服务

  1. 先停止服务端

     net stop mysql  管理员身份运行cmd
    
  2. 移除系统服务

     mysqld --remove
    
九、修改密码
  1. 直接输入mysql登录

    默认是游客模式 没有太多 *** 作的权限

  2. 使用用户名和密码的方式登录

    学习阶段不用考虑用户管理 直接使用root用户(管理员账号)

    mysql -u用户名 -p密码
    

    管理员账号登录(第一次登录 没有密码 直接回车即可)

    mysql -uroot -p 直接回车
    

    提示输入密码

  3. 修改管理员密码

    • 方式1:在cmd窗口下直接修改(不要登录进去)

      mysqladmin -u用户名 -p原密码 password 新密码
      

      第一次无密码修改 -p后面不写即可

      mysqladmin -uroot -padmin123 password jason123
      
    • 方式2:登录状态下修改当前用户密码(先登录)

      set password=PASSWORD('新密码');  # 最新版不支持
      

补充:
如何区分当前是否是游客模式
可以执行show database;

  • 结果如果是两条 表示是游客
  • 结果如果是四条及以上 表示是用户
十、数据库 *** 作简介
  1. SQL语句使用分号作为结束符

  2. 重要概念
    库 <==> 文件夹

    表 <==> 文件

    记录 <==> 文件中一行行数据

show databases; 查看所有的库名称
类似于查看data文件夹内文件夹的名称

*** 作库的基本SQL语句
  • 查询

    show databases;  # 查看所有的库名称
    show create database 库名;  # 指定查看某个库的信息
    
  • 添加

    create database 库名;
    
  • 修改

    alter database 库名 charset='gbk';  # 修改字符编码
    
  • 删除

    drop database 库名;
    
*** 作表的基本SQL语句
  • 补充
    表是存放于库下面的 所以 *** 作表之前 应该先确定库
    如何查看当前在哪个库下

    select database();
    

    结果如果是NULL表示当前没有切换到任何库下
    如何切换到指定库下

    use 库名;
    

强调:
我们在 *** 作库、表、记录的时候 MySQL默认自带的都不要动

*** 作表前的命令:

create database 库名;
use 库名;
  • 查询

    show tables;  # 查看当前库下所有的表名称
    show crate table 表名;  # 指定查看某个表的信息
    describe 表名;  # 指定查看表的字段信息  简写 desc 表名;
    
  • 添加

    create table 表名(
      				字段名称1 字段类型1,
      				字段名称2 字段类型2
    );
    
  • 修改

    alter table 表名 rename 新表名;  # 修改表名
    
  • 删除

    drop table 表名;
    
*** 作记录的基本SQL语句
  • 补充
    要想 *** 作记录 肯定得先有库和表

  • 查询

    select * from 表名;  # 查看表里面所有的数据
    select * from 库名.表名;  # 查看指定库下面的指定表里面的所有数据
    

    有些表里面的字段太多 展示的时候会错乱 可以考虑逐行展示

    select * from 库名.表名;
    
    select Host,User from mysql.user  # 查看指定字段
    
  • 添加

    insert into 表名 values(值1,值2);  # 单条数据
    insert into 表名 values(值1,值2),(值3,值4);  # 多条数据
    
  • 修改

    update 表名 set 字段=新值 where 筛选条件;
    
  • 删除

    delete from 表名 where 筛选条件;
    

    如果不加筛选条件就是删除所有的数据


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/793251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存