zoukankan      html  css  js  c++  java
  • 数据库05

    子查询

      子查询指的是当一条查询语句被当作另一个查询语句的条件时,该查询语句就称之为子查询(内层查询)

      子查询可以将一个大问题拆分为几个小的问题,然后一步一步来查询

      语法:将子查询(内层查询)用括号包裹即可

    用户管理

      mysql用户指的是客户端连接服务器时使用账户

      在一些公司中,有很多项目的数据,可能会放在同一个服务器

      那就必须要为每一个用户明确器所用于的权限

      mysql与权限相关的表:

        user columns_priv tables_priv db

        select * from user G; 当一行字段太多可以使用G

      create user 用户名@主机名称 identified by "密码";    该语句只是单纯创建一个用户,后续还要分配权限

      推荐使用grant语句,可以在创建账号的同时分配权限

      grant all on *.* to 用户名@主机名 identified by "密码";

      主机名可以写%  意思是任何主机都可以登录

      库名.*  拥有库下所有表的所有操作权限

      库名.表名   拥有一个表的所有操作权限

      在mysql的权限可以精确到列,但不可以精确到行

      可以将权限授予其他账户

        grant all on *.* to 用户名@主机名 identified by "密码" with grant option;

      收回权限

        revoke all privileges [column] on db.table from user@localhost;

      删除用户

        drop user username@host

      刷新权限

        flush privileges

    可视化工具

      navicat

    pymysql模块

      pymysql是由mysql提供的模块需要单独下载

      pymysql是python提供的一个mysql客户端模块,用于与mysql服务器建立连接,发送查询获取结果等

      本质上还是一个CS的客户端

        1 连接服务器

        2 发送sql指令给服务器

        3 接收服务器返回的结果

      pymysql.connect 建立一个连接对象

      host 服务器地址  port 端口  user 用户名  password 密码  database 连接的库

      cursor类 游标 默认返回值为元组

      pymysql.cursors.DictCursor  将结果转换为字典

      cursor.fetchall() 提取本次查询的所有结果

      cursor.fetchone() 提取本次查询的一条结果

      cursor.fetchmany() 提取本次查询的指定条数

      cursor.scroll()  通过scroll移动游标位置

        mode参数表示,相当位置relative和绝对位置absolute

      commit 提交修改或建立连接的时候设置autocommit为True指定自动提交修改

      cursor.execute 处理一条数据

      cursor.executemany 处理多条数据

    SQL注入问题

      一些不法分子可能会在输入的数据中添加一系列sql语句来跳过认证环节,甚至直接删除数据

      解决方案

        1 在客户端收到数据时做re判断,如果包含sql相关的字符直接报错

        2 在服务器收到某个客户端发送的数据时做一个判断

          pymysql已经封装了相关的判断逻辑

          只要将参数交给pymysql来拼接即可

    pymysql使用

      1 用pymysql.connect(参数) 建立连接得到连接对象

      2 通过连接对象拿到游标对象

      3 通过调用游标对象的excute或者excutemany来执行sql

      4 调用游标的fetchone/fetchall/fetchmany相关函数来提前结果

      强调pymysql默认不会提交修改,需要手动调用conn.commit

      

  • 相关阅读:
    简述Javascript中call apply
    tomato固件 路由简单玩 BT 电驴 amule highId python 其实dd wrt也一样 含 amule_2.2.61_mipsel.ipk下载
    Ubuntu10.10 下usb鼠标不动了
    Struts2源码分析 初步1 如何入手以及做了哪些初始化
    ubuntu eclipse easyexplore 替代品 open explorer
    struts2 src study 准备工作 和 略谈 如何读开源代码(Java)
    python 解析XML expat方式
    正则表达式基础 多选结构 加不加括号大不同
    UVa1586,Molar Mass
    UVa12100,Printer Queue
  • 原文地址:https://www.cnblogs.com/LinChengcheng/p/10560475.html
Copyright © 2011-2022 走看看