补充:

  exist存在EXISTS关字键字表示存在。在使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值,True或False。

  当返回True时,外层查询语句将进行查询当返回值为False时,外层查询语句不进行查询。

select * from emp
where exists
(select id from dep where id > 203);

一。NAVICAT

  navicat是一个数据库管理工具,可以管理数据库,简化数据库的操作。

  下载地址:https://pan.baidu.com/s/1bpo5mqj

  navicat需要熟悉以下操作:

#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 建立表模型 #注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键

   之前哪些语句都被navicat给封装了,点点鼠标就可以操作数据库。

  在这里要注意,建立数据库时要选择编码utf8,而utf8mb4可以存表情。

  设置主键的时候不要忘记自增选项:

二。pymysql

  在pycharm中有专门与mysql连接的模块,就是pymysql。

  下载模块后,就可以编写语句连接数据库了:

conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = '',
database = 'day38',
charset = 'utf8'
)

  导入模块之后,先使用connect关键字配置数据库连接,

  通过连接可以设置光标cursor执行语句:

cursor = conn.cursor(pymysql.cursors.DictCursor)
sql = 'select * from teacher'
res = cursor.execute(sql)

  其中pymysql.cursors.DictCursor是将输出的结果打印成字典格式

  cursor.execute()执行SQL语句

  cursor.fetchone()取出一条语句

  cursor.fetchall()取出所有语句,以列表+字典形式输出

  cursor.scroll(1,‘absolute’)将光标滚动至第一条数据后,绝对位置

  cursor.scroll(1,‘relative‘)将光标向后滚动一行,相对位置

三。sql注入问题。

  利用下述的方法,可以实现用户的注册于登录,但是原理是将用户直接输入的字符串拼接后放入sql语句中执行。

name = input('用户名>>>:')
pwd = input('密码>>>:')
sql = "select * from user where name = '%s' and password = '%s'"%(name,pwd)
res = cursor.execute(sql)
if res:
print(cursor.fetchall())

  但是,当用户输入一些sql特殊意义的字符也会照样执行,比如:‘or 1=1 -- ",就可以将用户所有的数据都打印出来,为了解决这方法,pymysql有特有的方法:

name = input('用户名>>>:')
pwd = input('密码>>>:')
sql = "select * from user where name = %s and password = %s"
res = cursor.execute(sql,(name,pwd))
if res:
print(cursor.fetchall())

  execute除了执行sql语句之外,还可以拼接sql中的%s字符串,可以自动识别sql中%s替换成输入的内容,而不需要“”

四。pymysql增删查改问题

  在pycharm中使用增删改操作时,如果不加入conn.commit,就不能进行操作,需要加这个语句才行,而且每次操作都要使用。

sql2 = "insert into user(name,password) values('lzx32','')"
res = cursor.execute(sql2)
conn.commit()

  这样是比较烦的,但是可以设置自动的。

conn = pymysql.connect(
host = '127.0.0.1',
port = 3306,
user = 'root',
password = '',
database = 'day38',
charset = 'utf8',
autocommit = True
)

  在连接中设置autocommit恒等于True就行。

day38_8_22数据库(navicat操作)的更多相关文章

  1. Navicat(数据库可视化操作软件)安装、配置、测试

    Navicat(数据库可视化操作软件)安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.Navicat安装.激活与配置 4.简单测试 5.注意事项 6.相关博文 > ...

  2. MYSQL数据库的操作

    Mysql的连接方式: 1.原生函数:mysql_connect($server,$username,$password);   //打开一个到Mysql服务器的连接 mysql_select_db( ...

  3. Navicat操作SQL server 2008R2文件.bak文件还原

    项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...

  4. 第八章| 3. MyAQL数据库|Navicat工具与pymysql模块 | 内置功能 | 索引原理

    1.Navicat工具与pymysql模块 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数 ...

  5. Navicat操作MySQL简易教程

    前言: 日常使用 MySQL 的过程中,我们可能会经常使用可视化工具来连接 MySQL ,其中比较常用的就是 Navicat 了.平时也会遇到某些同学问, Navicat 怎么安装,如何使用等问题.本 ...

  6. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  7. Android-Sqlite数据库的操作

    Sqlite数据库的简单操作: 设置增删改查的按钮,xml界面布局设置 <?xml version="1.0" encoding="utf-8"?> ...

  8. (四)SQL入门 数据库的操作与事务管理

    数据库的操作,有三个最基本的语句,insert插入,update修改,delete删除. 不同的数据库厂商的实现可能不同,所以就不说具体的语法怎么写的了.说语法也没有意义,到处都可以复制粘贴,记得听某 ...

  9. Laravel框架数据库CURD操作、连贯操作使用方法

    Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍.   Laravel是一套简洁.优雅的PHP Web开 ...

随机推荐

  1. Loadrunner Controller运行不了,提示cannot create Vusers

    执行场景时显示: Loadrunner Controller cannot create Vusers.Ensure that your load generators are available a ...

  2. ResultMap(还没细看)

    前言 MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转换的手段了,而res ...

  3. Paper | One-to-Many Network for Visually Pleasing Compression Artifacts Reduction

    目录 故事 网络设计 网络前端 升采样中的平移-均值化 网络度量 训练 发表于2017年CVPR. 目标:JPEG图像去压缩失真. 主要内容: 同时使用感知损失.对抗损失和JPEG损失(已知量化间隔, ...

  4. 数据仓库006 - MySQL 5.6.x - Linux最佳生产环境离线部署

    一.离线安装包 文件准备 这里以mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz为例,记一次MySQL 5.6.x 的生产环境离线部署过程.使用SecureCRT连接 ...

  5. 传统码头建设企业:Azure DevOps Server 流水线技术沟通

    受某码头建设企业的邀请,与企业软件研发团队就如何利用Azure DevOps Server进行了沟通.结合企业当前技术框架和管理流程,探索利用微软Azure DevOps Server的技术能力,加强 ...

  6. centos 文本文件编码转换

    iconv -f utf-8 -t gbk   shtel_single_utf8.mlf > shtel_single_gbk.mlf

  7. Java Exception 异常处理

    一.定义 异常(Exception) : 是指程序运行时出现的非正常情况,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制. 二.两大常见的异常类型 • RuntimeException ...

  8. python threading Future源码解析

    1. Future内部还是用了condition这个锁 2. Cancel # future在执行时,会一直更新这个状态 def cancel(self): """Can ...

  9. JVM的监控工具之jps

    jps的功能和ps命令相似:可列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Mach ...

  10. 练手WPF(三)——扫雷小游戏的简易实现(中)

    八.随机布雷 /// <summary> /// 随机布地雷 /// </summary> /// <param name="mineNum"> ...