补充:

  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. 详解C++ STL set 容器

    详解C++ STL set 容器 本篇随笔简单介绍一下\(C++STL\)中\(set\)容器的使用方法及常见使用技巧. set容器的概念和性质 \(set\)在英文中的意义是:集合.\(set\)容 ...

  2. linux 基本命令 1

      Linux基本命令(一) 目标 熟练使用 Linux常用的命令 ls  查看文件 clear   清空 cd pwd mkdir touch rm cp mv tree chmod find gr ...

  3. [PHP] laravel5.5 搭建流程

    1.nginx 配置 server {    listen       80;    server_name  laravel5-test.d.com; charset utf-8; location ...

  4. Vue 变异方法sort&reverse对评论进行排序

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Redis与python

    一.Redis介绍 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库(非关系型数据库). 本质:将数据保存在内存中. 用途:缓存.消息队列. 1.Redis的特点 R ...

  6. cURL error 60: SSL certificate problem: unable to get local issuer certificate(转)【亲测】

    php5.6以上的版本会出现这种问题 解决办法: [开启拓展] extension=curl extension=openssl [配置证书] 访问https://curl.haxx.se/docs/ ...

  7. kali渗透综合靶机(三)--bulldog2靶机

    kali渗透综合靶机(三)--bulldog2靶机 靶机地址:https://download.vulnhub.com/bulldog/Bulldog2.ova 一.主机发现 1.netdiscove ...

  8. WPF-自定义实现步骤条控件

    步骤条实现的效果: 步骤条控件是在listbox的基础上实现的. 一. xaml代码: <Window.Resources> <convert1:StepListBarWidthCo ...

  9. 微信测试号:config:invalid url domain

    今天调试微信分享的时候,配置参数时一直提示config:invalid url domain,网上找了一下,都说是appId和域名没有绑定.仔细看了下,有绑定没错.又猜测是不是二级域名的问题,因为是测 ...

  10. Kail Linux xface 2019.2

    概述: -OS: Kali-Rolling (2019.2) -DE: XFCE -WM: Arc-Dark -WM Theme: Arc-Dark -Icons: Korla -Term Font: ...