select函数

MySQL存储过程实例

做~自己de王妃 提交于 2019-11-27 11:22:51
(作者:陈玓玏) 定义 存储过程在我的理解里,类似函数的定义,设定好了函数的输入、输出参数、类型,写好了流程,存在数据库里,想用的时候随时可以调用,不需要重新写sql语句,效率很高。而且一般的sql语句间没有逻辑控制,利用存储过程却可以完成很复杂的逻辑控制,加上优化的sql算法,灵活性和功能性都大大提高。 存储过程的结构 语法:CREATE PROCEDURE 过程名([[IN|OUT|INOUT] 参数名 数据类型[,[IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过程体 参数 存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用”,”分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT: IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 OUT:该值可在存储过程内部被改变,并可返回 INOUT:调用时指定,并且可被改变和返回 在哪里定义?在哪里执行? 我用的是MySQL-Front,在数据库名上点击右键,新建过程就可以创建存储过程,在数字1标记的地方点击右键,新建过程,创建存储过程,在数字2标记的地方调用存储过程,当然,也可以通过python连接数据库来调用,在数字3标记的地方查看运行结果。 有例子吗? -- 输入参数例子 CREATE PROCEDURE in

Day33 并发编程(三) 线程池进程池,协程

泪湿孤枕 提交于 2019-11-27 10:41:29
1.进程池和线程池   开进程和开线程都需要消耗资源,只不过线程相比进程耗费的资源较小,但是计算机的硬件是有限制的,我们不能无限制的去开启进程或者线程.进程池和线程池能帮助我们在计算机承受的范围内最大限度的利用计算机 什么是池   在保证计算机硬件安全的情况下最大限度的利用计算机   池其实是降低了程序的运行效率,但是保证了计算机硬件的安全 怎么使用池   我们首先定义一个池子,在里边放入固定数量的进程或线程,只要有任务来了,就派一个进程或线程去处理任务,如果固定数量的进程或线程使用完了,那么接下来的任务就在外面等待,直到有进程或线程的任务执行完毕,外面的任务才可以拿到空闲的进程或线程执行,这样我们既可以同时使用多个进程或线程,又可以保证计算机硬件不会因为任务过多而导致死机等情况 注意:池子中的进程或线程的数量是固定的,可以自己定义数量,但是里边的进程或线程是不会动态改变的.例如工厂中有5个工人,一堆任务过来,他们只能同时执行5个,一个工人做完一个任务之后再做另一个任务,任务在变,但是工人是不会变的,即虽然任务在变,但是进程或线程只会创建一次,执行多少任务还是那几个,这样也节省了反复开闭进程线程的时间 #1 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor:

CASE WHEN 及 SELECT CASE WHEN的用法

江枫思渺然 提交于 2019-11-27 08:09:24
Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。 还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。 --比如说,下面这段SQL,你永远无法得到“第二类”这个结果 CASE WHEN col_1 IN ( 'a' , 'b' ) THEN '第一类' WHEN col_1 IN ( 'a' ) THEN '第二类' ELSE '其他' END 下面我们来看一下,使用Case函数都能做些什么事情。 一,已知数据按照另外一种方式进行分组,分析。 有如下数据:(为了看得更清楚,我并没有使用国家代码,而是直接用国家名作为Primary Key) 根据这个国家人口数据,统计亚洲和北美洲的人口数量。应该得到下面这个结果。 解决这个问题,你会怎么做?生成一个带有洲Code的View是一个解决方法,但是这样很难动态的改变统计的方式

记录_20190814

痴心易碎 提交于 2019-11-27 07:22:13
其实导出Excel不用渲染太多样式的,就分配好适应的长宽比例即可;SQLYog就是这样的 =》想我以前写导出的时候,花了很多时间写代码渲染Excel的样式,这其实都没啥必要,用户下载下来后,自己去调岂不更加方便 close()方法都会抛出一个IOException,所以我们要么写在try里面,要么方法抛出异常,然后代码写在finally里面 map.keySet().containsAll(columnList) String fileName = "商品信息表"+ System.currentTimeMillis() +".xlsx"; String fileName = "商品信息表" + System.currentTimeMillis() + ".xlsx"; =》两种书写方式比较一下 controller方法形参如果写了一个实体类,即使前台什么也不传递,这个对象也会被默认实例化的 前台调用后台接口导出Excel 注意:这里是不能用ajax的 1.window.location.href = ‘接口地址’  和在浏览器输入接口地址一样,可以下载excel文件.但是缺点是无法执行POST请求 2、利用表单提交,这样就可以做post请求,由于后台返回的信息就是excel数据,所以传到前台就直接变成下载了 Date和Calendar,为什么Date可以直接转化为Calendar

leetcode Sql题目总结 第二弹~

心已入冬 提交于 2019-11-27 07:12:11
1, 编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。 +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 | 200 | | 3 | 300 | +----+--------+ 例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。 +------------------------+ | getNthHighestSalary(2) | +------------------------+ | 200 | +------------------------+ CREATE FUNCTION getNthHighestSalary(N INT ) RETURNS INT BEGIN DECLARE P INT DEFAULT N-1; SET P = N-1; IF (P<0) THEN RETURN NULL ; ELSE RETURN ( SELECT IFNULL ( ( SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT P, 1 ), NULL ) AS SecondHighestSalary ); END

mysql存储过程详解以及PHP调用MYSQL存储过程实例

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

MySQL存储过程中的IN,OUT,INOUT类型 用法

天大地大妈咪最大 提交于 2019-11-27 06:19:55
MySQL存储过程中有IN,OUT,INOUT类型 ----------------------------------- ## IN IN参数只用来向过程传递信息,为默认值。 ## MySQL存储过程"in"参数:跟C语言的函数参数的值传递类似,MySQL存储过程内部可能会修改此参数, ## 但in类型参数的修改对调用者(caller)来说是不可见的(not visible) mysql>use test; mysql> drop procedure if exists pr_param_in; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> delimiter // mysql> create procedure pr_param_in(in id int) -> begin -> if (id is not null) then -> set id=id+1; -> end if; -> select id as id_inner; -> end; -> // Query OK, 0 rows affected (0.03 sec) mysql> delimiter ; mysql> set @id=10; Query OK, 0 rows affected (0.00 sec) mysql> call pr

MySQL中concat函数 concat_ws函数 group_concat函数 repeat

☆樱花仙子☆ 提交于 2019-11-27 05:36:04
MySQL中concat函数 使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql> select concat('11','22','33'); +------------------------+ | concat('11','22','33') | +------------------------+ | 112233 | +------------------------+ 1 row in set (0.00 sec)

第四章 数据查询基础

帅比萌擦擦* 提交于 2019-11-27 04:51:59
1、数据查询机制 l 查询产生一个虚拟表。 l 看到的是表形式显示的结果,但结果并不真正存储。 l 每次执行查询只是从数据表中提取数据,并按照表的形式显示出来。 注:可简单理解为查询是针对已存在的数据进行 “筛选”。 2、基本查询语法 SELECT < 列名 > FROM < 表名 > [WHERE < 查询条件表达式 >] [ORDER BY < 排序的列名 >[ASC 或 DESC]] 查询所有的语法 SELECT * FROM 表名 查询部分列(某几列) SELECT 列 1 ,列 2 , …… FROM 表名 查询某几行某几列) SELECT 列 1 , 列 2... FROM 表名 WHERE 条件 ( 约束行,用于选择行 ) 查询中使用别名【 AS 或者 = 】 n 使用 AS SELECT 列 1AS 别名 1 ,列 2 AS 别名 2 ... FROM表名 WHERE条件 n 使用 = 命名别名: SELECT 别名 = 列 1 , 别名 = 列 2 FROM表名 WHERE 条件 使用”+”连接两列的值,注意: ² + 连接的 数据类型 必须兼容 ² 如果 + 连接字符型数据,结果为字符串数据的连接 ² 如果 + 连接数值型数据,结果为数值的和 空值的查询 ——条件 n IS NULL空值 n IS NOT NULL不为空,非空 使用常量列 SELECT 列 1

Mysql动态SQL

穿精又带淫゛_ 提交于 2019-11-27 02:20:12
mysql动态SQL 解决 Error querying database. Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.zwt.mapper.AddressesMapper.queryTrim'. It's likely that neither a Result Type nor a Result Map was specified. 的问题 在sql语句加上返回的类型 : resultType="com.zwt.pojo.Addresses" 缓存 两次查询仅有一次调用SQL语句,第二次从缓存中命中。 SqlSession sqlSession = MybatisUtil.getSession(); AddressesMapper mapper = sqlSession.getMapper(AddressesMapper.class); ​ List<Addresses> addresses = mapper.listAll(); System.out.println(addresses); List<Addresses> addresses2 = mapper