iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL的基本操作有哪些
  • 774
分享到

MySQL的基本操作有哪些

2023-06-28 23:06:54 774人浏览 薄情痞子
摘要

这篇文章主要介绍了MySQL的基本操作有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql的基本操作有哪些文章都会有所收获,下面我们一起来看看吧。1. pymysql的基本操作# ###&n

这篇文章主要介绍了MySQL的基本操作有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql的基本操作有哪些文章都会有所收获,下面我们一起来看看吧。

1. pymysql的基本操作

# ### python 操作mysql import pymysql# ### 1.基本语法"""# (1) 创建连接对象 host user passWord database 这四个参数必写conn = pymysql.connect( host="127.0.0.1" , user="root" , password="123456" , database="db003" , charset="utf8" , port=3306 )# (2) 创建游标对象 (用来操作数据库的增删改查)cursor = conn.cursor()print(cursor)# (3) 执行sql语句sql = "select * from employee"# 执行查询语句返回的总条数res = cursor.execute(sql)print(res) # (4) 获取数据 fetchone 获取一条数据# 返回的是元组,里面包含的是第一条的完整数据res = cursor.fetchone()print(res)res = cursor.fetchone()print(res)res = cursor.fetchone()print(res)# (5) 释放游标对象cursor.close()# (6) 释放连接对象conn.close()"""# ### 2.创建/删除 表操作# conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db003")# cursor = conn.cursor()# 1.创建一张表sql = """create table t1(id int unsigned primary key auto_increment,first_name varchar(255) not null,last_name varchar(255) not null,sex tinyint not null,age tinyint unsigned not null,money float);"""# res = cursor.execute(sql)# print(res) # 无意义返回值# 2.查询表结构"""sql = "desc t1"res = cursor.execute(sql)print(res) # 返回的是字段的个数res = cursor.fetchone()print(res)res = cursor.fetchone()print(res)res = cursor.fetchone()print(res)"""# 3.删除表"""try:sql = "drop table t1"res = cursor.execute(sql)print(res) # 无意义返回值except:pass"""# ### 3.事务处理"""pymysql 默认开启事务的,所有增删改的数据必须提交,否则默认回滚;rollback"""conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db003")cursor = conn.cursor()sql1 = "begin"sql2 = "update employee set emp_name='程咬钻石' where id = 18 "sql3 = "commit"res1 = cursor.execute(sql1)res1 = cursor.execute(sql2)res1 = cursor.execute(sql3)# 一般在查询的时候,通过fetchone来获取结果res1 = cursor.fetchone()print(res1)cursor.close()conn.close()

2. sql注入攻击

# ### sql 注入攻击import pymysql# (1) sql注入的现象''' 现象:绕开账号密码登录成功 ''''''user = input("请输入您的用户名>>>")pwd  = input("请输入您的密码>>>")conn = pymysql.connect(host="127.0.0.1" , user="root" , password="123456",database="db005")cursor = conn.cursor()sql1 = """create table usr_pwd(id int unsigned primary key auto_increment,username varchar(255) not null,password varchar(255) not null)"""sql2 = "select * from usr_pwd where username='%s' and password='%s' " % (user,pwd)print(sql2)res = cursor.execute(sql2)print(res) # 1查到成功 0没查到失败# res=cursor.fetchone()"""select * from usr_pwd where username='2222' or 4=4 -- aaa' and password='' 相当于 : select * from usr_pwd where 10=10; 绕开了账户和密码的判断 -- 代表的是注释;"""if res:print("登录成功")else:print("登录失败")cursor.close()conn.close()'''# (2) 预处理机制""" 在执行sql语句之前,提前对sql语句中出现的字符进行过滤优化,避免sql注入攻击 """""" execute( sql , (参数1,参数2,参数3 .... ) ) execute2个参数默认开启预处理机制 """""" 填写 234234' or 100=100 -- sdfsdfsdfsdf  尝试攻击  """user = input("请输入您的用户名>>>")pwd  = input("请输入您的密码>>>")conn = pymysql.connect(host="127.0.0.1" , user="root" , password="123456",database="db005")cursor = conn.cursor()sql = "select * from usr_pwd where username=%s and password=%s"res = cursor.execute(sql , (user,pwd)  )print(res)print(    "登录成功"  if res else "登录失败"    )cursor.close()conn.close()

3. sql增删改查

