mysql函数

MySQL NULL 使用带来的坑

久未见 提交于 2019-12-02 23:32:36
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 NULL 无值(no value),它与字段包含 0 、空字符串或仅仅包含空格不同。 数据库字段允许空值,会遇到一些问题,这里整理一些 MySQL 设置列允许为 NULL 带来的坑。 数据准备: CREATE TABLE `teacher` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; insert into `teacher` (`id`, `name`, `age`) values('1','seven','18'); insert into `teacher` (`id`, `name`, `age`) values('2', NULL,'20'); insert

MySQL 字段类型介绍

亡梦爱人 提交于 2019-12-02 23:31:22
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 注意点: 数值类型:注意字段范围的选择。 日期和时间类型:注意 DATETIME 和 TIMESTAMP 的区别。 字符串类型:用的最多的是 CHAR 和 VARCHAR 类型,注意两者的区别,其他类型在互联网业务中不建议使用。 数值类型 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709

使用pandas操作mysql数据

匿名 (未验证) 提交于 2019-12-02 22:11:45
代码如下: #导入 import pymysql import pandas as pd from sqlalchemy import create_engine #连接mysql engine = create_engine('mysql+pymysql://root:@localhost:3306/lg') #查询 sql = ''' select LGL_LSKU,LGL_NAME_LOCAL,LGL_RAW_ADDRESS from kfc limit 5; ''' df = pd.read_sql_query(sql,engine) print(df) 使用loc函数 sql_1 = ''' select LGL_LSKU,LGL_NAME_LOCAL,LGL_RAW_ADDRESS,LGL_EPISODE, LGL_EPISODE_DATES,LGL_POI_NOTES,LGL_LSKU_HERIT from kfc; ''' df_1 = pd.read_sql_query(sql_1,engine) df_1.loc[3:6] #使用loc函数查看[3:6]的数据 two_five_ten = [2,5,10] df_1.loc[two_five_ten] 文章来源: 使用pandas操作mysql数据

php脚本l导出mysq的blob格式数据-hex和unhex的用法

匿名 (未验证) 提交于 2019-12-02 22:11:45
前言 之前我们介绍过使用 PHP脚本导出sql语句 到测试服中的流程和注意点, 之前有个问题还没有解决的,就是mysql中blob类型数据是导不成功的。 这次找到了解决方法,这里记录一下。 什么是blob类型? 我们在【 mysql常用数据类型中 】介绍过了blob类型,这里也说一下: 在MySQL中, Blob 是一个二进制的对象,它是一个可以存储大量数据的容器(如图片,音乐等等),且能容纳不同大小的数据。 在MySQL中有四种Blob类型,他们的区别就是可以容纳的信息量不容分别是以下四种: ①TinyBlob类型 最大能容纳255B的数据 ②Blob类型 最大能容纳65KB的 ③MediumBlob类型 最大能容纳16MB的数据 ④LongBlob类型 最大能容纳4GB的数据 场景 我们的一个表有个字段的数据是存储了一些会员信息,这些信息是由几个字段组成,然后json_encode 并且压缩后存储在字段类型为blob的字段中,这些信息以blob格式存储在数据库中,直接用sql查询出来都是乱码,无法显示,不信你可以尝试查询下。 当我们导出成sql语句时,如果不做特殊处理,这些字段也会是乱码,会导致sql结构破坏掉,不能完整执行。 解决方案 找了下资料,发现mysql有两个函数,是可以格式化这些二进制数据的。 下面是两个函数的介绍 HEX 和UNHEX

关于php7.0下Sqli-labs搭建的小问题

匿名 (未验证) 提交于 2019-12-02 22:10:10
由于前文中kali版本较新,默认安装的是php7.0(this is the problem) PHP 5 的使用者可以使用 mysql extension,mysqli 和 PDO_MYSQL ,但是PHP 7移除了mysql extension,只剩下后面两种选择。 因此在Sqli-labs与数据库连接,查询的时候,会出现一些问题。 我们安装Sqli-labs的时候必需把相关数据库的函数改为mysqli的形式 一开始点击setup db的时候,会停留在页面 进入目录查看代码 cd /var/www/html/sqli-labs/sql-connections 目录下方有7个文件 ###步骤 ###0x00 修改函数 把 mysql_xxx() 全部修改为 mysqli_xxx 使用sed+grep的结合 sed -i "s/mysql_/mysqli_/g" `grep mysql_ -rl ./` ###0x01 修改函数参数 由于mysql_error()函数下,连接是可选项,mysqli_error()下,connection变为必需项,因此需要把mysql_error()改为mysql_error($con) sed -i s/"mysql_error()"/"mysqli_error(\$con)"/g `grep "mysql_error()" -rl ./`

Mysql--函数

