mysql工具
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql工具,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4665字,纯文字阅读大概需要7分钟。
内容图文
工具介绍
生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具
下载链接:https://pan.baidu.com/s/1bpo5mqj
掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表
#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键
MySQL数据备份
物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。
逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。
导出表: 将表导入到文本文件中。
- 使用mysqldump实现逻辑备份
# 语法:
# mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
# 示例:
# 单库备份:
$ mysqldump -uroot -pabc123 db > G:\\db_save.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
# 多库备份,注意数据库之间直接用空格隔开即可,不能加逗号:
mysqldump -uroot -pabc123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
#恢复多个库, 无须指定任何数据库名称,直接将目标数据库文件解压到数据库即可:
mysql -uroot -pabc123 < G:\\db1_db2.sql
# 备份所有库:
mysqldump -uroot -pabc123 --all-databases > all.sql
# 直接在数据库外部执行sql语句命令, 必须用双引号执行:
$ mysql -uroot -pabc123 -e "use db; show tables;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------+
| Tables_in_db |
+--------------+
| dept |
| user_info |
+--------------+
- 恢复逻辑备份
方法一,必须保证数据库db存在, 直接将备份的数据导入到数据库db中:
$ mysql -uroot -pabc123 db < G:\db1.sql
恢复多个库
mysql -uroot -pabc123 < G:\\db1_db2.sql
方法二:连接、创建并使用数据库, 在使用source命令将备份文件导入即可
mysql> use db1;
mysql> SET SQL_LOG_BIN=0;
mysql> source /root/db1.sql
Pymysql模块
- 可以直接在python代码中连接mysql数据库并取出数据,
# 实例代码
import pymysql
user = input(‘用户名>>> ‘).strip()
pwd = input(‘密码>>> ‘).strip()
# 连接数据库并拿到游标
conn=pymysql.connect(host=‘localhost‘,user=‘root‘, passwd=‘abc123‘,db="db",charset=‘utf8‘)
cursor = conn.cursor()
sql = ‘select * from user WHERE username="%s" and password="%s";‘ % (user, pwd)
try:
rows = cursor.execute(sql) # 拿到受影响的行数
print(sql)
if rows:
print(‘欢迎登陆!‘)
else:
print(‘用户名或密码不正确!‘)
except Exception as e:
print(e)
cursor.close()
conn.close()
- sql注入问题
# 情况1: 知道用户名直接跳过密码登陆数据库
用户名>>> kate" -- asas
密码>>>
select * from user WHERE username="kate" -- asas" and password="";
欢迎登陆!
# 增加判断条件or
用户名>>> xxx" or 1=1 -- as
密码>>>
select * from user WHERE username="xxx" or 1=1 -- as" and password="";
欢迎登陆
- 怎么解决这个问题
import pymysql
user = input(‘用户名>>> ‘).strip()
pwd = input(‘密码>>> ‘).strip()
# 连接数据库并拿到游标
conn=pymysql.connect(host=‘localhost‘,user=‘root‘, passwd=‘abc123‘,db="db",charset=‘utf8‘)
cursor = conn.cursor()
sql = ‘select * from user WHERE username=%s and password=%s;‘
try:
# 使用pymysql内置的功能进行连接字符串,避免了bug产生
rows = cursor.execute(sql, [user, pwd])
print(sql)
if rows:
print(‘欢迎登陆!‘)
else:
print(‘用户名或密码不正确!‘)
except Exception as e:
print(e)
cursor.close()
conn.close()
- 增删改
import pymysql
#链接
conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123‘,database=‘egon‘)
#游标
cursor=conn.cursor()
#执行sql语句
# 自行拼接sql语句
# sql=‘insert into userinfo(name,password) values("root","123456");‘
# res=cursor.execute(sql) #执行sql语句,返回sql影响成功的行数
# print(res)
# 插入单行数据
# sql=‘insert into userinfo(name,password) values(%s,%s);‘
# res=cursor.execute(sql,("root","123456")) #执行sql语句,返回sql影响成功的行数
# print(res)
# 插入多行数据
sql=‘insert into userinfo(name,password) values(%s,%s);‘
res=cursor.executemany(sql,[("root","123456"),("lhf","12356"),("eee","156")]) #执行sql语句,返回sql影响成功的行数
print(res)
conn.commit() #提交后才发现表中插入记录成功
cursor.close()
conn.close()
- 查询
import pymysql
#链接
conn=pymysql.connect(host=‘localhost‘,user=‘root‘,password=‘123‘,database=‘egon‘)
#游标
cursor=conn.cursor()
#执行sql语句
sql=‘select * from userinfo;‘
rows=cursor.execute(sql) #执行sql语句,返回sql影响成功的行数rows,将结果放入一个集合,等待被查询
# 取走后光标会跟着移动
res1=cursor.fetchone()
res2=cursor.fetchone()
res3=cursor.fetchone()
res4=cursor.fetchmany(2)
res5=cursor.fetchall()
print(res1)
print(res2)
print(res3)
print(res4)
print(res5)
print(‘%s rows in set (0.00 sec)‘ %rows)
conn.commit() #提交后才发现表中插入记录成功
cursor.close()
conn.close()
mysql工具
标签:inf 链接 insecure sql class val cursor 指定 注释
本文系统来源:https://www.cnblogs.com/fqh202/p/8455323.html
内容总结
以上是互联网集市为您收集整理的mysql工具全部内容,希望文章能够帮你解决mysql工具所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。