• 数据库


    数据库

    SQL注入问题

    ​ 输入用户名: xxxx ‘ or 1=1 #

    ​ 输入密码: xxxx

    select * from user where name = 'xxxxx ' or 1=1 # ' and password = 'sssdsd'

    产生的原因:

    ​ 因为过于相信用户输入的内容,根本没有做任何的检验

    解决方法:

    ​ sql = 'select * from user where name=%s and password=%s'

    ​ cursor.execute(sql,(user,pwd))

    连接:

    conn = pymysql.connect(host='127.0.0.1',user='root',password = '123',database ='数据库名',charset = 'utf8')
    cursor = conn.cursor(cursor = pymysql.cursors.DictCursor)
    

    查:

    fetchall()    #取出所有的数据 返回的是列表套字典
    fetchone()	  #取出一条数据 返回的是字典
    fetchmany(size)  #取出size条数据 返回的是列表套字典
    

    增:

    sql = 'insert into user(name,password) values(%s,%s)'
    #cursor.execute(sql,('xxx','qqq'))
    data = [
        ('zzzz','sss'),
        ('wwww','pppp')
    ]
    cursor.executemany(sql,data)
    conn.commit()
    
    

    改:

    sql = 'update user set name=%s where id = %s'
    cursor.execute(sql,('sss',2))
    conn.commit
    cursor.close()
    conn.close()
    

    删:

    sql = 'delete from user where id = %s'
    cursor.execute(sql,(2,))
    conn.commit()
    cursor.close()
    conn.close()
    

    索引

    为什么使用索引以及索引的作用

    ​ 使用索引就是为了提高查询效率

    类比: 查询字典目录

    索引的本质:

    ​ 一个特殊的文件

    索引的底层原理:

    ​ B+数

    索引的种类

    主键索引: 加速查找 + 不能重复 + 不能为空

    唯一索引: 加速查找 + 不能重复

    ​ 联合唯一索引 unique(name, email)

    普通索引: 加速查找

    ​ 联合索引: index(name,email)

    索引的创建

    #主键索引
    create table xxx(
    	id int auto_increment , 
        primary key (id)
    )
    alter table xxx change id id int auto_increment prinmary key ;
    alter table xxx add primary key (id);
    #删除主键
    alter table t1 drop primary key ;
    
    #唯一索引:
    增加:
        1.
        create table t2(
        id int auto_increment primary key,
        name varchar(32) not null default '',
        unique u_name (name)
        )charset utf8 
        2. create unique index 索引名 on 表名(字段名)
        3.alter table t2 add unique index 名称 (字段)
        删除:
        alter table t2 drop u_name
        
        
        普通索引
        1.
       create table t3(
          id int auto_increment primary key ,
          name varchar(32) not null default '' ,
          index u_name(name)
       )
    	2. create index 索引名 on 表名 (字段);
        3. alter table t3 add index 名称 (字段)
        
    

    组合索引最左原则

    explain 查询语句的匹配原则 索引长度越短越好

    慢查询

    show variables like '%slow%'

    show variables like '%long%'

    set global 变量名 = 值

  • 相关阅读:
    多线程
    python 面向对象
    selenium 安装 以及相关环境
    pyquery 库的方法
    Python 面向对象的补充
    python 面向对象
    想造轮子的时候,ctrl+f一下
    C#三层开发做学生管理系统
    C# 我是个传奇的 using
    啦啦啦 啦啦 啦 啦 啦 啦啦 啦 啦 啦
  • 原文地址:https://www.cnblogs.com/kaizi111/p/11773997.html
Copyright © 2020-2023  润新知