mysql函数

MySQL批量插入数据脚本

坚强是说给别人听的谎言 提交于 2020-02-07 04:14:08
函数和存储过程:用sql脚本语言所写的数据库编程,函数有返回值,存储过程无返回值 往表里插入1000W数据: 1、建表 2、设置参数log_bin_trust_function_creators 3、创建函数,保证每条数据都不同(DELIMITER 表 示 定 义 m y s q l 语 句 以 表示定义mysql语句以 表 示 定 义 m y s q l 语 句 以 为结束符) 随机产生字符串 随机产生部门编号 4、创建存储过程: 创建往emp表里插入数据的存储过程 创建往dept表中插入数据的存储过程 5、调用存储过程 dept(mysql结束符改回;) emp 来源: CSDN 作者: 昔拉天使 链接: https://blog.csdn.net/qq_39885372/article/details/104199003

MySQL优化:explain和show profile

六眼飞鱼酱① 提交于 2020-02-06 18:36:36
前言 要想优化SQL语句,首先得知道SQL语句有什么问题,哪里需要被优化。这样就需要一个SQL语句的监控与量度指标,本文讲述的 explain 和 show profile 就是这样两个量度SQL语句的命令。 本文主要基于 MySQL5.6 讲解其用法,因为之后的MySQL版本会去掉 show profile 功能。 SQL脚本 本篇使用的表结构以及数据如下 /*Table structure for table `dept` */ CREATE TABLE `dept` ( `deptno` int(2) NOT NULL, `dname` varchar(15) DEFAULT NULL, `loc` varchar(15) DEFAULT NULL, PRIMARY KEY (`deptno`) USING BTREE, UNIQUE KEY `index_dept_dname` (`dname`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; /*Data for the table `dept` */ insert into `dept`(`deptno`,`dname`,`loc`) values (10,'ACCOUNTING','NewYork'), (20,'RESEARCH','Dallas')

mysql数据库命令

拥有回忆 提交于 2020-02-06 05:19:02
Day01 : select * from SPI; -- 查询 SPI 表中的所有字段 select * from SPI where num>90 -- 语句后面的分号加不加都一样 select componentid from SPI -- 查询表中的一列数据 select DISTINCT componentid from SPI -- 排出本列中的重复数据,只显示一条 select * from SPI where componentid=4 AND num = 90; -- AND 是两个条件必须同时满足即可 select * FROM SPI where num = 100 OR projectid = 10; -- OR 是两个条件满足一个即可 select * from SPI ORDER BY num ASC; -- 按照 num 升序 ( 从小到大 ) 排列,默认就为升序,所以不写也是升序的效果 select * from SPI ORDER BY projectid DESC,num ASC -- 意思是先按照前面的字段降序排列 (projectid) ,然后再升序排列后面字段中的数据 (num) -- 添加数据 Insert into SPI VALUES(095,7,13,110); select * from SPI where supplyid =

mysql(2)

爷,独闯天下 提交于 2020-02-05 21:27:11
1、DQL查询数据 1.1、DQL (Data Query LANGUAGE : 数据查询语言) 所有的查询操作都用它 Select 简单的查询,复杂的查询它都能做~ 数据库中最核心的语言,最重要的语句 使用频率最高的语句 1.2、指定查询字段 SELECT * FROM student SELECT * FROM result -- 查询指定字段 SELECT ` studentNo ` , ` studentname ` FROM student -- 别名 给结果起一个名字 SELECT ` studentNo ` AS 学号 , ` studentname ` AS 姓名 FROM student -- 函数 Concat(a,b) SELECT CONCAT ( '姓名:' , studentname ) AS 新名字 FROM student 语法: SELECT 字段,... FROM 表 去重 作用:去除SELECT 查询出来的结果中重复的数据,重复的数据只显示一条 -- 去重 SELECT * FROM result SELECT ` studentno ` FROM student SELECT DISTINCT ` studentno ` FROM student 数据库的列 SELECT VERSION ( ) -- 查询系统版本 SELECT 90 - 2

MySQL经纬度距离查询

与世无争的帅哥 提交于 2020-02-05 20:14:02
在实际需求中,会有按某一坐标点查询其指定范围内的符合条件的数据,数据库中记录了数据的经纬度,在给出某一点位之后,需要我们动态计算其与其它信息的距离,然后筛选。 一个实例SQL如下: 注意:其中point字段类型为 point(mysql 5.6.1 增加了对空间数据支持功能,新增了st_*相关函数,可计算两个地理坐标点的距离) 参数:经度112.5590670000000000 纬度37.8021270000000000 (其它信息: AreaCode = '140213' distance<100000 结合实际情况进行追加) SELECT * FROM (SELECT name, Code, Address, Longitude, latitude, CONVERT(st_distance(point(112.5590670000000000, 37.8021270000000000), point) * 111195, DECIMAL(10, 2)) as distance FROM (SELECT Name, Address, Longitude, Latitude, point(Longitude, Latitude) point FROM lift WHERE AreaCode = '140213' AND Longitude != '0

mysql之分组数据

最后都变了- 提交于 2020-02-05 19:07:23
GROUP BY 查找出每一个vent_id对应了几条记录。 GROUP BY 子句可以包含任意数目的列。这使得能对分组进行嵌套, 为数据分组提供更细致的控制。 如果在 GROUP BY 子句中嵌套了分组,数据将在最后规定的分组上 进行汇总。换句话说,在建立分组时,指定的所有列都一起计算 (所以不能从个别的列取回数据)。 GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式 (但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在 GROUP BY 子句中指定相同的表达式。不能使用别名。 除聚集计算语句外, SELECT 语句中的每个列都必须在 GROUP BY 子 句中给出。 如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列 中有多行 NULL 值,它们将分为一组。 GROUP BY 子句必须出现在 WHERE 子句之后, ORDER BY 子句之前。 过滤分组:HAVING MySQL为此目的提供了另外的子句,那就是 HAVING 子句。 HAVING 非常类似于 WHERE 。事实上,目前为止所学过的所有类型的 WHERE 子句都可以用 HAVING 来替代。唯一的差别是 WHERE 过滤行 ,而 HAVING 过滤分组 。 select vent_id,count(*) as count from h_info group by

MySQL 基础 简单操作

三世轮回 提交于 2020-02-05 03:07:52
一、数据库基础 什么是数据库 数据库:保存有组织的数据的容器(通常是一个文件或一组文件)。 表:是一种结构化的文件,可以用来存储数据(类似Excel表)。数据库就是由成千上万个表组成。 什么事SQL   sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。 SQL的语句规范: <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写; <2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。 <3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。 什么是Mysql Mysql:是一种数据库软件,用来操作数据库。 MySQL的优点: MySQL开放源代码,一般都可以免费使用,成本低。 执行效率高。 操作简单,易学。 二、连接数据库 连接数据库需要以下信息: 主机名:本地一般为(localhost) 端口号:MySQL默认端口为:3306 用户名和密码: 三、数据类型 常见的数值类型 作用:id,年龄,工资等需要做运算的变量 BIT类型 BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位。 注意:对于位字段需要使用函数读取    bin()显示为二进制   

MySQL拼接字符串,GROUP_CONCAT 值得拥有

早过忘川 提交于 2020-02-04 11:26:06
原文: MySQL拼接字符串,GROUP_CONCAT 值得拥有 上一篇文章 跨表更新,看到自己写的SQL像个憨憨 写了关于跨表个更新的内容。一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了,静悄悄的来了!!! 领导想要查看每个 performance 下都有谁,同时要求将这些人的名称要逗号拼接成一个字符串,也就是说要得到下面的结果: 要将结果集中某个指定的列进行字符串拼接,这要怎么做呢?主角闪亮✨登场 GROUP_CONCAT(expr) 在 Mysql 官方文档 中,该函数被放在聚合函数章节,如果你要按照指定字段分组拼接,就要配合关键字 GROUP BY 来使用的 定义 该函数返回一个字符串结果,该字符串结果是通过分组串联的 非NULL值 。如果没有非NULL值,则返回NULL。完整语法如下: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) What? 这个语法看着太复杂了吧,别着急,下面会用例子慢慢说明逐一验证滴 使用案例 先完成文章开头的需求

MySQL拼接字符串,GROUP_CONCAT 值得拥有

亡梦爱人 提交于 2020-02-04 09:38:21
上一篇文章 跨表更新,看到自己写的SQL像个憨憨 写了关于跨表个更新的内容。一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了,静悄悄的来了!!! 领导想要查看每个 performance 下都有谁,同时要求将这些人的名称要逗号拼接成一个字符串,也就是说要得到下面的结果: 要将结果集中某个指定的列进行字符串拼接,这要怎么做呢?主角闪亮✨登场 GROUP_CONCAT(expr) 在 Mysql 官方文档 中,该函数被放在聚合函数章节,如果你要按照指定字段分组拼接,就要配合关键字 GROUP BY 来使用的 定义 该函数返回一个字符串结果,该字符串结果是通过分组串联的 非NULL值 。如果没有非NULL值,则返回NULL。完整语法如下: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) What? 这个语法看着太复杂了吧,别着急,下面会用例子慢慢说明逐一验证滴 使用案例 先完成文章开头的需求: SELECT performance, GROUP

mysql中文排序

三世轮回 提交于 2020-02-04 07:19:04
1. 在MySQL中,我们经常会对一个字段进行排序查询,但进行中文排序和查找的时候,对汉字的排序和查找结果往往都是错误的。 这种情况在MySQL的很多版本中都存在。 如果这个问题不解决,那么MySQL将无法实际处理中文。 出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。 2.解决方法: 对于包含中文的字段加上”binary”属性,使之作为二进制比较,例如将”name char(10)”改成”name char(10)binary”。 如果你使用源码编译MySQL,可以编译MySQL时使用 –with–charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了(默认的是latin1)。也可以用 extra-charsets=gb2312,gbk 来加入多个字符集。 3. 如果不想对表结构进行修改或者重新编译MySQL,也可以在查询语句的 order by 部分使用 CONVERT 函数。 比如 select * from mytable order by CONVERT(chineseColumnName USING gbk); UTF8 默认校对集是 utf8_general_ci , 它不是按照中文来的