• Python正课95 —— 数据库 入门


    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12807067.html

    一:存储数据的演变过程

    随意地存到一个文件中、数据格式也是千差万别的,完全取决于我们自己

    # 小李
    jason | 123 | NB
    
    # 小王
    egon - 123 - DSB
    
    # 小红
    tank ~ 123 ~ hecha
    

    软件开发目录规范

    (限制了存储数据的具体位置)

    - api   存放接口文件,接口主要用于为业务逻辑提供数据操作
    
    - bin   整个项目的启动文件放置在这个文件夹中
    
    - conf  整个项目的配置文件放置在这个文件夹
    
    - core  整个项目的核心文件
    
    - db    用于存放数据文件与操作数据的代码文件
        
    - interface   用于存放用户接口
    
    - lib   项目的第三方包,共享的一些库
    
    - log	用于存放项目的日志文件
    
    - README.TXT    整个项目的说明文件,项目需求和大致流程,相当于产品说明书
    

    假设基于上述是一个单机游戏

    那么每个人的游戏记录只会在自己的计算机上面保存

    注册登录的账号也只能在自己的计算机上有效

    如何将单机变成连网

    将数据库保存部分全部统一起来
    所有人操作数据都在一个地方操作
    

    数据库的本质

    本质其实就是一款基于网络通信的应用程序
    那其实每个人都可以开发一款数据库软件
    因为它仅仅是一个基于网络通信的应用程序
    
    也就意味着数据库软件其实有很多很多:
    
    	关系型数据库:
    		MySQL、Oracle、db2、Access、SQL Server
    		
    	非关系型数据库:
    		Redis、MongoDB、Memcache
    		
    # 关系型
    	1.数据之间彼此有关系或者约束
    		男生表 - 前女友表
    	2.存储数据的表现形式 通常是以表格存储
    		name	password	hobby
    		jason	123			sleep
    		egon	123			eat
    		tank	123			run
    		每个字段还会有存储类型的显示
    		比如姓名只能存字符串....
    		
    # 非关系型
    	存储数据通常都是以k,v键值对的形式
    

    二:MySQL

    任何基于网络通信的应用程序 底层用的都是socket
    
    - 服务端
    	- 基于socket通信
    	- 收发消息
    	- SQL语句
    
    - 客户端
    	- 基于socket通信
    	- 收发消息
    	- SQL语句
    	
    MySQL不单单支持MySQL自己的客户端APP 还支持其他编程语言来充当客户端操作
    	如何解决语言沟通的障碍
    		# 1.让服务端兼容所有的语言(一个人精通多国语言)
    		# 2.采用统一的语言(SQL语句)
    

    020202

    三:重要概念介绍

    库    ==>    文件夹
    表    ==>    文件
    记录  ==>     文件内一行行的数据
    
    		name	password	hobby
    		jason	123			sleep
    		egon	123			eat
    		tank	123			run
    		
    表头:		表格的第一行字段
    字段:		name、password、hobby
    
    
    
    
    

    四:MySQL的安装(这里有教程

    在IT界 一般都不会轻易地使用最新版本的软件,因为新版本可能会出现工作问题
    (你原本的项目跑得好好的 非要画蛇添足去更新版本 然后项目崩溃)
    小段子:
    	更新完没事儿 那么你还是一个普通员工
    	更新完出事儿 那么你就是一名“烈士”
    	
    # MySQL有很多版本(5.6/5.7/8.0) 目前企业里面用得比较多的还是5.6左右
    

    参考网站:http://www.mysql.com

    下载5.6版本即可,如果你下载了其他版本,问题不大,因为SQL语句是一样的。
    
    按照上述方式下载,会将服务端和客户端一并下载到本地。
    
    为了学习方便,我们将服务端和客户端都在本地启动,后期到了公司,服务端会专门跑在一台服务器上,所有人基于网络连接服务端操作
    

    1.MySQL服务端与客户端

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

    注意:

    在前期配置MySQL的时候,cmd终端尽量以管理员的身份打开
    Windows+R 输出 cmd 进入的是普通用户的cmd,有一些命令是无法执行的
    搜索 cmd右键 - 以管理员身份运行
    直接在桌面,按住shift,鼠标右键,在此处打开power shell,就是管理员
    

    2.启动:

    先切换到mysqld所在的bin目录下,然后输入mysqld即可
    保留原来的cmd窗口  重新打开一个
    

    常见软件的默认端口号:

    MySQL:3306
    Redis:6379
    MongoDB:27017
    Django:8000
    Tomcat:8080
    
    MySQL第一次以管理员身份进入是没有密码的,直接回车即可
    
    客户端连接服务端完整命令:
    	mysql -h 127.0.0.1 -P 3306 -uroot -p
    

    五:SQL语句初识:

    1.MySQL中的SQL语句是以分号;作为结束的标志
    
    2.基本命令
    	show databases;    查看所有数据库名
    	
    3.连接服务端的命令可以简写
    	mysql -uroot -p
    	
    4.当你的命令输入不对,又不想让服务端执行并返回报错信息,可以c取消
    	错误命令 c
    	
    5.客户端退出 退出命令加不加分号都能执行
    	quit
    	exit
    	
    6.当你在连接服务器的时候 发现只输入一个mysql也能连接
    	这时候是游客模式 访问有限制
    

    1.环境变量配置及系统服务制作

    小知识点补充:

    1.如何查看当前具体进程
    	tasklist
    	tasklist |finder mysqld
    	
    2.如何杀死具体进程(只有在管理员cmd窗口下才能成功)
    	taskkill /F /PID PID号
    

    环境变量配置

    每次启动mysql需要先切换到对应的文件路径下才能打开服务
    将mysql所在的文件路径添加到系统环境变量中
    
    但是这样还是繁琐 需要开启2个cmd窗口
    将mysql服务制作成系统服务(开机自启动)
    
    查看当前计算机的运行进程数
    	services.msc
    	
    将mysql制作成系统服务
    	mysqld --install
    	
    移除mysql系统服务
    	mysqld --remove
    

    设置密码:

    mysqladmin -uroot -p原密码 password 新密码
    改命令直接在终端输入即可 无序进入客户端
    
    mysqladmin -uroot -p123 password 123456
    

    破解密码:

    出去玩了好几个月,回来返现密码忘了,死活进不去
    
    你可以将mysql获取用户名和密码校验的功能看成是一个装饰器
    装饰在了客户端请求访问的功能上
    
    我们如果将该装饰器移除 那么mysql服务端就不会校验用户名和密码了
    
    # 1 先关闭当前mysql服务端
     命令行的方式启动(让mysql跳过用户名密码验证功能)
     mysqld --skip-grant-tables  
     
    # 2 直接以无密码的方式连接
       mysql -uroot -p   直接回车
       
    # 3 修改当前用户的密码
       update mysql.user set password=password(123456) where     user='root' and host='localhost';
       
    # 4 立刻将修改数据刷到硬盘
    	flush privileges;
    	
    # 5 关闭当前服务端 然后以正常校验授权表的形式启动
    

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

    只有用户自己知道明文是什么 其他人都不知道 这样更加的安全

    密码比对也只能比对密文

    2.统一编码

    * mysql默认的配置文件
    
      ```PYTHON
      """
      my-default.ini 
      ini结尾的一般都是配置文件
      
      程序启动会先加载配置文件中的配置之后才真正的启动
      """
      [mysqld]  # 一旦服务端启动立刻加载下面的配置
      sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
      [mysql]  # 一旦客户端启动立刻加载下面的配置
      ...
      [client]  # 其他客户端
      ...
      
      # 需要你自己新建一个my.ini的配置文件
      
      # 验证配置是否真的是自动加载
      [mysql]
      print('hello world')
      
      # 修改配置文件后一定要重启服务才能生效
      
      # 统一编码的配置 无需掌握 直接拷贝即可
      
      # 偷懒 将管理员的用户名和密码也添加到配置文件中
      [mysqld]
      character-set-server=utf8
      collation-server=utf8_general_ci
      [client]
      default-character-set=utf8
      [mysql]
      user="root"
      password=123456
      default-character-set=utf8
    

    六:基本SQL语句

    辛辛苦苦一个月 只为了一条sql语句(将自己账户的钱修改一下)
    

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

    # 增
    create database db1;
    create database db2 charset='gbk';
    
    # 查
    show databases;                 # 查所有数据库
    show create database db1;       # 查单个数据库
    
    # 改
    alter database db2 charset='utf-8';
    
    # 删
    drop database db2;
    

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

    在操作表(文件)的时候,需要指定所在的库(文件夹)
    
    # 查看当前所在的库(数据库)的名字
    select database();
    
    # 选择数据库
    use db1;
    
    # 增
    create table t1(id int, name char(4));
    
    # 查
    show tables;              # 查看当前库下面所有的表名
    show create table t1;     # 查单个表
    describe t1;              # 查看详情信息,支持简写 desc t1;
    
    # 改
    alter table t1 modify name char(16);
    
    # 删
    drop table t1;
    
    # 绝对路径的形式操作
        # 在db1下创建db2的t1表
        create table db2.t1(id int)
    

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

    一定先要有库 有表 再有记录
    
    # 增
    insert into t1 values(1, 'jason');
    insert into t1 values(2, 'eogn');
    insert into t1 values(3, 'tank')
    
    insert into t1 values(1, 'jason'),(2, 'eogn'),(3, 'tank');
    
    # 查
    select * from t1;            # 该命令 当数据量特别大的时候 不建议使用
    select id,name from t1;      # 查看t1的id和name
    
    # 改
    update t1 set name = 'dsb' where id > 1;
    
    # 删
    delete from t1 where id > 1;
    delete from t1 where name='jason';
    # 将表中所有数据清空
    delete from t1;
    

    个人补充(对于数据库、表、字段、记录的理解):

    0000

  • 相关阅读:
    Windows10 搭建 ElasticSearch 集群服务
    python开发目录
    nohup命令使用
    shell脚本概述
    关于ELK
    keepalived+DR
    shell脚本中awk的用法
    shell脚本中sed的用法
    shell脚本中grep的用法
    shell检测入侵与邮件报警
  • 原文地址:https://www.cnblogs.com/xuexianqi/p/12807067.html
Copyright © 2020-2023  润新知