09数据库补充

以前学Java的时候有记录过相关内容,所以本篇只对MySQL进行一些补充。

一. 在python里边操作MySQL

1) 引入模块

from pymysql import *

2) 创建Connection对象

  • 用于建立与数据库的连接
  • 创建对象:调用connect()方法

conn=connect(host='localhost',port=3306,user='root',password='xxx',database='xxx',charset='utf8')

其中port是数字类型,不需要单引号括起来

 

  • 对象的方法
    • close()关闭连接
    • commit()提交
    • cursor()返回Cursor对象,用于执行sql语句并获得结果

3) Cursor对象

  • 用于执行sql语句,使用频度最高的语句为select、insert、update、delete
  • 获取Cursor对象:调用Connection对象的cursor()方法

    cursor = conn.cursor()

  • 对象的方法
    • close()关闭
    • execute(operation [, parameters ])执行语句,返回受影响的行数,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句
    • fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组
    • fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回
  • 对象的属性
    • rowcount只读属性,表示最近一次execute()执行后受影响的行数
    • connection获得当前连接对象

4) 关闭conn,cursor对象

使用之后记得关闭

cursor.close()
conn.close()

二. 参数化防止sql注入

1) sql语句的参数化,可以有效防止sql注入

2) 此处不同于python的字符串格式化,全部使用%s占位

find_name = input("请输入物品名称:")
params = [find_name]

# 执行select语句,并返回受影响的行数:查询所有数据

count = cs1.execute('select * from goods where name=%s', params)

三. 视图

1.基本概念

1)通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

2)视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);

3) 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;

2. 操作视图

1)创建视图

create view 视图名称 as select语句;

2)查看视图

show tables;

3)使用视图,它只有查询功能

select * from v_stu_score;

4)删除

drop view 视图名称;

3. 视图的作用

1)提高了重用性,就像一个函数

2)对数据库重构,却不影响程序的运行

3)提高了安全性能,可以对不同的用户

4)让数据更加清晰

二.索引

1)索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。

2)目的:提高查询效率

3)使用

  • 查看索引

    show index from 表名;

  • 创建索引
    • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
    • 字段类型如果不是字符串,可以不填写长度部分
    • create index 索引名称 on 表名(字段名称(长度))
  • 删除索引:

    drop index 索引名称 on 表名;

4) 数据库中的主键、外键也使用了索引

5) 注意:

建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。建立索引会占用磁盘空间

 

posted @ 2019-02-15 19:43  菜白小系瓦  阅读(162)  评论(0编辑  收藏  举报