SQL
无名小卒菜
记录开发中遇到的问题,互相学习。
展开
-
关于SQL语句中SUM函数返回NULL的解决办法
1.建表语句,create table AA_TEST( TEST_ID INTEGER primary key, TEST_NAME VARCHAR(20) not null, TEST_DATE DATE not null, TEST_AGE INTEGER);2.查询语句SELECT t.* FROM AA_TEST t;结果集3.查询语句,...原创 2018-07-17 17:51:41 · 4671 阅读 · 0 评论 -
sql查询每个班级的前三名
1.建表语句,插入数据:create table TEST_SCORE( CLASS VARCHAR(10), NAME VARCHAR(10), SCORE INTEGER);INSERT INTO test_score ( class, name, score) VALUES ( '1班', '齐静春', 100);INSERT INTO test_s...原创 2019-08-02 17:20:54 · 10484 阅读 · 11 评论 -
sql和null有关的函数
在写sql的时候,经常会遇到和null相关的问题,经常用到虑空函数。常见的有NVL,NULLIF,COALESCE函数,其他还有很多在此不介绍了。1.NVL-----NVLlets you replace null (returned as a blank) with a string in the results of a query. Ifexpr1is null, thenNV...原创 2019-03-29 17:36:55 · 413 阅读 · 0 评论 -
mysql主从备份mycat读写分离
mysql主从复制常见命令,mycat配置读写分离原创 2022-09-09 09:38:37 · 357 阅读 · 0 评论 -
mysql 项目合并相同公司主体然后行列转置
先根据项目分组,不同的公司主体合并,逗号隔开,select er.NAME AS CITY, epbi.PROJECT_NAME, PROE.TYPE, GROUP_CONCAT(PROE.NAME ORDER by er.NAME, epbi.PROJECT_NAME, PROE.TYPE) AS原创 2022-05-25 10:58:32 · 127 阅读 · 0 评论 -
mysql jsonobject应用
select x,y ,json_object('centerCoordinates',json_array(json_object('x',x,'y',y))) COORDINATES from project_temp_jinan where x is not null ;原创 2021-12-09 10:41:27 · 3624 阅读 · 0 评论 -
mysql查询数据为json结构[1,2,3]语句
mysql如下,find_in_set(3, replace(replace(land_property, '[', ''), ']', ''))Java 如下,<if test="null != landPurpose and landPurpose.size > 0"> and ( <foreach collection="landPurpose" item="item" open="" separator="OR" close=""> .原创 2022-02-10 16:20:51 · 923 阅读 · 0 评论 -
Mysql为时间字段添加默认时间,自动更新修改时间,新插入列自动获取当前时间
alter table tb_city MODIFY column last_update_date DATETIME NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;参考:原创 2021-06-02 10:29:45 · 666 阅读 · 0 评论 -
索引失效的几种情况
什么时候没用:1.有or必全有索引;2.复合索引未用左列字段;3.like以%开头;4.隐式转换导致索引失效;5.where中索引列有运算;6.where中索引列使用了函数;7.如果mysql觉得全表扫描更快时(数据少);8.not in ,not exist.什么时没必要用:1.唯一性差;2.频繁更新的字段不用(更新索引消耗);3.where中不用的字段;4...原创 2020-03-07 14:37:13 · 550 阅读 · 0 评论 -
DB2获取上周日期的范围
SQL如下:select CURRENT_DATE - (DAYOFWEEK(CURRENT_DATE) + 5) DAY BEGIN_DATE, CURRENT_DATE - (DAYOFWEEK(CURRENT_DATE) - 1) DAY END_DATEFROM SYSIBM.DUAL;运行结果如下:所用函数:dayofweek(exp):取e...原创 2019-05-22 10:43:47 · 1587 阅读 · 2 评论 -
关于oracle的锁表解决 ORA-00031: session marked for kill
锁表原因:1、锁表发生在insert update 、delete 中 2、锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户3、锁表的原因 第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常 就...原创 2017-09-12 10:41:49 · 6203 阅读 · 0 评论 -
ORACLE恢复删除表或表记录
一:表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的。一般步骤有:1、从flash back里查询被删除的表 select * from recyclebin2.执行表的恢复 flashback table tb to before drop,这里的tb代表你要恢复的表的名称。二:表数据恢复 对误...原创 2017-09-12 11:01:03 · 275 阅读 · 0 评论 -
SQL日常学习
1.SQL 对大小写不敏感2.SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。3.查询和更新指令构成了 SQL 的 DML 部分:SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据4.SQL 的数据定义语言 (DDL) 部分使我们...原创 2017-09-12 13:53:26 · 175 阅读 · 0 评论 -
mysql获取起始时间内的每一天日期
第一种写法select date_add('2019-07-11', interval (cast(help_topic_id as signed integer)) day) dayfrom mysql.help_topicwhere help_topic_id < datediff('2019-07-31', '2019-07-11') + 1order by help_t...原创 2019-07-11 16:48:20 · 1191 阅读 · 2 评论 -
SQL Date 函数
1.MySQL Date 函数函数 描述NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期...原创 2017-09-12 14:03:53 · 3449 阅读 · 0 评论 -
db2日报日期范围取值
每周一统计上周一到周日的数据,每周二统计周一的数据,每周三,四,五,六,日分别统计,每周一到每周二,三,四,五,六的数据。日期的sql如下:SELECT CASE WHEN DAYOFWEEK(CURRENT DATE) - 1 <= 1 THEN CURRENT DATE - (DAYOFWEEK(CURRENT DATE) + 5) DAY ...原创 2019-05-27 11:49:59 · 451 阅读 · 0 评论 -
DB2获取指定某天到昨天的日期
SQL如下:SELECT CURRENT_DATE - ((ROW_NUMBER() OVER (ORDER BY 1))) DAY AS YESTERDAYFROM SYSIBM.SYSCOLUMNS FETCH FIRST 10 ROWS ONLY;效果如下,原创 2019-05-23 16:36:10 · 3422 阅读 · 2 评论 -
DB2日期函数DATE函数
一:sql如下,SELECT TO_DATE('2019-03-30', 'YYYY-MM-DD') + 1 DAY DATEFROM SYSIBM.DUAL;查询结果如下,二:sql如下,SELECT TO_CHAR(TO_DATE('2019-03-30', 'YYYY-MM-DD') + 1 DAY, 'YYYY-MM-DD') DATEFROM SYSIBM...原创 2019-06-10 11:41:19 · 14575 阅读 · 2 评论 -
mysql获取上个月的第一天和最后一天
获取上个月的最后一天,利用subdate函数和last_day函数,可得select last_day(subdate('2019-06-01', interval 1 month)) date获取上个月的第一天,就是上两个月的最后一天,再加上一天,select adddate(last_day(subdate('2019-06-01', interval 2 month)),...原创 2019-07-15 14:24:41 · 2185 阅读 · 2 评论 -
mysql加序号显示
sql如下SELECT (@I := @I + 1) AS ROWNUM, M.*FROM aaaaa M, (SELECT @I := 0) AS I效果如下:原创 2019-07-11 16:51:31 · 1173 阅读 · 1 评论 -
遇到了随便记录一下MySQL用户变量的使用
1.建表语句,数据准备,参考:sql查询每个班级的前三名2.mysql用户变量,mysql中用户变量不用提前申明,在用的时候直接用“@变量名”使用就可以了,其作用域为当前连接。-- 第一种用法,使用set时可以用“=”或“:=”两种赋值符号赋值set @rownum := 0;set @rownum = 0;-- 第二种用法,使用select时必须用“:=”赋值符号赋值,因为...原创 2019-08-02 18:18:42 · 772 阅读 · 0 评论 -
DB2多表关联UPDATE 语句
血的教训换来的,最后一定要加where条件。否则,会将没有关联上的数据字段更新成null.update TM_INS_PROPOSAL TIPset (Total_Amount, Receivable_Busi_Amount, Vehicle_Relation, Busi_Ins_Code, Com_Ins_Code )=(sele...原创 2019-08-01 10:20:30 · 12160 阅读 · 0 评论 -
sql修复数据中含有分号结尾的数据
项目开发遇到数据存写错误,导致数据中字段内容,数字中含有分号结尾。如下图:现在要去去掉末尾的分号,查询sql如下:select substr(t.BUY_REASON, 1, length(t.BUY_REASON) - 1)from TM_POTENTIAL_CUSTOMER twhere 1 = 1 and substr(t.BUY_REASON, length(t.BU...原创 2019-03-26 15:54:46 · 1194 阅读 · 0 评论 -
decode()函数简介
主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);使用方法Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)From talbenameWhere …其中columnname为要选择的table中所定义的column,·含义解释:decode(条件,值1,翻译值1,值2,翻译值2,...值n,...原创 2017-09-12 14:10:57 · 442 阅读 · 0 评论 -
drop,delete和truncate的异同
相同点truncate和不带where子句的delete, 以及drop都会删除表内的数据不同点:1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.2.delete语句是dml,这个...原创 2017-09-12 14:14:30 · 208 阅读 · 0 评论 -
关于exists的理解(一)
现在有A表如下:B表如下:现有sql:SELECT ID,`NAME` FROM A WHERE EXISTS (SELECT * FROM B WHERE A.ID=B.AID);显示如下:理解如下:-- --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据SELECT ID,`NAME` FROM A WHER...原创 2018-03-26 14:00:37 · 1318 阅读 · 0 评论 -
关于exists的理解(二)
注:exists : 强调的是是否返回结果集,不要求知道返回什么。现有学生表Student,成绩表SC,课程表Course。如下:-- 1.查询所有选修了“K1”课程的学生名。-- 普通查询in SELECT SNAME FROM student where SNO in ( select sno from sc where sc.CNO='K1');--...原创 2018-03-26 17:08:07 · 459 阅读 · 0 评论 -
关于DB2新增列column_new 和修改原列column_old默认值default value的情况
1.新增列有默认值,不为空,则表中该列数据会自动补全。ALTER TABLE AA_TEST ADD COLUMN column_new_a int WITH DEFAULT 1;ALTER TABLE AA_TEST ADD CONSTRAINT column_new_a CHECK (column_new_a IS NOT NULL);2.新增列有默认值,可为空,则表中该列数据会...原创 2018-07-17 13:20:11 · 5786 阅读 · 0 评论 -
Illegal pattern character 'Y'
今天写java代码,从项目中拷贝了一行代码,就是时分秒的转换格式,YYYY-MM-DD HH24:MI:SS然后我还在数据库中运行了,发现可以用,结果如下:结果我加在Java代码中,SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH24:MI:SS");乍看这一行代码,完美,结果运行报错:Ille...原创 2018-12-24 14:41:10 · 4906 阅读 · 0 评论 -
db2索引立即生效和重构表结构
--索引生效CALL sysproc.admin_cmd ('runstats on table TABLE_xxxxxxxx on all columns and indexes all allow read access');--重构表CALL SYSPROC.ADMIN_CMD('REORG TABLE TABLE_xxxxxxxx');...原创 2019-03-26 14:13:57 · 3824 阅读 · 1 评论 -
count distinct
有时候做报表写sql需要用到去重,一般都是考虑到grouy by,distinct,但是我之前还真没有用到过 count distinct ,在此记录一下,虽然有的人说占内存,效率问题,但是确实是一个知识点。SELECT COUNT(DISTINCT column_name) FROM table_name;参考:浅析Hive的group by和count(distinct)使用...原创 2019-03-28 15:07:57 · 11292 阅读 · 0 评论 -
详解db2中的locate等字符串函数
1.建表语句:create table AA_STU_TEST( STU_ID INTEGER generated always as identity primary key, STU_NAME VARCHAR(20), STU_SPECIALTY VARCHAR(40), STU_SEX VARCHAR(5), STU_AG...原创 2019-04-04 18:16:03 · 8288 阅读 · 1 评论 -
Analytic Functions (窗口函数)
开发报表的过程中 ,我们经常用到分析函数,形式如下:analytic_function::=analytic_clause::=query_partition_clause::=order_by_clause::=windowing_clause ::=参考网址:SQL Functions...原创 2019-04-17 11:26:55 · 339 阅读 · 0 评论 -
Oracle如何建立DBlink
方法1:执行创建sql语句:create public database link TEST_DBLINK connect to TEST_ISP identified by TEST_ISP using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.50)(PORT = ...原创 2017-12-04 14:43:58 · 10431 阅读 · 0 评论 -
oracle里存储函数将金额数字转换成大写
CREATE OR REPLACE FUNCTION NUMBER_TO_CHINESE(P_NUM IN NUMBER DEFAULT NULL) RETURN NVARCHAR2 IS /*Ver:1.0 Created By xsb on 2003-8-18 For: 将金额数字(单位元)转换为大写(采用从低至高算法) 数字整数部分不得超过16位,可以是负数。 V...原创 2017-09-22 10:47:33 · 808 阅读 · 2 评论 -
Having与Where的区别
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。 having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。参考网址:SQL中Where与Having的区别W...原创 2017-09-12 15:01:24 · 162 阅读 · 0 评论 -
SQL中调用存储过程
SQL中调用存储过程语句:callprocedure_name();注:调用时”()”是不可少的,无论是有参数还是无参数.定义对数据库存储过程的调用时1、无参数存储过程:{callprocedure_name}2、仅有输入参数的存储过程:{callprocedure_name(?,?...)}。这里?表示输入参数,创建存储过程时用in表示输入参数3、仅有输出参数的存储过程:{...原创 2017-09-12 15:19:29 · 20278 阅读 · 1 评论 -
oracle表设置主键自增长
创建表:create or replace table TBL_SYS_USER( user_id NUMBER(19) not null, user_name VARCHAR2(60 CHAR), user_pwd VARCHAR2(60 CHAR))alter table TBL_SYS_USER...原创 2017-09-12 15:31:38 · 1362 阅读 · 0 评论 -
数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2 数据操纵语言DML数据操纵语言DML主要有三种形式...原创 2017-09-12 16:15:15 · 4598 阅读 · 0 评论 -
Oracle行列转换
行列转换,查询汇总。select item_desc,spec ,max(case invoice_date when CONCAT(to_char(sysdate,'yyyy'),'01') then amt else 0 end) 一月金额,max(case invoice_date when CONCAT(to_char(sysdate,'yyyy'),'01') then ...原创 2017-09-12 16:21:02 · 174 阅读 · 0 评论