匿名 (未验证) 提交于 2019-12-02 22:06:11
函数定义:是一组预先定义好的SQL语句集合,理解为批处理语句。 ①提高代码的重用性 ②简化操作 ③减少编译次数和减少和数据库的连接次数,提高效率 ④安全性调高 函数和存储过程的区别 函数:有且仅有一个返回值,适合作为数据处理后的一个标识。 存储过程:返回值多种(可有可无)做批量插入和批量更新。 一、语法定义 Create function 函数名(参数列表) returns 返回类型 Begin 函数体; End 注意: ①参数列表:函数名 参数类型 ②函数体:必须含有return 语句,return的位置随意,但是建议放在最后。 ③函数体之后一句,可以省略begin―end语句 ④注意函数体内需要用”;”结尾,结合delimiter使用 二、调用方式 Select 函数名(参数列表) 注意:参数列表结合变量的使用 区别存储过程是使用call来调用的 三、查看函数和删除函数 1.查看函数 Show create function 函数名; 2.删除函数 Drop function 函数名; 四、举例说明 1.不含参数 返回员工个数count(*) 2.含有参数的 根据用户名返回salary工资 3.传入两个float值,返回两者之和 转载请标明出处: Mysql--函数 文章来源: Mysql--函数

MySQL必知应会-第23章-使用存储过程

匿名 (未验证) 提交于 2019-12-02 22:06:11
本章介绍什么是存储过程,为什么要使用存储过程以及如何使用存储过程,并且介绍创建和使用存储过程的基本语法。 需要MySQL 5 MySQL 5添加了对存储过程的支持,因此,本章内容适用于MySQL 5及以后的版本。迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。例如,考虑以下的情形。 为了处理订单,需要核对以保证库存中有相应的物品。 如果库存有物品,这些物品需要预定以便不将它们再卖给别的人,并且要减少可用的物品数量以反映正确的库存量。 库存中没有的物品需要订购,这需要与供应商进行某种交互。 关于哪些物品入库(并且可以立即发货)和哪些物品退订,需要通知相应的客户。这显然不是一个完整的例子,它甚至超出了本书中所用样例表的范围,但足以帮助表达我们的意思了。执行这个处理需要针对许多表的多条MySQL语句。此外,需要执行的具体语句及其次序也不是固定的,它们可能会(和将)根据哪些物品在库存中哪些不在而变化。那么,怎样编写此代码?可以单独编写每条语句,并根据结果有条217164 使用存储过程件地执行另外的语句。在每次需要这个处理时(以及每个需要它的应用中)都必须做这些工作。可以创建存储过程。存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。

MySQL命令:select查询语句

匿名 (未验证) 提交于 2019-12-02 22:06:11
SQL 中最常用的 SELECT 语句,用来在表中选取数据。 要记得的知识点如下: SELECT 语句格式:   SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; WHERE语句后:   排序:ORDER BY + ASC、DPSC SQL 内置函数和计算 子查询与连接查询 SELECT 语句的基本格式 SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; -- 查询某个表所有内容(如employee表) select * from employee; -- 查寻表中name、age的信息 select name,age from employee; 数学符号条件 =、>、<、>=、<=、between 逻辑符 AND、OR、 IN、NOT IN -- 筛选年龄大于25的人的名字和年龄 SELECT name,age FROM employee WHERE age > 25 ; -- 查找一个名字为 Mary 的员工的 name,age 和 phone SELECT name,age,phone FROM employee WHERE name = ‘ Mary ‘ ; -- 筛选出 age 小于 25,或 age 大于 30 SELECT name,age FROM employee WHERE age < 25 OR age > 30 ; -

Mysql存储过程

匿名 (未验证) 提交于 2019-12-02 22:06:11
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1). 增强SQL语言的功能和灵活性 :存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 标准组件式编程 :存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 较快的执行速度 :如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量

python读取word文档,插入mysql数据库实例

匿名 (未验证) 提交于 2019-12-02 22:06:11
表格内容如下: 1、实现批量导入word文档,取文档标题中的数字作为编号 2、除取上面打钩的内容需要匹配出来入库入库,其他内容全部直接入库mysql # wuyanfeng # -*- coding:utf-8 -*- # 读取docx中的文本代码示例 import docx import pymysql import re import os # 创建数据库链接 conn = pymysql.connect( host=‘rm-bp1vu5d84dg12c6d59o.mysql.rds.aliyuncs.com‘, port=3306, user=‘root‘, passwd=‘wYf092415*‘, db=‘pays‘, charset=‘utf8‘, ) # 创建游标 cursor = conn.cursor() #切片函数 def section(info,key,len11): a = len(info) print(a, type(a)) d = [] e = 0 g = -1 i = 0 task_class=[] while i < len(info): # for i in range(len(info)): # i+=1 print("i::::", i) try: #c = info.index("a", e) #print("c:::::", c) c =