
SQL
文章平均质量分 66
这是一个关于数据库常用SQL语句和SQL错误解决的专栏
牛奶咖啡13
【目前在找工作,期望工作地为昆明,有意向的企业可私信我,内推更好】
你不知道你不知道[你永远不会去学习你不知道其存在的东西]
别人的故事在好,那也是别人的;人活成什么样子,得自己定!
展开
-
Mysql或MariaDB数据库的用户与授权操作——实操保姆级教程
在日常的工作中,我们需要给不同角色的人员创建不同的账号,他们各自可访问的数据库或权限不一样,这时就需要创建用户和赋予不同的权限内容了。原创 2024-07-25 00:10:35 · 1166 阅读 · 0 评论 -
Oracle中排查谁把表数据删除更新——delete、drop、truncate
①使用delete删除的表数据并没有真正被删掉,数据占用的表空间还存在,相当于Windows中将数据删除到回收站中,日后有需要还可以恢复。②使用truncate删除的表数据会连同其占用的表空间一起直接被删掉,相当于Windows中使用del+shift键直接删除文件一样,无法恢复。原创 2024-04-20 23:22:35 · 900 阅读 · 2 评论 -
Oracle中实现一次插入多条数据
在我们实际的业务场景中,由于单条插入的效率很低(每次都需要数据库资源连接关闭的开销),故需要实现一次性插入多条数据,用以提升数据插入的效率;原创 2024-04-05 17:51:03 · 12309 阅读 · 0 评论 -
Oracle中实现根据条件对数据的增删改操作——Merge Into
在我们进行项目开发的过程中,会遇到这样的场景,需要根据某个条件对数据进行增、删、改的操作;遇到这种情况我们有2种方法进行解决:方法一:①查询指定条件;②根据查询出的指定条件结果在执行对应的增、删、改操作;方法二:直接使用Merge Into语句根据条件进行对应的增、删、改操作;原创 2024-03-26 23:30:35 · 1386 阅读 · 1 评论 -
Oracle中的行列互转———pivot、unpivot函数用法
项目开发过程中涉及到oracle数据库的数据操作;Oracle中行列互转_oracle行列转换最简单的方法。原创 2023-06-14 23:22:13 · 4412 阅读 · 1 评论 -
立刻杀掉Oracle中的会话(session)
我们开发项目的过程中,涉及到连接oracle数据库的操作,正常来说我们执行完对应的sql语句后且关闭了连接,数据库的连接就会释放了;原创 2023-06-07 09:14:48 · 3323 阅读 · 6 评论 -
查看Oracle中指定用户下包含的包、函数、存储过程及其对应内容语句——查看当前数据库的连接内容
在项目运维的时候,公司出于数据安全的考虑,对数据库的权限进行了控制,限制运维人员只能够通过堡垒机查看Oracle数据库内容,并且堡垒机只是设定了一个只读的账号查看数据库;这就导致了运维时在查看数据库的包、函数、存储过程内容有可能通过第三方数据库可视化工具查看不了,此时就需要使用sql语句进行查看了。原创 2023-05-31 23:04:36 · 3964 阅读 · 0 评论 -
oracle使用with as创建临时表
在oracle项目的开发过程中,使用sql编写好对应的分析报表内容后,由于sql分析报表涉及到的一些线别丢失,导致呈现的报表分类统计时固定用醒目颜色标识的统计行数据显示错位;因此需要修复分析报表填充完整的线别。原创 2023-05-13 23:13:48 · 2069 阅读 · 0 评论 -
Oracle中实现恢复删除的表或表数据内容
在我们进行项目开发或运维过程中,由于操作不当,引起的误删Oracle数据库表或指定表的数据内容,导致程序出现故障;而我们又没有对数据库进行备份,此时,如果不能及时恢复数据库内容将会导致严重的事故。我们需要一种能够补救的方法来挽回损失,恢复被误删的表或表数据内容。原创 2023-04-23 23:56:15 · 2368 阅读 · 0 评论 -
mysql中的实现字段或字符串拼接的三种方式
- 自定义字符串分隔符SELECT GROUP_CONCAT(字段名 SEPARATOR '分隔符号') from 表名;-- 示例:-- 字段去重排序和自定义分隔SELECT GROUP_CONCAT(DISTINCT 字段名 ORDER BY 字段名 asc或desc SEPARATOR '分隔符号') from movies;-- 示例。原创 2023-01-05 13:42:30 · 57269 阅读 · 1 评论 -
Oracle实现获取GUID和生成批量插入语句
在进行系统的日常维护过程中,涉及到指定条件的人员或内容批量插入内容,此时又希望能够快速根据指定条件自动生成对应的插入SQL语句,而不用编写代码;比如:我们需要给菜单权限表中指定菜单节点为【设备报表】的所有人员都添加(名为【设备报警】的菜单)内容。原创 2022-11-01 22:29:56 · 4650 阅读 · 0 评论 -
Oracle中实现获取指定表名称批量修改表中的字段类型
在进行业务开发过程中,需要实现获取到Oracle中指定数据库下的指定表,然后对这些指定的表修改字段类型,比如需要将类型Varchar2的大小从100修改为200。原创 2022-10-31 21:42:38 · 1560 阅读 · 0 评论 -
解决Navicat15导出结果为sql文件时表名不存在问题
在使用Navicat15工具连接数据库,对数据库中的表内容进行查询后需要将这些结果导出为sql文件,方便下次使用的时候直接执行这个sql文件进行还原;但是在查询出结果后,点击Navicat的【导出结果】按钮导出sql文件时,查看该sql文件发现语句中都缺少表名称;原创 2022-10-17 20:58:00 · 1984 阅读 · 0 评论 -
在Oracle中创建DBLINK
在开发项目的过程中,我们需要实现在主库上能够同时连接其他的辅库,方便数据的处理操作;或是【跨越本地数据库,访问远程数据库的数据】;即将多个Oracle数据库看作是一个数据库进行操作(而不是分别连接)。...原创 2022-08-30 00:30:14 · 4419 阅读 · 0 评论 -
怎样创建Oracle的dbms_jobs(数据库任务)
在开发项目的过程中,我们需要对某个存储过程(或SQL语句)执行定时任务(比如指定每天的每个时间内执行),这时我们就需要使用到数据库任务(DBMS_JOBS)来实现。原创 2022-08-24 23:46:42 · 5242 阅读 · 0 评论 -
Oracle中实现对指定数据分组且获取重复次数
业务需要实现针对指定字段进行分组,且分组后获取每个组下内容的重复次数;还要获取重复内容的人员信息内容。比如我这里有一个人员信息表,我需要知道对所有年龄分组后,年龄重复的是那几个?然后在获取重复内容的人员信息。...原创 2022-07-24 11:16:40 · 2470 阅读 · 0 评论 -
Oracle中实现删除指定查询条件的所有数据
业务需要实现能够将根据查询出来的内容全部删除。原创 2022-07-22 23:16:16 · 2707 阅读 · 0 评论 -
Oralce中实现将指定列的指定内容替换为想要的内容
业务需要对Oracle中表的指定列的所有字段包含空格的内容全部替换为下划线。原创 2022-07-22 08:37:09 · 1333 阅读 · 0 评论 -
Oracle中的With As 子查询
Oracle在Oracle 9i的第二版本数据库中引入了带有子句的SQL;带有子句的SQL允许您给出一个子查询块一个名称(也称为子查询重构的过程),可以在主SQL查询中的多个位置中引用;该子查询的工作方式就像甲骨文的全局临时表,用于提高复杂SQL查询的查询速度。①该子查询用于定义临时关系,以便可用此临时关系的输出,并由与子句相关联的查询使用。②与子查询相关的查询也可以使用嵌套子查询书写,但这样做会增加更复杂的读取/调试SQL查询。③该子查询并不支持所有的数据库系统;④分配给子查询的名称就像是在线视图或表格一原创 2022-06-29 23:25:12 · 1281 阅读 · 0 评论 -
Oracle中计算除法——解决除数为零报错
在Oracle数据库中,需要使用到除法,但是除数有可能为零,如果直接使用sql中的除法运算符(/),则会报错。 通过分析发现,是除数为0时会出现问题,那么我们可以先排除除数为零时直接指定结果为0,然后在进行除法计算(另外由于除法会导致结果的小数位数会很长,需要配合Round函数截取对应保留的小数位数) 3.2、计算除法使用到的函数内容Oracle中Case When的用法https://coffeemilk.blog.youkuaiyun.com/article/details/121215294Or原创 2022-06-25 10:40:25 · 14679 阅读 · 0 评论 -
Oracle中实现获取指定行内容——Rownum和Row_number()
在使用Oracle数据库进行业务开发的过程中需要获取到指定行的内容。经过查阅相关资料,发现可以使用Rownum和Row_number()实现我们想要的效果。①row_number() over(partition by 需要分组的字段 order by 排序的字段 );②row_number() over(order by 排序的字段);此函数计算的值就表示每组内部排序后的顺序编号(组内是连续唯一的)注意:【ROWNUM】是进行排序的时候是先对结果集加入虚拟列然后再进行排序;而Row_number()则是在原创 2022-06-19 22:55:01 · 5175 阅读 · 0 评论 -
Oracle对中文内容排序
目前需要开发的Oracle数据库中有些表记录的内容是中文的,需要按照中文的方式进行排序。 如果查询的结果字符集为ZHS16GBK/ZH16GBK,则使用order by默认是按照汉字的拼音顺序进行排序的;否则为其他(如UTF8等字符集),那么汉字的排序是按照BINARY排序的,那么此时可以使用Oracle提供的NLS_SORT进行排序。三、解决方法这是人员表中的原内容:执行示例结果如下: 执行示例结果如下: 执行示例结果如下: 这是区域表中的原内容:实现对汉字一原创 2022-06-18 10:54:23 · 3304 阅读 · 1 评论 -
执行Oracle的SQL语句报错【ORA-00904: “CREATETIME“: 标识符无效】、【ORA-00913: 值过多】解决办法
①使用navicat建模工具建立完成表结构后,导出sql语句或直接同步该模型到指定用户模式中,我们使用正常的查询语句查询内容报错【ORA-00904: "CREATETIME": 标识符无效】;②执行插入的sql语句时报错【ORA-00913: 值过多】;我们检查navicat建模工具导出的建表语句,发现字段都是添加双引号的; 如果我们使用sql语句比如【SELECT CreateTime FROM "IQC_MaterialStandard_Record"】,就会报如下所示的错误: 在Oracle中双引号原创 2022-06-10 15:28:19 · 9559 阅读 · 0 评论 -
Oracle中实现过滤非空内容但保留空内容数据(或不等于条件包含空值)
一、需求 业务需要对表的某个字段过滤(条件为不等于某个值,但是保留NULL和其他值的所有数据);比如:我们现在有一个名为【testTable2222】的表,该表包含的数据内容如下:业务需求是:除了数量(QTY)为2的数据都不要,其他的数据都保留。二、常见方法测试2.1、使用不等于判断SELECT * FROM "testTable2222" WHERE QTY!=1 ORDER BY ID;SELECT * FROM "testTable2222" WHERE Q..原创 2022-05-18 09:24:46 · 3508 阅读 · 1 评论 -
解决Navicat使用账号密码登陆Oracle数据库提示【密码已过期,请输入新密码】【或账号已被锁定】
一、问题描述打开Navicat使用对应的账号密码登陆Oracle时,弹出提示框【密码已经过期,请输入新密码】;但是自己按照提示输入正确的旧密码和设置对应的新密码后无法修改成功提示【ORA-01017:invalid username/password;logon denied】;如下图所示:二、问题分析 这是由于账号的密码设置了有效期(默认为:180天),可以通过打开Oracle服务器上的sqlplus工具查看,操作如下:在Oracle服务器通过sqlplus工具以dba角色...原创 2022-05-17 22:04:21 · 3730 阅读 · 0 评论 -
Oracle中执行事务语句执行完成但无法存入数据且【Status = Faulted】解决办法
一、问题描述 Oracle中执行事务语句,且执行完成但数据库中没有存入任何数据,且提示内容为【Id = 179, Status = Faulted, Method = "{null}", Result = "{尚未计算}"】二、问题分析 事务语句执行完成,但是数据没有存入数据库,且提示状态为失败【Faulted】,这说明执行的sql语句有问题,需要逐一排查以下可能性:①sql语句中的表名称是否正确?②sql语句中的字段名称是否正确、是否含有oracle中的保留关键字?③s...原创 2022-04-08 11:42:54 · 1209 阅读 · 0 评论 -
Oracle中的存储过程【Stored Procedure】和存储函数【Stored Function】
一、存储过程1.1、存储过程的介绍 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后直接存储在数据库中,用户调用指定存储过程的名字和传递对应的参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都具备存储过程。1.2、存储过程的优点和不足存储过程(Stored Produce)的优点 序号 存储过程【Stored Produce】的优点 1 存储过程可..原创 2022-02-13 23:40:11 · 1644 阅读 · 0 评论 -
Oracle执行插入语句报错:ORA-02289: 序列不存在
一、问题描述 Oracle中执行插入语句报错:【ORA-02289: 序列不存在】//这就是报错的插入语句insert into ScadaDeviceList (DeviceId, DeviceNumber) values (SEQ_DeviceList.NextVal,'SCADA01')二、问题分析 分析:当前执行的插入语句中用到了自增序列,但是数据库中没有创建自增序列【SEQ_DeviceList】。三、解决办法 直接创建自增序列【SEQ_DeviceL...原创 2021-12-15 19:50:51 · 30102 阅读 · 1 评论 -
Oracle中Case When的用法
一、Case的两种表达式1.1、简单的case表达式SELECT CASE 列名 WHEN 值1 THEN 結果1 WHEN 值2 THEN 結果2 ELSE 结果3 END FROM table1;1.2、检索的cse表达式SELECT CASE WHEN 条件1 THEN 条件1的結果 WHEN 条件2 THEN 条件2的結果 ELSE 条件1,2以外的结果 END FROM table1;二、Case的不同用法2.1、作为求个原创 2021-11-08 22:54:37 · 43969 阅读 · 2 评论 -
sql查询时添加一列为固定值
一、实现效果二、实现的sql语句//sql查询添加一列固定值SELECT 表字段1,表字段2,表字段3,'固定值字符串' AS FixedStr FROM 表名称原创 2021-10-20 09:05:30 · 12954 阅读 · 0 评论 -
Oracle中对数据分组统计
一、实现效果1.1、原表内容1.2、实现效果①实现对报警信息(TYPENAME)内容分组,且对设备编号、报警信息、开始时间排序效果。②实现对报警信息(TYPENAME)内容分组统计,且计算开始时间(CreationTimeStart)、结束时间(CreationTime)差值(对差值保留2位小数)效果。③实现对报警信息(TYPENAME)内容分组统计,且获取最小开始时间(CreationTimeStart)、最大结束时间(CreationTime)差值(对差值保留2位小数).原创 2021-09-30 10:09:40 · 11294 阅读 · 0 评论 -
Oracle中对字符串类型的数字正确排序
一、使用【ORDER BY 字段 ASC】对字符串类型数字排序得不到想要的结果SELECT 字段名称 FROM 表名称 ORDER BY 字段名称 ASC二、问题分析因为排序的字段是字符串类型,所以【排序时字符从左向右依次比较】三、解决方法①使用Oracle中的【CAST】函数将字段转为数字类型然后再排序即可//CAST函数转换字段类型CAST(字段名称 AS 数字类型)//比如:将Varchar字段BINN转为INTEGER类型CAST(BINN AS INTEG.原创 2021-09-27 13:22:57 · 10400 阅读 · 2 评论 -
Oracle中分页查询且显示数据总数和行数
一、实现效果二、实现分页查询且显示数据总数和行数sql语句2.1、基础的分页查询显示数据总数和行数的sql语句/*基础的分页查询显示数据总数和行数的sql语句*/SELECT A.* FROM ( SELECT T.*,ROWNUM NUM FROM(SELECT COUNT(1) OVER() TOTAL,'表别名'.* FROM ( '需要显示显示的sql语句' ) '表别名')T WHERE ROWNUM < 51 ) A WHERE A.NUM > 02..原创 2021-09-22 17:25:57 · 3321 阅读 · 1 评论 -
Oracle涉及到的日期操作
一、获取当前年/* 获取当前年 */SELECT sysdate, to_char(sysdate, 'yy') YEAR, --2位 to_char(sysdate, 'yyy') YEAR2, --3位 to_char(sysdate, 'yyyy') YEAR3 --4位FROM DUAL二、获取当前月/* 2.获取当前月份 */SELECT sysdate, to_char(sysdate, 'mm') MONTH, --显示值:10 to_cha.转载 2021-09-22 15:02:57 · 1885 阅读 · 0 评论 -
Oracle中保留两位小数
一、ROUND(A/B,2) 函数 ROUND()函数是会将计算结果进行四舍五入的,如果所需要的值需要进行四舍五入,就可以选择这个函数,可以有一个参数,也可以有两个参数;如果有两个param,第一个是你的计算表达式,第二个是需要保留的小数位数。例子如下:SELECT ROUND(2/3, 2) RESULT FROM DUAL二、TRUNC(A/B,2) 函数 TRUNC()函数是不会将计算结果进行四舍五入的,如果所需要的值不需要进行四舍五入,就可以选择这个函数,可以有一个参数,...转载 2021-09-22 13:47:35 · 13994 阅读 · 0 评论 -
Oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数
一、两个日期相差的小时、分钟、秒1.1、实现效果1.2、实现的sql语句--Oracle中两个日期相差小时数--select TO_NUMBER((TO_DATE('2021-09-22 11:22:13','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2021-09-22 10:22:13','yyyy-mm-dd hh24:mi:ss'))*24)AS 相差小时数 from dual;--Oracle中两个日期相差分钟数--select TO.转载 2021-09-22 11:45:52 · 21200 阅读 · 0 评论 -
Oracle获取指定时间段内包含的所有日期、月份、年份内容
一、获取指定时间段内的日期列表1.1、实现效果:1.2、实现的sql语句:/*获取2021-09-22至2021-10-03时间段内的所有日期*/SELECT TO_CHAR(TO_DATE('2021-09-22', 'yyyy-MM-dd') + ROWNUM - 1, 'yyyyMMdd') as datelist FROM DUALCONNECT BY ROWNUM <= trunc(to_date('2021-10-03', 'yyyy-MM-原创 2021-09-22 11:03:42 · 5143 阅读 · 0 评论 -
Oracle中行列互转
一、使用Case when 实现列转为行(一列多行-->多列一行)1.1、实现效果①原表效果②实现将Course课程列内容转为行效果【实现将每个人员的课程信息合成一行,且获取到课程总分】1.2、列转行(多列转一行)sql语句SELECT NAME, MAX(CASE WHEN COURSE='语文' THEN SCORE END) "语文", MAX(CASE WHEN COURSE='数学' THEN SCORE END) "..转载 2021-09-22 10:22:44 · 5579 阅读 · 0 评论 -
Oracle中实现分组后按时间排序取第一条
一、实现效果①原表效果:②分组排序后取第一条的效果:二、sql语句2.1、基础语句select t.* from (select a.*, row_number() over(partition by 需要分组的字段 order by 排序的字段 desc) rw from 表 a) t where t.rw = 1 2.2、实现语句...原创 2021-09-22 09:18:54 · 13647 阅读 · 1 评论 -
关于Oracle执行sql语句报错[ORA-01722: invalid number]无效数字解决思路
一、问题提示 执行Oracle的sql语句提示【ORA-01722: invalid number】无效数字错误。二、问题分析2.1、类型不匹配 即数据库中字段的设计类型与插入、修改的类型不统一(比如字段设计是:float类型,但是插入或修改的内容确实字符串【'a'】)2.2、对字段数据进行函数操作 即对字段进行求和(SUM)、求平均数(AVG)等函数操作,但是字段的数据却不匹配,比如(对字符串数字【.12.5036】求和就会报错,正常应该是(12.5036))2.3、对数...原创 2021-09-11 17:29:42 · 30128 阅读 · 5 评论