zoukankan      html  css  js  c++  java
  • Python之旅.第十章 mysql

    一、数据库相关概念

    1、两种硬件扩展方式

       a、垂直扩展:针对一台计算机

       b、水平扩展:多台普通计算机

       

    2、数据库相关概念

       数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端)--简称数据库(运维角度)

       数据库管理管理系统RDBMS(本质就是一个C/S架构的套接字软件)--简称数据库(运维角度)

       注:一般数据库管理系统的服务端安在linux操作系统上

          mysqld———服务端; mysql———客户端(python用不了mysql自带的服务端,需要用pymysql

         a、支持并发

         b、锁的问题

         c、对客户端请求进行认证

         d、存取效率(降低IO次数)

       库(文件夹)--简称数据库 (程序员角度)

       表(文件):需设置字段(表头)

       记录:抽取一个事物所有典型的特征/数据(一堆数据的集合)

         egon,18,180,male,True

       数据:

         name='egon' age=18 height=180 sex="male" beutiful=True

       SQL语句:不同数据库软件使用/定义的SQL语句不完全相同,但差别不大

     

    3、数据库管理系统/软件分类 DBMS

       关系型RDBMS

         有表结构,存取数据前必先定义表结构,存数据必须按照字段的类型或者约束来

         典型代表:MySQLOracleDB2SQL server(银行业常用)

       非关系型(爬虫类常用):

         存取数据都是采用key:value的形式

    非关系型:Mongodbredismemcache(较不常用)

     

    二、基本管理(windows系统)

    1、安装(windows系统解压文件后即完成安装)

     

    2、加环境变量

     

    3、把mysqld软件做成系统服务

        注意:制作之前先把mysqld关掉

        

        C:Windowssystem32>tasklist |findstr mysqld

        mysqld.exe                    8372 Console                    2    454,916 K

        C:Windowssystem32>taskkill /F /PID 8372

        成功: 已终止 PID 8372 的进程。

     

        制作:

            mysqld --install

        查看:

            windows+r

            输入services.msc

     

    4、启动:

       未制作系统服务的启动方式:

         1、启动服务端

            mysqld

     

         2、启动客户端

            mysql -uroot -p -h127.0.0.1 -P 3306 #3306mysql默认端口

            如果是在本机登录mysqld服务端可以简写:mysql -uroot -p #本机IP已知,端口默认

     

       制作完系统服务后就可以鼠标点击启动或关闭mysql

         windows+r

         输入services.msc

         找到mysql,启动或关闭

     

    5、破解管理员密码

       1、先关闭mysqld服务端

       2、以跳过授权表的方式在命令行中启动mysqld服务端

          mysqld --skip-grant-tables

       3、客户端直接以无密码的方式登录root用户,修改密码

          mysql -uroot -p

     

          mysql> update mysql.user set password=password("123") where user="root" and host="localhost";

          Query OK, 0 rows affected (0.00 sec)

          Rows matched: 1  Changed: 0  Warnings: 0

     

          mysql> flush privileges;  #每次改完后强制刷新下

          Query OK, 0 rows affected (0.00 sec)

     

       4、在命令行中用taskkill杀死mysqld服务,然后正常启动mysqld

          taskkill /F /PID 131312

     

          def password(mingwen):    #password模块可帮忙加密明文,直接调取即可

              import hashlib

              m=hashlib.md5()

              m.update(mimgwen)

              return m.hexdigest()

     

    6、统一字符编码

        1、在mysql安装目录下新建my.ini文件

        2、修改my.ini

            [mysqld]

            character-set-server=utf8

            collation-server=utf8_general_ci

     

            [client]

            default-character-set=utf8

     

            [mysql]

            default-character-set=utf8

     

        3、重启mysqld

    4、客户端登录,输入s查看结果

     

    三、基本管理(mac系统)

    1、安装 mysql-5.6.35-macos10.12-x86_64.dmg)

     

    2、加环境变量

       https://blog.csdn.net/con_heart/article/details/53766931

     

       其实和windows一样 在高级属性里加入环境变量是为了在任何一个路径下输入命令的时候都能找到这个命令,就不用每次要输入某个命令(如登录mysql)都要先进入命令所在的文件夹(一般挺长的)。下面就是把mysql的命令的路径加入环境变量:

       1.打开终端,输入: cd ~

         会进入~文件夹

     

       2.然后输入:touch .bash_profile

         回车执行后,

     

       3.再输入:open -e .bash_profile

         会在TextEdit中打开这个文件(如果以前没有配置过环境变量,那么这应该是一个空白文档)。如果有内容,请在结束符前输入,如果没有内容,请直接输入如下语句:export PATH=${PATH}:/usr/local/mysql/bin

         然后,保存,退出TextEdit(一定是退出),关闭终端并退出。

     

       4.再次打开终端,直接输入 mysql -u "你的用户名"  -p 回车 再输入密码 这时候就能登入mysql

     

    3、查看mysql文件夹

       前往文件夹 - /usr/local/mysql

     

    4、启动:

       访达-》系统偏好设置

       PATH="$PATH":/usr/local/mysql/bin

       mysql -u root -p #-p后面不加空格,直接接密码

     

    5、破解管理员密码

       https://blog.csdn.net/lishaojun0115/article/details/52805563

       

       step1:苹果->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server

       step2:进入终端输入:cd /usr/local/mysql/bin/

              回车后 登录管理员权限 sudo su

              回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &

              回车后mysql会自动重启(偏好设置中mysql的状态会变成running

     

       step3

              输入命令 ./mysql

              回车后,输入命令 FLUSH PRIVILEGES; 

              回车后,输入命令 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

     

       至此,密码修改完成,可以成功登陆。

     

    6、统一字符编码(防止乱码,统一成utf-8

       1、复制my.cnf文件,并在其中添加以下内容

       [mysqld]

       character-set-server=utf8

       collation-server=utf8_general_ci

       #basedir=/usr/local/mysql/

       #datadir=/usr/local/mysql/data/

       [client]

       default-character-set=utf8

       user=root

       password=******

       [mysql]

       default-character-set=utf8

       #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

     

       2、关闭mysql服务端

     

       3、在etc下添加my.cnf

     

       4、重启mysql服务端,在客户端中登陆并查看(s)

     

    7、其他:

       MAC电脑安装Mysql服务器和Navicat for mysql客户端

       https://blog.csdn.net/kuangdacaikuang/article/details/76515985

     

    四、基本的SQL语句

    #SQL语句的主要操作对象为库,表,记录;其中对记录的操作最为常见

    1、文件夹(库)#库名可按照python的命名规则来

       

            create database db1 charset utf8;

       

            alter database db1 charset gbk;  #库名修改不了

       

            查看所有库的库名

            show databases;  #其中information_scheme是内存中的表

            单独查看某一个库的信息

            show create database db1;

       

            drop database db1;

     

    2、文件(表)#表名可按照python的命名规则来

        首先切换文件夹:

            use db1;   #也可后续db1.t1调用

            select database();   #查看当前所在的文件夹

       

            create table t1(id int,name char);  #charsql中的str

       

            alter table t1 modify name char(16);  #16为存取限制,最多存取16个字符

       

            查看当前库下所有的表名

            show tables;

            查看t1表的详细信息

            show create table t1;

            查看表结构

            desc t1;

       

            drop table t1;

     

    3、文件的一行内容(记录)

       

            insert into db1.t1 values

            (1,'egon'),    #增加前最好检查下之前表的charset

            (2,'alex'),

            (3,'lxx');

       

            update db1.t1 set name='sb' where id > 1;

       

            select id,name from db1.t1;

            select * from db1.t1 where age >20;

       

            delete from db1.t1 where name = "SB" ;

     

    4、;为SQL语句的语句结束提示符

       c 若语句错误,想退出每次输入并不影响结果时使用

     

    五、存储引擎

    #Mysql使用的线程池

     

     

    create table t1(id int)engine=innodb;

    create table t2(id int)engine=myisam;

    create table t3(id int)engine=blackhole;

    create table t4(id int)engine=memory;

     

    常见innodbmyisammemoryblackhole几种存储引擎,最常用的为innodb innodb:亦为默认存储引擎,支持事务,行锁设计,外键

    t1.frm (frame) t1.ibd (innodb data); 存入硬盘

     

    myisamt2.MYD (myisam data) t2.MYI (myisam index) t2.frm (frame); 存入硬盘

     

    blackhole: t3.frm

     memory: t4.frm; 存入内存,关闭服务端后,数据清空

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/yangli0504/p/9008158.html
Copyright © 2011-2022 走看看