补充:

  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. CF-1238 C.Standard Free2play

    题目大意: 有一个墙,高度为h,在每一个高度处都有一个踏板,有的踏板是隐藏着的,有的是伸出来的,小人站在h高度处(题目保证h高度处的踏板一定是伸出来的),这个小人每站到一个踏板上,就可以点一个开关,将 ...

  2. 01 学习数据分析的python库

    网页爬取 1.requests 2.BeautifulSoup 3.Scrapy 科学计算与数据分析 1.scipy 2.numpy 3.pandas 机器学习和深度学习 1.Scikit-learn ...

  3. ASP.NET Core快速入门(第2章:配置管理)- 学习笔记(转载)

    原文地址:https://mp.weixin.qq.com/s?__biz=MjM5NjMzMzE2MA==&mid=2451733443&idx=2&sn=6d01721c5 ...

  4. VBA基础 - 数据类型

    概要 学习一种新语言, 数据类型和关键字是第一步. 数据类型 常用的数据类型如下: 类型 存储空间 范围 Boolean 2 bytes True 或者 False Byte 1 byte 0 ~ 2 ...

  5. 明解C语言 中级篇 第三章答案

    练习3-1 /* 猜拳游戏(其四:分割函数/显示成绩)*/ #include <time.h> #include <stdio.h> #include <stdlib.h ...

  6. Focal Loss 理解

    本质上讲,Focal Loss 就是一个解决分类问题中类别不平衡.分类难度差异的一个 loss,总之这个工作一片好评就是了. 看到这个 loss,开始感觉很神奇,感觉大有用途.因为在 NLP 中,也存 ...

  7. sql server中的临时表、表变量和公用表表达式

    在编写T-SQL语句的时候,SQL Server提供了三种方法临时存储某些结果集,分别是临时表.表变量和公用表表达式. 临时表 临时表需要在临时数据库TempDB中通过I/O操作来创建表结构,一旦用户 ...

  8. Redhat6.6替换Centos Yum源

    1.删除当前系统自带的yum [root@reddhat6_155_201 ~]# rpm -qa |grep yum yum-rhn-plugin--.el6.noarch yum-utils--. ...

  9. 【10】Nginx:后面有无 / 的区别

    写在前面的话 在 nginx 中,我们很多时候都有一个疑问,在 proxy_pass 或者 root 或者 location 后面需不需要加上 /,加和不加有啥区别. root  / alias 后面 ...

  10. Zabbix设置自定义监控项之——监控tcp连接状态

    目录 一.用户自定义参数 二.配置 监控 TCP 连接状态 在实际监控中,除了官方自带的一些监控项,我们很多时候有一些定制化监控,比如特定的服务.TCP 连接状态等等,这时候就需要自定义监控项.自定义 ...