随笔分类 - MySQL/PostgreSQL数据库知识
摘要:一、order by case when 理解 —— 根据一个字段的多个值进行排序 先看例子: 查询 user 表,根据用户状态排序。状态为1的排在最前面 >其次是状态为0 >状态为4 >状态为3 >状态为2 >状态为6 >状态为其他的 select * from user where......
阅读全文
摘要:大表分表后每个表的结构相同,可以用sql的union。比如a,b表结构相同可以通过union来联接 select * from a union all select * from b where ... 一、Union和Union All到底有什么区别 Union:对两个结果集进行并集操作,不包括重
阅读全文
摘要:在数据库的增删改查操作中,使用最频繁的就是查询操作。而在所有查询操作中,统计数量操作更是经常被用到。关于数据库中行数统计,无论是MySQL还是Oracle,都有一个函数可以使用,那就是COUNT。但是,就是这个常用的COUNT函数,却暗藏着很多玄机,尤其是在面试的时候,一不小心就会被虐。不信的话请尝
阅读全文
摘要:一、实验结论 这里有一篇文章有做实验:mysql中or和in的效率问题,分三中情况进行测试,分别是: 第一种情况:in和or所在列为主键的情形 第二种情况:in和or所在列创建有索引的情形 第二种情况:in和or所在列没有索引的情形 最后得出的结论如下: 1、in或or在字段有添加索引的情况下,查询
阅读全文
摘要:一直以来MySQL查询数量到底谁最快,一直是一个比较热的话题,且很多人搞不懂真相,本文将带你从底层原理去了解,到底count(*)、count(1)、count(id)、count(字段)谁更快。 一、执行计划 + + + | Table | Create Table | employees | C
阅读全文
摘要:一、基本语法 INSERT INTO "表格1" ("栏位1", "栏位2", ...) SELECT "栏位3", "栏位4", ... FROM "表格2" 1、从一张表中查询到的数据插入到另一张表 INSERT INTO A ([姓名] ,[部门]) SELECT [name] ,[DEP]
阅读全文
摘要:一、关于时间差查询的一个小技巧 1、求2个时间差,通常用datediff函数:DATEDIFF(datepart,startdate,enddate) startdate 和 enddate 参数是合法的日期表达式。 datepart 参数可以是小时、分、秒等 但是sql里datediff是三个参数
阅读全文
摘要:一、like 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 1、基本语法:% 表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示 // 从 “Persons” 表中选取居住在以 “N” 开始的城市里的人 SELECT * F
阅读全文
摘要:一、order by排序中如何处理null的数据 1、Oracle 里: order by colum asc 时,null默认被放在最后 order by colum desc 时,null默认被放在最前 nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc
阅读全文
摘要:上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单。同一个softId,version,pcInfoId的代表是同一个软件,需要去重;同时,如果相同软件里面只要有一个matchResult为2的话,那么同一个softId,version,pcInfoId的数据全部不要。
阅读全文
摘要:一、MySQL 子查询 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用。MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性。子查询没有固定的语法,一个子查询的例子如下: 对应的两个数据表如下: article 文章表: user 用
阅读全文
摘要:一、HQL语句中数据类型转换: 我们需要从数据库中取出序号最大的记录,想到的方法就是使用order by子句进行排序(desc倒序),然后取出第一个对象,可是当初设计数据库时(我们是在原来的数据库的基础上开发新系统),竟然将序号字段的类型设成了varchar2,真是让人郁闷,这样的话,如果排序的话,
阅读全文
摘要:CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。 一、语法: CAST (expression AS data_type) 参数说明: expression:任何有效的SQServer表达式。 AS:用于
阅读全文
摘要:一、LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; 通过使用 NOT 关键字,您可以选取不匹配模式的记录。 二、CONCAT()函数用于将
阅读全文
摘要:一、unexpected token: * 的解决办法 首先要搞清楚sql与hql的区别! sql操作的是数据库表,而hql操作的是对象! sql中“select * from table”,而hql中" from table对象"! 因为sql用惯了,习惯*,但是hql不认识! 试试:直接 fro
阅读全文
摘要:一、窗口函数有什么用 在日常工作中,经常会遇到需要在每组内排名,比如下面的业务需求: 排名问题:每个部门按业绩来排名topN问题:找出每个部门排名前N的员工进行奖励 面对这类需求,就需要使用sql的高级功能窗口函数了。 二、什么是窗口函数 窗口函数,也叫OLAP函数(Online Anallytic
阅读全文
摘要:一、sql中all、any、some用法 1、All:对所有数据都满足条件,整个条件才成立,例如:5大于所有返回的id select * from #A where 5>All(select id from #A) 2、Any:只要有一条数据满足条件,整个条件成立,例如:3大于1,2 二、MySQL
阅读全文
摘要:对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得
阅读全文
摘要:一、如何查找重复数据? 1、题目:编写一个SQL查询,查找学生表中所有重复的学生名。 2、解题思路: (1)看到“找重复”的关键字眼,首先要用分组函数(group by),再用聚合函数中的计数函数count()给姓名列计数。 (2)分组汇总后,生成了一个字段:姓名 + 计数的临时表。从这个表里选出计
阅读全文
摘要:一、事务的理解: 1、事务的特性: 1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。 2) 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务
阅读全文