mysql函数

python面试题3

一世执手 提交于 2019-12-09 23:02:35
如何做一个成功的python后端开发工程师 看到“如何面试Python后端工程师”这个问题下一位大牛罗列的问题,感觉挺有价值。现在记在这里,找出这些问题的答案,持续更新。 ################################################# 一 . 语言 1.推荐一本看过最好的python书籍? 拉开话题好扯淡 目前所知道的,看过的就是《Python 核心编程》(第二版),《Flask》 2.谈谈python的装饰器,迭代器,yield? 2.1 装饰器,这篇博文说的很细致,总的来说,装饰器是对函数的一种通用处理方法。 http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 2.2 迭代器,生成器 http://www.cnblogs.com/kaituorensheng/p/3826911.html 带有 yield 的函数在 Python 中被称之为 generator(生成器) xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器. 2.3 yield https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 函数中有yield语句,这个函数就是一个

mysql存储过程整理

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

mysql having与where 区别与用法

元气小坏坏 提交于 2019-12-09 14:21:51
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。 SQL实例: 一、显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中 的不同字段(一或多条记录)作运算。 二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region HAVING SUM(area)>1000000 在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。 相反,having子句可以让我们筛选成组后的各组数据 mysql判断某个字段的长度: select home_page from aaa表 where char_length(trim(home_page))<10 and char_length(trim(home_page))>1;

scrapy异步存储mysql

徘徊边缘 提交于 2019-12-08 22:21:40
piplines.py class DuoTestPipeline(object): def __init__(self,db_pool): self.db_pool=db_pool @classmethod #从setting中读取数据 def from_settings(cls, settings): db_params = dict( db=settings.get('MYSQL_DB_NAME'), host=settings.get('MYSQL_HOST'), port=settings.get('MYSQL_PORT'), user=settings.get('MYSQL_USER'), passwd=settings.get('MYSQL_PASSWORD'), charset=settings.get('MYSQL_CHARSET'), use_unicode=True, # 设置游标类型 cursorclass=pymysql.cursors.DictCursor ) # 创建连接池 db_pool = adbapi.ConnectionPool('pymysql', **db_params) return cls(db_pool) def process_item(self, item, spider): #把要执行的sql放入连接池 query=self

MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法

你离开我真会死。 提交于 2019-12-08 13:35:46
https://blog.csdn.net/ty_soft/article/details/6940190 原因分析: 因为CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP FUNCTION等语句都会被写进二进制日志,然后在从服务器上执行。但是,一个执行更新的不确定子程序(存储过程、函数、触发器)是不可重复的,在从服务器上执行(相对与主服务器是重复执行)可能会造成恢复的数据与原始数据不同,从服务器不同于主服务器的情况。 为了解决这个问题,MySQL强制要求: 在主服务器上,除非子程序被声明为确定性的或者不更改数据,否则创建或者替换子程序将被拒绝。 这意味着当创建一个子程序的时候,必须要么声明它是确定性的,要么它不改变数据。 声明方式有两种, 第一种:声明是否是确定性的 DETERMINISTIC和NOT DETERMINISTIC指出一个子程序是否对给定的输入总是产生同样的结果。 如果没有给定任一特征,默认是NOT DETERMINISTIC,所以必须明确指定DETERMINISTIC来声明一个子程序是确定性的。 这里要说明的是:使用NOW() 函数(或它的同义)或者RAND() 函数不会使一个子程序变成非确定性的。对NOW()而言

PHP用递归返回无限级分类回字符串或数组实例

夙愿已清 提交于 2019-12-08 09:24:59
在栏目比较多的网站中,经常会用到无限分类,本文我们来分享一个用php递归实现的无限分类实例,实例的返回值可以选择是字符串还是数组,很实用。 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。 Mysql 首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。 class表结构: CREATE TABLE IF NOT EXISTS `class` ( `id` mediumint(6) NOT NULL AUTO_INCREMENT, `title` varchar(30) NOT NULL, `pid` mediumint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 插入数据后,如图: PHP 根据不同的需求,我们提供两种不同格式的自定义函数,一种是返回字符串,一种是返回数组,两种函数都使用了递归方法

MySQL数据库 上

流过昼夜 提交于 2019-12-08 05:21:29
MySQL数据库 (上) MySQL数据类型:数值类型、日期和时间类型、字符串类型 1、数值类型 注:BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表 类型 大小 范围(有符号) 范围(无符号) 用途 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 551 615) 极大整数值 FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值 DOUBLE 8 字节 (

Mysql修改设置root密码的命令及方法

為{幸葍}努か 提交于 2019-12-07 18:21:16
Mysql数据库是 PHP网站开发 必不可少的组合,通常PHP连接Mysql都是通过root用户名和密码连接,Mysql在安装时root初始默认密码为空,在安装使用PHP开源系统时,都需要填写连接Mysql数据库的用户名和密码,此时当你忘记了Mysql的root密码或没有设置Mysql的root密码时,就必须要修改或设置Mysql的root密码,这个问题对于PHP入门学习者来说也是个头大的问题,其实修改Mysql的root密码有很多方法,可以利用Mysql工具,也可以使用Mysql更改root密码的命令来实现。    准备工作   在使用Mysql相关工具或Mysql命令来修改root密码之前请确保你已启动了Mysql服务,如果没有启动Mysql服务,请在DOS模式下输入 1 net start mysql 即可。    Mysql修改root密码的常用工具    使用phpmyadmin来更改root密码 如何安装配置phpmyadmin?   使用phpmyadmin来更改Mysql的root密码非常方便,安装配置好phpmyadmin后,首先登陆管理界面,点击右侧修改密码链接,输入你要修改的Mysql的root新密码,最后点击执行即可,如图: 使用phpmyadmin修改mysql的root密码  

MySQL_数据查询

可紊 提交于 2019-12-07 16:12:30
目录 1.查看数据的两种方法 2.查看数据并进行筛选(where) 3.不查看重复记录(distinct),空值,非空值 5.查看指定行(limit) 6.模式匹配(like) regexp 6.范围查询(between and) 7.逻辑运算符查询 8.order by 子语句(排序) 9.group by 子语句(聚合函数) count()的用法 having(过滤) select <子句1> from <子句2> [where<表达式1>] [group<字句3>] [having<表达式2>] [order by<字句4>] [limit<子句5>] [union<操作符>] 1.查看数据的两种方法 select 字段名 from 表名; 查看多指定的字段 select 字段名,字段名 from 表名 2.查看数据并进行筛选(where) select 字段名 from 表名 where 字段名=字段值; 例如: select name from student where xb='f'; 我查看student表中,关于记录name(姓名)的字段 但是他要满足xb(性别)为f(男) 3.不查看重复记录(distinct),空值,非空值 不查看重复记录,多字段无效 select distinct 字段名 from 表名; 查看含有空值的记录 select *from 表名

数据库表分组取top n的sql操作

和自甴很熟 提交于 2019-12-07 13:26:21
不同的数据库类型有不同的方法,这取决于每种数据库都有自己独有的内置方法。但也有通用sql实现的方法。 测试实例如下,环境mysql。 create table tb (a int,b int); insert into tb values(1,15); insert into tb values(1,53); insert into tb values(1,21); insert into tb values(1,12); insert into tb values(1,77); insert into tb values(2,32); insert into tb values(2,8); insert into tb values(2,29); insert into tb values(2,75); insert into tb values(2,46); insert into tb values(2,81); insert into tb values(3,65); insert into tb values(3,17); insert into tb values(3,59); insert into tb values(3,26); insert into tb values(3,43); 这里只有两列a和b。 以a列分组,取b中最大值。 mysql> select