mysql——关于varchar、char、text的设计
摘要:varchar和char都表示字符类型,各自的特点如下: 一、char: 1、固定长度 特点:当输入字符小于指定长度时,用空格填充 优点:检索速度快 缺点:占用较多内存或者硬盘 2、其他 范围255,取值或者设置时自动去除末尾空格, 二、varchar: 1、可变长度 特点:当输入字符小于指定长度时
阅读全文
mysql——练习
摘要:一、创建表,并建立约束 #!/usr/bin/env python # -*- coding:utf-8 -*- # create all tables from sqlalchemy.ext.declarative import declarative_base from sqlalchemy i
阅读全文
mysql——sqlAlchemy&ORM:多对多
摘要:多对多: 一、创建: 注意1:在关系表中设置外键,并且将关系表放在最前面,否则查询不到, 注意2:设置relationship时,需要使用关系表.__table__(), #!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy.ext
阅读全文
mysql——sqlAlchemy&ORM:一对多
摘要:一对多: (一)表的创建 步骤1、创建外键,建立一对多关系,建在多里 步骤2、创建关联,建在一或多里均可,与表结构无关,仅方便添加和查询 #!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy.ext.declarative impo
阅读全文
mysql——sqlAlchemy&ORM:单表
摘要:单表操作 (一)创建、删除单表 1、启动引擎: engine = create_engine(mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]) 2、生成SQLORM基类: Base = declarative_bas
阅读全文
mysql——sqlAlchemy&ORM:基本简介
摘要:ORM:对象关系映射,是一种程序技术,用于实现面向对象语言里不同类型系统的数据之间转换, sqlAlchemy:是python语言里的一种ORM框架,该框架建立在DBAPI之上,使用ORM实现数据库操作, 补充:简单的说,就是将对象转换成SQL,再使用数据API执行SQL并获取结果, 说明: 1、由
阅读全文
mysql——慢查询日志
摘要:mysql的日志文件系统中,提供多种日志文件:错误日志、通用日志(记录与客户端连接)、二进制日志(更改数据)、慢查询日志、innodb日志, 其中,慢查询日志:记录所有执行时间超过设定阈值的所有查询或不使用索引的查询。 一、与慢查询日志有关的全局变量 1、slow_query_log;是否开启慢查询
阅读全文
mysql——分页
摘要:关于分页的实现,有如下几种方式: 一、直接全文limit,搜索效率低, 二、先对索引列limit,定位nid,再根据nid筛选数据, 三、首先,前端记录并返回当前页码上数据的nid,然后根据目标页和当前页信息截取部分nid索引列,定位目标页数据nid,筛选数据, -- 功能描述: -- 若当前页97
阅读全文
mysql——索引(二)
摘要:这里详细说说关于索引的正确使用: 1、使用组合索引,即多列同时构成索引,需要遵循“最左前缀”法则,否则索引无效。 2、模糊搜索like…%:%开头的(%xxx)不走索引,%不开头的(xx%xx)可以走索引, 3、索引列加函数:列名上套函数(如:reverse(name)=‘xxx’)不走索引,列值上
阅读全文
mysql——索引(一)
摘要:一、什么是索引 可以把索引理解为一种特殊的目录,能加快数据库的查询速度,它也是一类文件,占用一定的物理空间, 确切说,索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可以快速定位到特定值, mysql常用的索引结构有:b+tree和hash两种, 二、索引的分类及相关操作 1、普通索引
阅读全文
mysql——存储过程动态执行sql语句
摘要:mysql中,使用存储过程,动态执行sql语句,可以防止sql注入。 一、基本原理 二、优化使用 注意:其中@sqlstr、@sqlargs属于用户变量,当用户退出后消失, -- sql语句的动态执行,可以防止sql注入, -- 原理 delimiter \\ drop procedure if e
阅读全文
mysql——条件、循环语句
摘要:一、条件语句 if……then elseif……then else end if; 二、循环语句,有三种 while……do…… repeat……until…… loop……leave…… -- loop delimiter \\ drop procedure if exists proc_loop
阅读全文
mysql——事务处理
摘要:一、事务处理 1、为了避免因意外产生不必要的损失,当语句集全部执行成功commit、执行失败rollback, 2、事务处理不是绑定在sql服务器,而是与sql引擎有关,只有innoDB和BDB支持事务, 二、mysql的事务处理 三、pymysql的事务处理 pymysql默认支持事务处理,当语句
阅读全文
mysql——函数
摘要:一、内置函数: 数据库内有许多内置函数,常用的有: 更详细的见官网:https://dev.mysql.com/doc/refman/5.7/en/functions.html 二、自定义函数: 与存储过程的不同:1、自定义函数有返回值,存储过程没有,2、存储过程可以返回结果集,函数不行,即:函数内
阅读全文
mysql——触发器
摘要:触发器,是与表操作有关的一个数据库对象,当触发器所在表上发生指定操作时,将调用该对象, 一、基本触发器 二、使用操作值的触发器 1、使用新值NEW:插入、更新 2、使用旧值OLD:删除、更新 三、常用的触发器有6中:插入前、插入后、更新前、更新后、删除前、删除后, -- 创建触发器:插入前 deli
阅读全文
mysql——存储过程(二)
摘要:一、in、out、inout 1、in:传入参数,在存储过程外部无法使用(如i1), 2、out:导入变量,在存储过程外的赋值无法导入存储过程(如p1),在存储过程内重新被赋值(如r1), 3、inout:兼具in和out的作用,可将存储过程外部的赋值带入存储过程内,重新设置后传出, -- 创建存储
阅读全文
mysql——存储过程(一)
摘要:存储过程,是在大型数据库系统中,为完成某一特定功能的sql语句集(类似于自定义函数),保存在数据库中, 使用时,通过指令call调用存储过程的名称并传递参数,经过一次预编译以后使用时,不需要再编译, 一、简单的存储过程 二、带参数的存储过程 注意: 1、存储过程的修改很麻烦,通常都是直接删除、重写,
阅读全文
mysql——视图
摘要:视图,是基于sql语句的结果集的可视化表,是一张虚拟表,在内存中临时存在, 当较长或较复杂的sql语句,多次重复使用时,可对其进行封装,创建一个视图,便于复用,
阅读全文
mysql——sql注入
摘要:SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令, SQL注入攻击是黑客对数据库进行攻击的常用手段之一,在tornado中,使用时需要注意: 一、直接使用字符串拼接,容易发生sql注入 下图为例,当输入红色字符串时,即便用户
阅读全文
mysql——外键
摘要:外键:一个实体(主表)的某个字段对应另一个实体(从表)的主键,表达一种约束关系。 一、创建\删除外键 (一)使用navicat添加外键: (二) sql语句设置外键: 1、创建表时直接设置 语法:constraint 外键名 foreign key(外键列) references 从表名(对应列)
阅读全文