• Python 第四十章 数据库初识


    数据库初识

    数据库管理系统 DBMS
    关系型数据库管理系统 RDBMS
    结构化查询语句 sql语句
    关系型:mysql oracle sqlserver sqllite accesse
    非关系型:redis mongodb memcache(内存级别) Not Only SQL 不仅仅有关系型
    # 不同数据库系统之间的SQL不能互通
    
    数据库解决了以下问题:
    操作文件的效率和便捷
    解决了多个服务同时使用数据的一致性
    解决了安全问题
    解决了并发问题
    
    数据库实现原理:
    db把数据提出来
    python代码后端、浏览器前端
        1.浏览器发送一个网络请求 socket信息
        2.python代码后端socket服务端接收信息 打开html文件 加载数据库里面的数据
        3.socket客户端连接了socket服务端,把数据返回给html文件
        4.python代码后端将文件发给浏览器 浏览器前端可以看到渲染后的页面  
    
    环境变量
    是系统用来帮忙找应用的
    操作系统去环境变量中找目录
    找到目录开启运行
    mysql-5.6.42
    第一个5是主版本号,描述了文件的格式 
    第二个6是发行级别,主版本号和发行级别组合到一起构成了发行序列号,大需求修改发行序列号
    第三个42是版本号,一般改动小需求会升级版本号
    

    永久修改字符集编码的方法

    在mysql安装目录下创建一个my.ini(mac:my.cnf)文件,
    写入下面的配置,然后重启服务器
    
    mysqld 是一个服务器
    mysql  是客户端配置
    [client]
    # 设置mysql客户端默认字符集
    default-character-set=utf8 
    
    [mysql] 
    user = 'root'
    password = '666'
    
    [mysqld]
    #设置3306端口
    port = 3306 
    # 设置mysql的安装目录
    basedir=E:mysql-5.6.45-winx64 
    # 设置mysql数据库的数据的存放目录
    datadir=E:mysql-5.6.45-winx64data 
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    

    mysql安装目录介绍

    bin     存储可执行文件,mysql自带客户端,mysql服务端,mysqladmin执行管理操作的客户端程序
    data    存放数据文件 mysql中我们创建和保存的数据都存在这里 里面是数据库中的库
        存在data文件夹中的默认的三个数据库
        information_schema 内存中的一个虚拟的库
        performance_schema 优化性能的引擎
        test 测试的数据库 空数据库可以删除
        mysql 核心数据库 不能轻易修改
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | performance_schema |
        | test               |
        | mysql              |
        +--------------------+
        7 rows in set (0.01 sec)
    
    docs    存放文档
    include 存储包含的头文件
    lib     存储库的文件
    scripts 存放脚本
    share   错误信息和字符集文件等
    my-default.init 一个缺省的配置文件
    

    MySql客户端连接服务端时完整的指令

    mysql -h 127.0.0.1 -p 3306 -u root -p
    mysql -h 127.0.0.1(本机的IP地址) -P 3306(端口号) 找到应用程序 -u 用户 root 权限 -p密码
    
    mysql server端
    net start mysql 启动一个叫做mysql的服务
    net stop mysql 停止一个服务
    
    mysql 启动了客户端,客户端自动连接本地的3306端口
    mysql -uroot 表示用root用户登录  默认密码是空
    set password = password('123'); 设置密码
    mysql -uroot -p 回车 使用密码登录
    enter password 输入密码
    或者 mysql -uroot -p123 直接登录
    

    修改密码:忘记密码怎么办?

    启动服务端
    net start mysql
    1.停掉服务端
    net stop mysql
    
    2.用路径启动服务,不加载认证功能,直接启动服务端
    mysqld.exe --skip-grant-tables
    
    3.重启一个窗口
    转到mysqlin目录
    
    4.进入数据库
    mysql
    
    5.连接服务端
    use mysql;
    
    6.查看所有的表
    show mysql;
    
    7.找到存用户的表
    拿到用户名和密码
    select user,passeord from user;
    
    8.修改用户名密码
    updata user set password=password('666') where user = 'root';    # password('666')加密的,类似函数,改成666
    
    9.退出
    quit
    
    10.杀进程
    tasklist|findstr mysqld # 筛选mysqld 进程 findstr管道符
    taskkill /F /PID 5060 # 进程号
    
    11.重启服务端
    net start mysql
    mysql -u root -p
    

    查看mysql服务语句

    启动MySQL服务
    sudo /usr/local/mysql/support-files/mysql.server start

    停止MySQL服务
    sudo /usr/local/mysql/support-files/mysql.server stop
    重启MySQL服务
    sudo /usr/local/mysql/support-files/mysql.server restart
    查看MySQL服务状态
    sudo /usr/local/mysql/support-files/mysql.server status

    修改数据库配置文件

    .cnf文件sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
    1.mysql help 查看所有的配置文件

    2.没有my.cnf ,在 /etc 新建 my.cnf 文件
    进入 cd /usr/local/mysql
    mkdir /ect/my.cnf
    3.编辑mysql的配置文件
    sudo vim /etc/my.cnf
    4.按i进入编辑模式

    服务端
    [mysqld]
    **配置成严格模式
    sql_mode = 'STRICT_TRANS_TABLES'
    **配置默认引擎
    default-storage-engine=INNODB
    **配置服务端编码格式
    character-set-server=utf8
    **配置数据库编码格式
    character_set_database=utf8
    客户端
    [client]
    **配置客户端编码格式
    default-character-set=utf8
    

    5.esc退出编辑模式,:wq保存配置文件
    6.进入mysql
    7.查看是否是严格模式
    select @@global.sql_mode;
    +---------------------+
    | @@global.sql_mode |
    +---------------------+
    | STRICT_TRANS_TABLES |
    +---------------------+
    1 row in set (0.00 sec)
    8.查看编码集
    show variables like '%char%';
    9.设置快捷方式
    1.在根目录下/user/...(根目录)输入 vim .zshrc
    2.按下I进入insert模式输入
    alias mysql="mysql -uroot -p123456"
    alias 别名为mysql ='mysql -u你的用户名 -p你的密码'
    3.按esc退出insert模式,输入:wq保存配置文件

    修改密码:知道密码修改密码

    方法一:set password 命令
    先登录mysql
    mysql> set password for 用户名@localhose = password('新密码');
    mysql> set password for root@localhose = password('123');
    
    方法二:mysqladmin 不需要登录mysql修改 不安全,但方便
    mysqladmin -u用户名 -p旧密码 password 新密码
    mysqladmin -uroot -p123 password 666
    
    方式三:update直接编辑mysql库中的 user表
    先登录mysql
    mysql> use mysql; use mysql 切换到mysql这个库
    mysql库中存放的是所有的用户表和权限相关的表
    mysql>update user set password=password('新密码') where user='root' and host='localhost';
    password=password('新密码')前面的password是变量,后面的是mysql提供的密码加密用的
    user是一个表,存放所有的mysql用户的信息
    mysql> flush privileges; 刷新权限,生效,否则不生效,修改不成功
    

    存储引擎:engines

    存储引擎:engines
    默认存储引擎:InnoDB
    查看存储引擎:
    show engines;
    使用不同的存储引擎,数据以不同的方法存储
        #
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        | Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        | InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
        | MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
        | PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
        | BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
        | CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
        | MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
        | ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
        | MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
        | FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
        +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
        9 rows in set (0.01 sec)
    
    通过引擎创建表
    innodb 生成2个文件 存放表结构 
    create table t1(id int)engine=innodb;
    myisam 生成3个文件 索引
    create table t2(id int)engine=myisam;
    memory 生成1个文件 存在内存 重启mysql或者计算机后,数据清空
    create table t3(id int)engine=memory;
    blackhole 可以插入任何数据,类似黑洞存放就没了
    create table t4(id int)engine=blackhole;
    
    
    .frm 文件主要是用来描述数据表结构(id,name等字段)和字段长度
    .ibd 储存的是采用独立表储存模式时储存数据库的数据信息和索引信息 存放真正的数据
    .MYD 存储数据库数据信息的问价,存储采用独立表储存模式时存储的数据信息 存放真正的数据
    .MYI 储存的是数据库的索引信息
    db.opt 用来记录该库的默认字符集编码和字符集排序规则用的
    desc  有字段 信息
    
    

    常见引擎

    常见引擎介绍
    MySQL5.5之前的默认储存是MyISAM引擎
    MySQL5.6之后的默认储存是InnoDB引擎
    1.MyISAM 引擎
        1.不支持事务:事务是指逻辑上的一组操作
        2.表级锁定:数据更新时锁定整个表
        3.读写互相阻塞:读写的时候都有阻塞,但读本身并不会阻塞另外的读
        4.只会缓存索引:减少磁盘IO
        5.读取速度快:占用资源相对较少
    2.InnoDB引擎
        1.支持事务
        2.行级锁定
        3.读写阻塞与事务隔离级别相关
        4.非常高效的缓冲特性
    
    什么是事务?
    事务就是指逻辑上的一组sql语句操作,组成这些操作的各个sql语句,要么全成功,要么全失败。
    1.原子性
    不可分割的单位
    2.一致性
    数据的完整性必须要保持一致
    3.隔离性
    其他人看不到执行过程,只能看到执行结果
    4.持久性
    悠久性的,如果错误,事务不能撤回,只能通过'补偿性事务'
    https://www.cnblogs.com/clschao/articles/9953550.html
    

    .卸载mysql

    1、备份数据库
    在终端工具中使用mysqldump备份你的数据库将文本文件!
    或者用Navicat premium工具去备份数据库脚本和数据
    推荐使用mysqldump备份
    2、停止数据库服务器
    3、删除一下目录
    sudo rm /usr/local/mysql
    sudo rm -rf /usr/local/mysql*
    sudo rm -rf /Library/StartupItems/MySQLCOM
    sudo rm -rf /Library/PreferencePanes/My*
    edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
    rm -rf ~/Library/PreferencePanes/My*
    sudo rm -rf /Library/Receipts/mysql*
    sudo rm -rf /Library/Receipts/MySQL*
    sudo rm -rf /private/var/db/receipts/*mysql*
    
    语句后加上
    engine=innodb default charset=utf8;
    

    遇到错误

    输入错误的语句或者不完整的语句,提示-> 
    输入c取消 回车
    mysql> insert into stu values()
        -> 1,'zs'
        -> 
        -> 
        -> c
    mysql>
    
    输入错误的标点符号提示 '>
    mysql> ;                                                   
        '> '/c
        -> c
    mysql>
    或者直接Ctrl+c
    mysql> ;     
        '> ^C
    mysql> 
    
    
    
  • 相关阅读:
    Compression algorithm (deflate)
    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    gzip压缩算法: gzip 所使用压缩算法的基本原理
    Decompressing a GZip Stream with Zlib
    Frequently Asked Questions about zlib
    how to decompress gzip stream with zlib
    自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
    What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
    C语言抓http gzip包并解压 失败 C/C++ ChinaUnix.net
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11431702.html
Copyright © 2020-2023  润新知