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值