# ### Python 操作mysql 数据库 (增删改查)import pymysql"""python 操作mysql增删改时,默认是开启事务的,必须最后commit提交数据,才能产生变化提交数据: commit 默认回滚: rollback"""conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db005")# 默认获取查询结果时是元组,可以设置返回字典;  cursor=pymysql.cursors.DictCursorcursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行对mysql 的操作# 1.增"""sql = "insert into t1(first_name,last_name,sex,age,money) values(%s,%s,%s,%s,%s)"# (1) 一次插入一条res = cursor.execute( sql , ("孙","健",0,15,20000)  )print(res) # 1# 获取最后插入这条数据的id号print(cursor.lastrowid)# (2) 一次插入多条res = cursor.executemany(  sql , [  ("安","晓东",0,18,30000) , ("刘","玉波",1,20,50000) ,("张","光旭",0,80,60000) , ("李","是元",0,10,10) , ("高","大奥",1,20,80000)   ]   )print(res) # 返回插入的条数# 插入5条数据中的第一条数据的idprint(cursor.lastrowid)# 获取最后一个数据的idsql = "select id from t1 order by id desc limit 1"res = cursor.execute(sql)print(res)# 获取结果,返回元组res = cursor.fetchone()print(res["id"])# 默认元组 : (57, '高', '大奥', 1, 20, 80000.0)# 返回字典 : {'id': 51, 'first_name': '高', 'last_name': '大奥', 'sex': 1, 'age': 20, 'money': 80000.0}"""# 2.删"""sql = "delete from t1 where id in (%s,%s,%s)"res = cursor.execute(sql , (3,4,5) )print(res) # 返回的是3,代表删除了3条if res:print("删除成功")else:print("删除失败")"""# 3.改"""sql = "update t1 set first_name = '王' where id = %s"sql = "update t1 set first_name = '王' where id in (%s,%s,%s,%s)"res = cursor.execute(sql , (6,7,8,9))print(res) # 返回的是4,代表修改了4条if res:print("修改成功")else:print("修改失败")"""# 4.查"""fetchone  获取一条fetchmany 获取多条fetchall  获取所有"""sql = "select * from t1"res = cursor.execute(sql)print(res) # 针对于查询语句来说,返回的res是总条数;# (1) fetchone 获取一条res = cursor.fetchone()print(res)res = cursor.fetchone()print(res)# (2) fetchmany 获取多条res = cursor.fetchmany() # 默认获取的是一条数据,返回列表,里面里面是一组一组的字典;data = cursor.fetchmany(3)print(data)"""[{'id': 9, 'first_name': '王', 'last_name': '是元', 'sex': 0, 'age': 10, 'money': 10.0}, {'id': 10, 'first_name': '孙', 'last_name': '健', 'sex': 0, 'age': 15, 'money': 20000.0}, {'id': 11, 'first_name': '安', 'last_name': '晓东', 'sex': 0, 'age': 18, 'money': 30000.0}]"""for row in data:first_name = row["first_name"]last_name = row["last_name"]sex = row["sex"]if sex == 0:sex = "男性"else:sex = "女性"age = row["age"]money = row["money"]strvar = "姓:{},名:{},性别:{},年龄:{},收入:{}".fORMat(first_name,last_name,sex,age,money)print(strvar)# (3) fetchall 获取所有# data = cursor.fetchall()# print(data)# (4) 自定义搜索查询的位置print("<==================>")# 1.相对滚动 relative"""相对于上一次查询的位置往前移动(负数),或者往后移动(正数)""""""cursor.scroll(-1,mode="relative")# cursor.scroll(5,mode="relative")res = cursor.fetchone()print(res)"""# 2.绝对滚动 absolute"""永远从数据的开头起始位置进行移动,不能向前滚"""cursor.scroll(0,mode="absolute")res = cursor.fetchone()print(res)conn.commit()cursor.close()conn.close()

4. mysql的数据恢复

# ### (1) 导入导出 不要加分号导出数据库1.退出mysql2.选择要导出的默认路径3.mysqldump -uroot -p db001 > db001.sqlmysqldump -uroot -p123456 db001 表1 表2 > ceshi01.sql导入数据库1.登录到mysql之后2.创建新的数据库# 注意:source db001.sql 后面没有分号";"3.source 路径+文件# ### (2) 如果服务器宕机了,有没有备份数据,如何恢复数据myisam:直接新建一个数据库,然后把之前库中的三个文件,粘贴复制到新的数据库中,直接就恢复了innodb:# innodb 在只有frm和ibd文件的情况下,如何恢复数据;安装 MySQL Utilitieshttps://downloads.mysql.com/arcHives/utilities/ cmd中找到frm那个文件,执行如下命令:切换到对应目录,执行下面语句,不要加分号mysqlfrm --diagnostic ./文件目录/t1.frm查出建表语句,复制查询出来的建表语句在mysql中创建的新数据中使用(新建一个数据库,然后执行下面的建表语句)CREATE TABLE `innodb1` (  `id` int(11) DEFAULT NULL) ENGINE=InnoDB;#对已创建的表进行表空间卸载 删除ibd文件mysql> alter table innodb1 discard tablespace;把要恢复的idb文件替换进去#对已创建的表进行空间装载mysql> alter table innodb1 import tablespace;# ### (3) 配置linux下的编码集!includedir  /etc/mysql/conf.d/       客户端的修改# 设置mysql客户端默认字符集default-character-set=utf8!includedir  /etc/mysql/mysql.conf.d/ 服务端的修改# 服务端使用的字符集默认为8比特编码的latin1字符集character-set-server=utf8# 重启数据库service mysql restart

小总结:

-- 是mysql的注释  # 在sql注入那块用到了默认python连接mysql的时候,都是开启了一个事务,尤其是增删改,在改变数据的时候,一定要提交数据,不提交数据(默认回滚),不会真正的改变\s 看一下服务器的数据

