1、mysqldump 备份

# mysqldump -uroot -p db1 > db1.sql  数据表结构+数据
# mysqldump -uroot -p -d db1 > db1.sql  数据表结构

# 导入现有数据库数据(导入时注意,要自己创建库)
# mysqldump -uroot -p db2 < db1.sql

2、临时表 (在内存中临时存在)

 

# select name from (select * from tablename where id > 60)as B;  括号内为从别的表里取出数据作为临时表数据取名为B表,然后进行查询
# case when 条件 then 结果1 else 结果2 end
# 例: select course_id,max(num),min(num),case when min(num) < 10 then 0 else min(num) end from score group by course_id

3、pymysql 模块

下载安装
# pip3 install pymysql -i https://pypi.douban.com/simple
# 例1:pymysql 实现数据库登陆交互(有SQL注入)
# import pymysql
# user = input("user:")
# pwd = input("password:")
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new',charset='utf8')  # 连接mysql获取句柄
# cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 操作数据用cursor(把默认元组数据更改为字典数据)
# sql = "select * from userinfo where user='%s' and password='%s'"%(user,pwd,)
# cursor.execute(sql)  # cursor.execute(sql语句)  返回值是受影响的行数
# result = cursor.fetchone()  # 拿第一个数据,默认数据形式为元组,可更改为字典
# if result:
#     print("登陆成功")
# else:
#     print("登陆失败")
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# 注意:这种字符串拼接SQL语句会被SQL注入:
# wenming' --
# sadasdad' or 1=1 --

# 例2:不会受到SQL注入
# import pymysql
# user = input("user:")
# pwd = input("password:")
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "select * from userinfo where username=%s and password=%s"
# cursor.execute(sql,[user,pwd])  # cursor.execute(sql语句)会自动拼接user,和pwd
# result = cursor.fetchone()  # 拿第一个数据
# if result:
#     print("登陆成功")
# else:
#     print("登陆失败")
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# 例3:  还支持字典式传值
# sql = "select * from userinfo where username=%(use)s and password=%(pas)s"
# cursor.execute(sql,{'use':user,'pas':pwd})

# pymysql 增、删、改 注意事务提交 conn.commit()
# 例1:
# import pymysql
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "insert into userinfo(username,password) values('root','123123')"
# cursor.execute(sql)
# conn.commit()  # 涉及 增删改 修改到表值的时候 一定要用 commit() 提交才会成功,相当于事务
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# 例2:
# import pymysql
# user='test1'
# pwd='123123'
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "insert into userinfo(username,password) values(%s,%s)"
# cursor.execute(sql,[user,pwd])  # 列表,元组,字典皆可
# conn.commit()  # 涉及 增删改 修改到表值的时候 一定要用 commit() 提交才会成功,相当于事务
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# 例3: 多行增加:executemany(sql[(值),(值2)])
# import pymysql
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "insert into userinfo(username,password) values(%s,%s)"
# cursor.executemany(sql,[('test2','123123'),('test3','123123')])  # executemany(sql[(值1),(值2)]) 用于多行添加
# conn.commit()  # 涉及 增删改 修改到表值的时候 一定要用 commit() 提交才会成功,相当于事务
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# pymysql 获取新插入数据的自增ID:cursor.lastrowid
# import pymysql
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "insert into userinfo(username,password) values('test10','test10')"
# cursor.execute(sql)
# conn.commit()
# ID=cursor.lastrowid  # 获取新插入数据的自增ID,如果用executemany() 插入多条数据 那么拿到的是最后一条的ID
# print(ID)
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# pymysql 查
# 例1:  cusor.fetchone() 每执行一次向下拿一条数据  cursor.fetchmany(4)  # 指定一次取几条数据  cursor.fetchall()  # 拿到所有数据
# import pymysql
#
# conn = pymysql.connect(host='localhost',user='root',password='',database='new')  # 连接mysql获取句柄
# cursor = conn.cursor()  # 操作数据用cursor
# sql = "select * from userinfo"
# cursor.execute(sql)
# result = cursor.fetchone()  # 只拿第一条数据,每次执行向下拿一条
# result = cursor.fetchmany(4)  # 指定一次取几条数据
# result = cursor.fetchall()  # 拿到所有数据
#
# cursor.close()  # 关闭操作句柄
# conn.close()  # 关闭mysql连接

# 关于游标位置移动(curosor)
# cursor.scroll(1,mode='relative')  # 相对当前位置移动
# cursor.scroll(2,mode='absolute')  # 相对绝对位置移动


# 执行存储过程
# cursor.callproc('别名')  # pymysql 执行存储过程
# conn.commit()
# result = currsor.fetchall()  # 获取返回值数据内容

# 传参
# int:
# cursor.callproc('别名',(参数1,参数2))

# out:  12为int,2为out
# cursor.callproc('别名',(12,2))
# r1=cursor.fetchall()  # 拿到的结果集
# curosr.execute('select @_别名_0,@_别名_1')  # 拿参数结果集
# r2=cursor.fetchall()  # 12,被set修改过的out值