SQL
kenhins
Java软件开发工程师
展开
-
mysql 分组获取每组某字段最小或最大值记录
mysql 5.8之后分组内排序被优化忽略了;要使用就需要加上 limit -- 商品列表 SELECT spu.spu_id, spu.NAME, sd.image, sd.description, sd.sku_id, sd.store_id, sd.mbr_price FROM spu spu原创 2021-03-04 14:23:22 · 1231 阅读 · 2 评论 -
一张800w的数据表,11s执行的SQL优化到1s?
操作: 查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段;原理: 减少回表操作;# sql插入数据,每运行一次数据翻倍!# insert data INSERT INTO z_test (name, age) SELECT MD5(RAND()), RAND(10000) FROM z_test# 结果,插入百万条数据只需28秒 select count(*) from z_test;# 模拟数据量为:八百多万原创 2021-01-04 17:33:54 · 320 阅读 · 0 评论 -
MySQL数据表字段繁体转简体
更新MySQL数据表字段繁体转简体 默认是繁体转简体 要简体转繁体:set j, set f互换就可以了-- 创建繁体转简体函数CREATE DEFINER=`root`@`localhost` FUNCTION prc_ftoj (old varchar(500)) RETURNS varchar(500) CHARSET utf8begin declare j VARCHAR(8000); declare f varchar(8000); .原创 2020-05-22 21:47:44 · 6154 阅读 · 0 评论 -
MYSQL利用存储过程清理所有表逻辑删除数据
MYSQL利用存储过程清理所有表逻辑删除数据注意每个表都必须统一由逻辑删除的标记字段status(维护的数据库不多的情况下可以隔一段事件手动执行一下)需要自动定时执行存储过程的,后期可以加个定时任务事件CREATE DEFINER=`root`@`localhost` PROCEDURE `del_data`()BEGIN DECLARE strClear VARCHAR(255); DECLARE done INT DEFAULT 0; #定义游标 DECLARE c原创 2020-05-22 11:45:44 · 746 阅读 · 0 评论 -
mysql 一个字段多个id逗号分隔关联查询
mysql 一个字段多个id逗号分隔关联查询关键点是:FIND_IN_SET、GROUP_CONCAT、GROUP BY-- mysql 查询逗号分隔的多个idselect t1.id,t1.chapter_id, t2.id,t2.name as bookVersionName, GROUP_CONCAT(t3.`name`) as chapterName, t4.id,t4.name as volumeName from co_course_pj as t1, co_book_ve原创 2020-05-11 09:29:39 · 4298 阅读 · 2 评论 -
mysql导出数据字典
mysql导出数据字典SELECT COLUMN_NAME 列名, COLUMN_TYPE 字段类型, IS_NULLABLE 是否为空, COLUMN_COMMENT 说明FROMINFORMATION_SCHEMA.COLUMNSwhere-- developerclub为数据库名称,到时候只需要修改成你要导出表结构的数据库即可table_schema ...原创 2020-01-02 15:57:41 · 291 阅读 · 0 评论 -
单列索引和多列索引性能对比,索引字段空值情况的处理
由于Contact表存在多个(单列)索引,造成Delete ,update ,insert操作时需要花费大量的时间删除索引和重建索引。通过把多个(单列)索引合并成一个(多列)索引后,测试得出Delete ,update ,insert操作时需要花费的时间大大缩短。由于多个(单列)索引合并成一个(多列)索引,可能会对之前单列索引字段的查询性能有影响,做了对比测试注意:My原创 2016-04-22 12:11:06 · 3970 阅读 · 0 评论 -
左链接与内连接的区别、左连接查询的两种查法
TABLE A ;TABLE B内连接:A INNER JOIN B ,在A中也有,在B中也有的数据才能查询出来左连接:A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有右连接与左连接相反原创 2016-04-21 23:11:52 · 5333 阅读 · 0 评论 -
sql语句使用记录
查询字段是否有select nickname from user where school_id="swiftv" group by nickname having count(*)>1;原创 2014-07-01 11:47:39 · 1111 阅读 · 0 评论 -
MySQL统计函数记录——按月、按季度、按日、时间段统计
按年汇总,统计:select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by date_format(col, '%Y');按月汇总,统计: select sum(mymoney) as totalmoney, count(*) as sheets from mytable group by da原创 2016-10-14 11:16:27 · 48451 阅读 · 1 评论 -
Mysql group by原理 having
在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据。比如有一个学生选课表,表结构如下:Table: Subject_SelectionSubject Semester Attendee---------------------------------ITB001 1 JohnITB001转载 2017-01-13 22:21:36 · 1509 阅读 · 1 评论 -
利用SQL函数实现几天前、两点之间的距离
BEGIN DECLARE n_lost_day int; DECLARE n_lost_hours int; DECLARE n_lost_minute int; set n_lost_day = date(new_date)-date(old_date); set n_lost_hours = hour(new_date)-hour(old_date); set n_原创 2017-05-25 17:40:55 · 862 阅读 · 0 评论 -
mysql 正则匹配内容查询、拼接sql语句
-- -- 广告评论删除-- SELECT count(ID) FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CONTENT REGEXP '[^0-9.]';-- -- -- SELECT * FROM t_article_comment WHERE CONTENT REGEXP "[0-9]{8}" and CO原创 2017-08-11 14:08:08 · 1763 阅读 · 0 评论 -
mysql 的DISTINCT、EXISTS、IN、GROUP BY..HAVING 用法记录
mysql 的DISTINCT (去掉重复) mysql 的EXISTS (存在于、 条件的字段,值均在括号中) mysql 的IN (在、 条件字段的在括号前,条件值在括号中) mysql 的GROUP BY..HAVING(分组,把字段值相同的统计出来,having 统计个数限制条件)GROUP BY..HAVING结合使用SELECT * from class;SELECT * fro原创 2017-10-27 21:18:59 · 1523 阅读 · 0 评论 -
mysql 删除重复的记录、A表字段更新到B表
-- A表字段更新为B表的字段值,条件A\B表通过id关联的记录update b_table as b set b.`name` = (select a.name FROM a_table as a where b.id=a.id) where EXISTS(select * from a_table as c where c.id=b.id); -- A表记录insert到B表,条件是B表不原创 2017-11-15 16:22:52 · 642 阅读 · 0 评论 -
事务的概念及事务的四个特征
事务就是一些的对数据库的操作:例如:添加数据、更新数据,删除数据,查询数据等操作:一个事务:{事务的边界(事务起点终点)}begin transaction--------------------insert(user);insert(course);delete(uid);seletAll();........等一系列数据库操作-------------原创 2016-04-21 23:24:53 · 2932 阅读 · 1 评论 -
mysql索引类型normal,unique,full text的区别
问题1:mysql索引类型normal,unique,full text的区别是什么?normal:表示普通索引unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为uniquefull textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 I原创 2016-05-14 15:24:33 · 6922 阅读 · 0 评论 -
Group by 和Having 的组合用法
select * from empolyee GROUP BY age having count(*)>0;select e.*,d.* ,count(e.employee_id) as num from empolyee as e, department as d where age=24 and e.department_id=d.department_idGROUP BY e.ag原创 2016-04-25 23:12:46 · 3043 阅读 · 0 评论 -
SQL语句
现在有个表:A(id ,name,regdate)B(id,groupid) C(id,name2)写出下面的SQL语句1.统计A表中每个月注册用户数2.统计A表中有姓名相同的用户数3.如果表A中有姓名相同的用户,把相同的查出,写入表C中4.A中ID有多个相同的数据,A中姓名相同的ID只保留注册时间最大的数据大家帮帮忙,写一下吧1select原创 2013-09-29 23:25:13 · 1791 阅读 · 0 评论 -
SQL按照日、周、月、年统计数据
SQL按照日、周、月、年统计数据--按日 select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date]) --按周quarter select sum(consume),datename(week,[date]) from consume_re原创 2014-01-12 22:34:21 · 6399 阅读 · 0 评论 -
SQL查询某字段最小值
SQL查询某字段最小值:(使用min() max())SELECT *FROM stutableWHERE (age IN (SELECT MIN(age) FROM stutable));SQL查询某字段最小值:(不使用min() max())例如数据表中有一列为工资,查询工资最高的,可以这么写语句:原创 2014-02-27 13:03:53 · 55958 阅读 · 0 评论 -
sql语句中如何将datetime格式的日期转换为yy-mm-dd格式
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm,整理了一下SQL Server里面可能经常会用到的日期格式转换方法SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 整理了一下SQL Serve原创 2014-03-07 22:38:00 · 26932 阅读 · 0 评论 -
mysql查询当天的所有信息
select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) and day(regdate)=day(now()) 这个有一些繁琐,还有简单的写法: 代码如下 select * from table where date(regdate) = curdate();原创 2014-09-23 22:08:13 · 1264 阅读 · 0 评论 -
课时统计开发过程sql使用记录
课时统计开发过程sql使用记录/*//消费时长统计select sum(duration) as totalDuration, sum(count) as number, date from statistics_duration_cu where school_id="test" and date >= "2014-9-28" and date <= "2原创 2014-10-17 12:51:01 · 1282 阅读 · 0 评论 -
mysql 计算时间毫秒
mysql> select unix_timestamp();+------------------+| unix_timestamp() |+------------------+| 1416453377 |+------------------+1 row in setmysql> select unix_timestamp() * 1000 +原创 2014-11-20 11:23:34 · 3832 阅读 · 0 评论 -
数据库日志配置文件
[root@ovp-5420-002 log]# cat /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sock# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0原创 2015-04-29 12:20:12 · 1013 阅读 · 0 评论 -
mysql日志详细解析
转自:http://pangge.blog.51cto.com/6013757/1319304主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出转载 2015-04-29 13:50:06 · 863 阅读 · 0 评论 -
mysql 删除语句几种常见的用法
根据表删除另一个表 DELETE删除多表数据,怎样才能同时删除多个关联表的数据呢?这里做了深入的解释: www.2cto.com 1、 delete from t1 where 条件 2、delete t1 from t1 where 条件 3、 delete t1 from t1,t2 where 条件 4、delete t1,t2 from t1,t原创 2015-06-24 09:47:02 · 31771 阅读 · 0 评论 -
sql生成删除多个表的sql语句再复制运行删除
sql生成删除多个表的sql语句再复制运行删除,已达到删除多表的数据-- SELECT CONCAT("UPDATE ", table_name, " SET school_id='dapeng';") as gosql FROM-- information_schema.tables-- WHERE-- table_schema = 'dapeng';-- UPD原创 2015-12-08 12:15:56 · 1535 阅读 · 0 评论 -
数据库适当添加索引进行查询优化
添加索引:显示数据表的已经添加了索引的字段show index from m3u8_content;用explain检测性能,语句为:explain select count(*) from m3u8_content where status=8;type由all变成了refexplain select count(*) from m3u8_co原创 2016-02-17 11:24:50 · 5442 阅读 · 0 评论 -
Linux启动/停止/重启Mysql数据库的方法
1、查看mysql版本方法一:status;方法二:select version();2、Mysql启动、停止、重启常用命令a、启动方式1、使用 service 启动:[root@localhost /]# service mysqld start (5.0版本是mysqld)[root@szxdb etc]# service mysql start (5.5.7版原创 2016-01-11 15:50:28 · 5286 阅读 · 0 评论 -
Navicat使用触发器-使用MySQL数据库
更新,插入、删除触发的SQL语句(防止冗余字段)原创 2014-08-21 09:10:09 · 4924 阅读 · 0 评论 -
Navicat 数据模型
Navicat 数据模型工具让你轻易以图形化方式创建一个关联式数据库。有了逆向工程,你可从现有的数据库创建概念模型,并图形化查看和编辑数据库的结构。除了从数据库创建概念模型,Navicat 数据模型工具也让你在模型和数据库之间比较和同步,并生成 SQL/DDL 脚本。这个新的 Navicat 数据模型工具已加入到 Navicat 的企业版和 Navicat Premium。出色原创 2013-10-24 15:11:49 · 8514 阅读 · 3 评论