mysql 数据库总结

1:Python2------>Python3

MySQLdb -------> PyMySQL (MySQLdb驱动从2014年1月停止了维护)

2:安装

https://pypi.python.org/pypi/PyMySQL

https://github.com/PyMySQL/PyMySQL

或者使用 pip install PyMySQL 命令

pip show PyMySQL 查看PyMySQL是否安装成功

3:python 与 mysql 交互

        import pymysql.cursors

        # 连接MySQL数据库

        connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='198876', db='guest',

        charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)

        # 通过cursor创建游标

        cursor = connection.cursor()

        # 创建sql 语句,并执行

        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"

        params = ['gdsf', '215323']

        count = cursor.execute(sql, params)

        result = cursor.fetchone()  #读取查询结果的一条数据,result是一个(元祖),查询机为空集的话result = None

        result1 = cursor.fetchall() # 返回多个元组,即返回多个记录((),()),如果没有结果 则返回 ()

        # 提交SQL

        cursor.close()    # 关闭游标

        connection.commit()

4:数据库增删改查

查询:select * from 表名;

插入:insert into 表名 values(...),(...)...;

修改:update 表名 set 列1=值1,列2=值2... where 条件

删除:delete from 表名 where 条件

5:数据库操作命令:

show databases;      use 数据库名;     select database();     create database 数据库名 charset=utf8;   drop database 数据库名;

6:数据表操作:

查看当前数据库中所有表:show tables;           查看表结构:desc 表名;

创建表:create table 表名(列 类型 约束,...);

修改表-添加字段:alter table 表名 add 列名 类型约束;

修改表-修改字段:(重命名版)alter table 表名 change 原名 新名 类型及约束;

修改表-修改字段:(不重命名版)alter table 表名 modify 列名 类型及约束;

修改表-删除字段:alter table 表名 drop 列名;

删除表:drop table 表名;

查看表的创建语句: show create table 表名;

数据库备份:mysqldump –uroot –p 数据库名 > python.sql;

数据库恢复:mysql -uroot –p 数据库名 < python.sql

数据库查询:

(1)消除重复行:select distinct gender from students;

(2)比较运算符: =    >    >=   <   <=   !=   <>

(3)逻辑运算符: and  or  not

(4)模糊查询: like   % 表示任意多个任意字符  _表示一个任意字符

(5)范围查询: in 非连续范围   between 。。。 and。。。 表示连续区间

(6)空判断 : 判空:is null   判非空: is  not  null

(7) 优先级:优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符;and比or先运算,如果同时出现并希望先算or,需要结合()使用

(8)聚合函数:count(*)表示计算总行数,括号中写星与列名,结果是相同的;max(列)表示求此列的最大值;min(列)表示求此列的最小值;sum(列)表示求此列的和;avg(列)表示求此列的平均值

(9)按照字段分组,表示此字段相同的数据会被放到一个组中;分组后,分组的依据列会显示在结果集中,其他列不会显示在结果集中;可以对分组后的数据进行统计,做聚合运算select gender as 性别, count(*) from students  group by gender;

(10)分组后筛选:having后面的条件运算符与where的相同;where是对from后面指定的表进行数据筛选,属于对原始数据的筛选;having是对group by的结果进行筛选

(11)排序:将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推;默认按照列值从小到大排列;asc从小到大排列,即升序;desc从大到小排序,即降序、

(12)获取部分行:limit start,count      从start开始,获取count条数据;start索引从0开始

(13)分页:每页显示m条数据,当前显示第n页;求总页数:此段逻辑后面会在python中实现;查询总条数p1;使用p1除以m得到p2;如果整除则p2为总数页;如果不整除则p2+1为总页数;求第n页的数据

(14)inner  join  on

(15)子查询:查询学生与班级对应的信息select * from  (select stu.*,cls.name as clsname from students as stu  inner join classes as cls on stu.clsid=cls.id)  as t1;

(16)总结:from 表名 ;where ....;group by ...;select distinct *;having ...;order by ..;.limit start,count

(17)创建账户并且授权:grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

(18)使用root登录: mysql -uroot -p

你可能感兴趣的:(mysql 数据库总结)