zoukankan      html  css  js  c++  java
  • 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> 
    
    
    
  • 相关阅读:
    Lucene4.5.1之添加索引、更新索引、删除索引、查找数据
    DWR 2.0.10之简单测试
    SNMP OID列表
    zabbix low-level discovery 监控mysql
    Linux系统负载查询
    MySQL 调优
    Linux 下DNS详解
    C语言计算两个日期间隔天数
    Linux vmstat命令详解
    select函数的详细使用(C语言)
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11431702.html
Copyright © 2011-2022 走看看