5. sql语句优化

(1) 避免使用select *,(2) 不确定表大小时候,先用count(*)查下数据.(3) 创建表时尽量使用 char 代替 varchar(4) 定长的字段放前面,变长的字段放后面.(尽可能小的改变树状结构高度)(5) 组合索引代替多个单列索引   (由于mysql中每次只能使用一个索引,所以经常使用多个条件查询时更适     合使用组合索引)(6) 尽量使用短索引(小数据值)(7) 重复少的字段值不适合做索引,例:性别不适合(8) 使用连接(JOIN)来代替子查询(Sub-Queries)

关于“MySQL的基本操作有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL的基本操作有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL的基本操作有哪些

本文链接: https://www.lsjlt.com/news/321337.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL的基本操作有哪些
    这篇文章主要介绍了MySQL的基本操作有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL的基本操作有哪些文章都会有所收获,下面我们一起来看看吧。1. pymysql的基本操作# ###&n...
    99+
    2023-06-28
  • MySQL基本操作有哪些
    这篇文章主要介绍“MySQL基本操作有哪些”,在日常操作中,相信很多人在MySQL基本操作有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL基本操作有哪些”的疑惑...
    99+
    2022-12-05
    mysql
  • MySQL基本语句操作有哪些
    这篇文章主要介绍了MySQL基本语句操作有哪些,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。数据库操作语句创建create database 数...
    99+
    2024-04-02
  • MySQL常用基本操作都有哪些
    MySQL常用基本操作都有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 MySQL常用操作基本操作,以下都是MySQL5.0下...
    99+
    2024-04-02
  • mysql基本操作有那些
    这篇文章给大家分享的是有关mysql基本操作有那些的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。文章目录一、SQL是什么?分类:二、关于数据库CRUD操作1.操作表list:2....
    99+
    2024-04-02
  • jspXCMS基本操作有哪些
    这篇文章主要介绍“jspXCMS基本操作有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jspXCMS基本操作有哪些”文章能帮助大家解决问题。后台登录登录地址:/cmscp/index.do。如...
    99+
    2023-06-26
  • Git基本操作有哪些
    这篇文章将为大家详细讲解有关Git基本操作有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。git 是一个版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更...
    99+
    2023-06-27
  • mysql常识和基本操作都有哪些
    这篇文章给大家介绍mysql常识和基本操作都有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 mysql常识和基本操作 字段类型    1.INT[(...
    99+
    2024-04-02
  • python3的os基本操作有哪些
    本篇内容主要讲解“python3的os基本操作有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python3的os基本操作有哪些”吧!  import os  # 获取当前的工作目录  pr...
    99+
    2023-06-02
  • MySQL基础操作有哪些
    这篇文章主要介绍“MySQL基础操作有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL基础操作有哪些”文章能帮助大家解决问题。1.库的操作查看当前mysql数据库下默认有哪些库show&...
    99+
    2023-06-29
  • MySQL数据库操作的基本命令有哪些
    这篇文章主要介绍MySQL数据库操作的基本命令有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、创建数据库: create data data&n...
    99+
    2024-04-02
  • Linux系统操作mysql基本命令有哪些
    这篇文章跟大家分析一下“Linux系统操作mysql基本命令有哪些”。内容详细易懂,对“Linux系统操作mysql基本命令有哪些”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“L...
    99+
    2023-06-28
  • Git的基本操作命令有哪些
    本篇内容主要讲解“Git的基本操作命令有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Git的基本操作命令有哪些”吧!Git 基本操作Git 的工作就是创建和保存你项目的快照及与之后的快照进...
    99+
    2023-06-17
  • LINQ基本操作的方法有哪些
    这篇文章主要讲解了“LINQ基本操作的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“LINQ基本操作的方法有哪些”吧!LINQ基本操作学习1.我首先创建一个表,名字为:userin...
    99+
    2023-06-17
  • Jspxcms用户的基本操作有哪些
    这篇文章主要讲解了“Jspxcms用户的基本操作有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Jspxcms用户的基本操作有哪些”吧!第1章系统概述第2章基本操作2.1后台登录登录地址...
    99+
    2023-06-26
  • Vue事件的基本操作有哪些
    小编给大家分享一下Vue事件的基本操作有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 事件的基本操作1.1 v-on功能:绑定指定事件名的回调函数标准写...
    99+
    2023-06-29
  • Java数组的基本操作有哪些
    这篇“Java数组的基本操作有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java数组的基本操作有哪些”文章吧。一、为...
    99+
    2023-06-29
  • win10的基本操作技巧有哪些
    这篇文章主要介绍了win10的基本操作技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win10的基本操作技巧有哪些文章都会有所收获,下面我们一起来看看吧。win10基本操作技巧:一、如何调整开始菜单中...
    99+
    2023-07-01
  • Docker的基本操作方法有哪些
    这篇文章主要讲解了“Docker的基本操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker的基本操作方法有哪些”吧!安装Dockerroot@jaking-virtual...
    99+
    2023-06-27
  • 基本DOM节点操作有哪些
    这篇文章主要介绍了基本DOM节点操作有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、获取元素节点getElementById():获...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作