数据库
文章平均质量分 59
MS-SQL、PostgreSQL、Oracle、MySQL等数据库相关知识
carcarrot
这个作者很懒,什么都没留下…
展开
-
程序中为数据库uniqueidentifier类型字段【TSQL中用newid()赋值或以newsequentialid ()为Default值】生成有序的GUID
uniqueidentifier 为 16 字节时,其数据类型比其他数据类型(例如 4 字节的整数)大。这意味着使用 uniqueidentifier 键生成索引的速度相对慢于使用 int 键生成索引的速度。uniqueidentifier 数据类型可存储 16 字节的二进制值,其作用与全局唯一标识符 (GUID) 一样。世界上的任何两台计算机都不会生成重复的 GUID 值。注意:NEWSEQUENTIALID()只能在创建或修改表时定义为默认值时有效(该函数能在数据库层面默认生成有序的GUID值)原创 2024-04-28 11:54:26 · 448 阅读 · 0 评论 -
查看 MSSQL 死锁
当SQL Server有疑似死锁问题时,除了利用“活动和监视器”及 SQL Server Profile工具外,还可结合以下方法查找死锁源头。转载 2024-04-24 13:29:56 · 136 阅读 · 0 评论 -
程序中调用DB存储过程记得异常处理时尝试回滚可能存在的事务
有些存储过程需要执行比较久,在数据库中直接跑本身没有出错,但从程序中调用该存储过程会由于超时进入程序异常处理,这时数据库后台依然在跑着该存储过程,如果该存储过程中有启用事务,那么对于程序中的该连接中这时已经存在着未提交未回滚的事务(尽管事务是在DB存储过程中启动的),如果不通过该连接回滚释放,不仅会无端继续占用着连接会话资源(此时dispose连接并不能有效释放),而且重新运行调用该存储过程的程序会马上由于不能启动事务而出错。原创 2024-04-17 16:41:32 · 230 阅读 · 0 评论 -
MSSQL有关数据库、表的循环操作可使用的存储过程 sp_MSforeachdb 及 sp_MSforeachtable
''' --统计各个表的空间使用情况。【说明】sys.sp_MSforeachdb 和 sys.sp_MSforeachtable 实际上内部都是通过调用sys.sp_MSforeach_work 实现的。原创 2024-04-02 13:22:39 · 329 阅读 · 0 评论 -
SQL Server可空列中创建唯一约束,如何做到允许多个null值
另1种方法则是不为该“唯一列”创建唯一索引,而是新建一计算列,该计算列的公式为“该列为空时等于newid()或主键值,不为空时等于该‘唯一列’的值,并将唯一索引变成为该计算列创建,来间接实现【好处是真正要保持唯一的列可以放心写入null值,而不用替换成newid()或主键值,数据可读性更好】默认情况下,惟一索引最多只能有一条数据是null(多条就不唯一了),从SQL Server 2008开始,可以在创建唯一索引时添加“不包含null的where条件”,实现创建允许有多个null值的唯一索引。原创 2023-11-13 13:40:51 · 567 阅读 · 0 评论 -
SQL中实现汉字的拼音首字母查询
由于汉语拼音首字母也就23个,该方法利用汉字字符按拼音字母排序的特点来生成对应的拼单首字母,只需找到这23个汉语拼音首字母中分别排序在第一的汉字生成23条临时表数据用于参照,即可简单实现汉字匹配拼音首字母。select dbo.f_GetPyAcronym(N'abc- 汉字 -abc') --得到结果:“abc- HZ -abc”原创 2023-11-10 18:36:56 · 719 阅读 · 0 评论 -
【SQL】使用 in 或 not in,注意“子查询”或“in范围”数据中有 NULL 出现的查询异常情况
理想是查询到全部数据,但只能查询出来 id = 1 和 id = 2 的数据。理想是查询到 id = 2 的数据,但实际查询为空,没有数据。理想是查询到 id = 3 的数据,但实际查询为空,没有数据。正常查询到 id = 1 和 id = 2 的数据。转载 2023-11-06 11:55:12 · 564 阅读 · 0 评论 -
浏览器本地数据库IndexedDB介绍
https://blog.csdn.net/hjb2722404/article/details/118789332转载 2022-12-12 13:28:39 · 101 阅读 · 0 评论 -
Oracle运行脚本文件 @、@@、start的区别
1 概述1. 作用:'运行脚本'2. 语法:@ path_file_name -- file_name 只能是单个文件,而非 文件夹 3. 个人理解: @、@@、start 三者完全一样(版本:Oracle 11g) 结论:@ 命令成功执行一次后,'目录自动切换为:当前执行文件所在的目录' (就可以使用 '相对路径' 了,比 '绝对路径' 省事儿) 有人可能说:@ 和 @@ 有区别 @ 绝对路径 @@ 所在转载 2022-11-04 21:37:17 · 1176 阅读 · 0 评论 -
Oracle知识累记
条件选择函数decode:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) https://blog.csdn.net/u010760374/article/details/81170412 求占百分比的分析函数 ratio_to_report() over(): Ratio_to_report() 括号中就是分子,over() 括号中就是分母,分母缺省就是整个占比。https://blog.csdn.net/lol_3168/article/details...原创 2021-01-27 09:39:36 · 133 阅读 · 0 评论 -
ORACLE中BFILE字段的使用研究
(本文转载自:https://blog.csdn.net/chenxinzhi/article/details/50828885)bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对 oracle来说是只读的,也不参与事务性控制和数据恢复 bfile的基本操作如下: 1.先在oracle数据库中下面我们建立一个目录别名,用于将文件定位指针映射到文件系统: create DIRECTORY 'tmpdir' AS '/tmp'..转载 2021-01-15 18:52:11 · 248 阅读 · 0 评论 -
Oracle管道函数(Pipelined Table Function)介绍
一 概述:管道函数即是可以返回行集合(可以使嵌套表nested table 或数组 varray)的函数,我们可以像查询物理表一样查询它或者将其赋值给集合变量。 管道函数为并行执行,在普通的函数中使用dbms_output输出的信息,需要在服务器执行完整个函数后一次性的返回给客户端。如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。 关键字PIPELINED表明这是一个oracle管道函数,oracle管道函数的返回值类转载 2021-01-15 18:45:07 · 290 阅读 · 0 评论 -
PL SQL Developer清除与备份登录历史、以及登录历史保存的位置
(转载自《PLSQL记住登录密码-登录历史和保存的位置》https://blog.csdn.net/cshui/article/details/103559763)PLSQL登录时, 可以之前登录的用户和密码记录下来,方便下次重复输入帐号和密码。一、保存登录历史首先,打开plsql后,首选项配置=》登录历史,定义:二、删除历史,首选项配置=》登录历史,历史三、保存历史位置(方便迁移) 打开 C:\Users\window登录帐号\AppData\Roaming...转载 2021-01-15 09:12:39 · 4162 阅读 · 0 评论 -
Hash Join解决MSSQL跨Oracle数据库连表查询出错的问题
近期有个项目的报表需要在SQL Server的视图中通过与Oracle的链接服务器连表查询获取数据,结果发现在连表查询增过Where条件后出现“无法从链接服务器 "******" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 获取行的数据”的错误消息,如下图:内连(inner join)不存在这个问题,上面的外连接方式也是在返回内连的两条记录后(如下图)才出现的错误消息,而不带条件却又不会出现错误消息完全返回正确结果:后来将连表方式改为采用Hash方式或Merge方式,问题..原创 2021-01-11 16:17:27 · 368 阅读 · 1 评论 -
oracle中斜杠(/)的含义
我们通过PLSQL Developer在一个SQL中既包含创建存储过程,又在后面包含创建存储过程之外的其它语句的时候,这时如果直接在Procedure过程语句块的“End;”后面直接就跟着写SQL语句的话,这时如果执行,【“End;”后面直接就跟着写SQL语句】会被包含在存储过程里面,而不是按我们的意图Procedure在“End;”处结束后面再单独执行。要实现分开执行,这们需要在PLSQL Developer中用斜杠(/)把语句分开来。oracle中斜杠(/)的含义斜...原创 2021-01-08 17:53:58 · 6786 阅读 · 0 评论 -
总结索引失效的几种情况
http://blog.sina.com.cn/s/blog_1442877660102w06n.html索引失效的几种情况1) 没有查询条件,或者查询条件没有建立索引2) 在查询条件上没有使用引导列3)查询的数量是大表的大部分,应该是30%以上。4) 索引本身失效5)查询条件使用函数在索引列上(见12)6) 对小表查询7)提示不使用索引8)统计数据不真实9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。10)隐式转换...转载 2021-01-05 15:34:22 · 2441 阅读 · 0 评论 -
为什么我们用PL/SQL Developer不需要指定主机或IP就能连接到Oracle服务器
最近公司使用Oracle数据库,默认用PL/SQL Developer做客户端,不需指定Oracle服务器的地址就可以连接,同时在程序开发中连接Oracle数据库也不需要指定主机;而如果使用Navicat来连接Oracle则需要指定地址,则是需要指定Oracle服务器主机。以下是PL/SQLDeveloper连接Oracle(不需要指定主机Host):程序开发中连接Oracle( 同样不需要指定Oracle的主机Host):以下是Navicat连接Oracle(需要指定主机Host...原创 2020-12-17 19:19:55 · 947 阅读 · 0 评论 -
(二)使用Navicat将mssql数据库数据迁移到PostgreSql
通常项目做数据库迁移的时候分为两步走:1.结构迁移;2.数据迁移。可以分别使用AWS-Schema-Conversion-Tool和Navicat完成这两步工作。前面我们讲了《使用AWS-Schema-Conversion-Tool将mssql数据库结构迁往PostgreSql》,这里我们讲下如何将数据从mssql数据库迁移到PostgreSql中【实例】下面介绍如何使用Navicat将SQLServer的数据库“eGear_Test”(Schema为“dbo”)中的数据迁移到Postgre..原创 2020-12-07 11:52:40 · 1602 阅读 · 0 评论 -
截图保存过的一些知识
导入CSS样式: @import url()DBTS means DB TimeStamp原创 2020-12-04 14:39:42 · 102 阅读 · 0 评论 -
PostgreSQL中三种自增列sequence,serial,identity区别
PostgreSQL中三种自增列sequence,serial,identity区别这三个对象都可以实现自增,这里从如下几个维度来看看这几个对象有哪些不同,其中功能性上看,大部分特性都是一致的或者类似的。1、sequence在所有数据库中的性质都一样,它是跟具体的字段不是强绑定的,其特点是支持多个对个对象之间共享。 sequence作为自增字段值的时候,对表的写入需要另外单独授权sequence(GRANT USAGE ON SEQUENCE test_old_id_seq;) sequ转载 2020-12-04 10:28:35 · 7958 阅读 · 1 评论 -
认识ORDER BY子句的延伸——OFFSET 和 FETCH 子句(SqlServer2012开始)
OFFSET和FETCH子句适用于SQL Server 2012 (11.x)和Azure SQL数据库之后的版本。先看下实际例子(SqlServer2016中):语法:ORDER BY column_list [ASC |DESC][OFFSET offset_row_count {ROW | ROWS}[FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY]]这里FIRST与NEXT是同义的,可以互换使用。ROW 和 R.原创 2020-11-27 11:20:06 · 1692 阅读 · 0 评论 -
PostgreSql 数据库及表的文件存储位置
用pgAdmin在PostgreSql新建数据库的时候并不像SQLServer那样有指定数据库文件目录的设置。那么数据库文件是存放在哪呢?带着这个问题在网上搜寻了下,了解到PostgreSql是这样安排数据库和表的文件存放位置的:initdb 的时候会指定一个 PGDATA 目录,这就是 PostgresQL 存储数据的地方。典型的位置是在 /postgres/data a 。PGDATA 下面各项存储的内容大概是:文件或目录名 存储内容 PG_VERSION PostgresQL.转载 2020-11-24 17:35:01 · 20816 阅读 · 0 评论 -
(一)使用AWS-Schema-Conversion-Tool将mssql数据库结构迁往PostgreSql
通常项目做数据库迁移的时候分为两步走:1.结构迁移;2.数据迁移。可以分别使用AWS-Schema-Conversion-Tool和Navicat完成这两步工作。【实例】下面介绍如何使用AWS-Schema-Conversion-Tool将SQLServer的数据库“eGear_Test”(Schema为“dbo”)的DB结构迁移到PostgreSql的数据库“eGear”(Schema为“public”):1.先用pgAdmin在PostgreSql DB实例中创建空的目标数据库eGear:...原创 2020-11-23 17:00:31 · 2083 阅读 · 2 评论 -
了解SQL Server中什么情况下适合用索引包含列,为什么不直接放在组合索引
包含列解析所谓的包含列就是包含在非聚集索引中,并且不是索引列中的列。或者说的更通俗一点就是:把一些底层数据表的数据列包含在非聚集索引的索引页中,而这些数据列又不是索引列,那么这些列就是包含列。同时,这些包含列并不会对索引中的条目有影响。 好吧,为了使得问题稍微清楚一点,我用个简单的图示说明一下:我们可以用下面的语句在创建索引的时候加入包含列,代码如下:CREATENONCLUSTEREDINDEXFK_ProductID_ ModifiedDateONSales.Sa...转载 2020-10-23 15:54:39 · 370 阅读 · 0 评论 -
给两个字段建立一个组合索引和分别建立单链索引有什么不同
例如你有一个学生表。字段包含学号, 班级, 姓名,性别, 出生年月日。你创建一个组合索引( 班级, 姓名)那么SELECT * FROM 学生表 WHERE 班级='2010级3班' AND 姓名='张三' 将使用索引.SELECT * FROM 学生表 WHERE 班级='2010级3班' 将使用索引.SELECT * FROM 学生表 WHERE 姓名='张三' 将不使用索引。删除掉上面的索引再创建...转载 2020-09-15 08:58:26 · 663 阅读 · 0 评论 -
PostgreSQL不区分大小写的排序规则
默认情况下Postgresql中字符比较是严格区分大小写的,然而在最新的Postgres 12中支持通过CREATE COLLATION创建非确定性排序规则以支持忽略大小写比较。创建忽略大小写的排序的Collation如下:官方说法:CREATE COLLATION case_insensitive (provider = icu, locale = 'und-u-ks-level2', deterministic = false);然而在Windows版本下尝试官方提供的该方法并不能..原创 2020-08-19 15:57:49 · 1906 阅读 · 0 评论 -
PostgreSQL 强大的新联合类型 —— LATERAL
PostgreSQL 强大的新联合类型 —— LATERALPostgreSQL 9.3 用了一种新的联合类型! Lateral联合的推出比较低调,但它实现了之前需要使用编写程序才能获得的强大的新查询. 在本文中, 我将会介绍一个在 PostgreSQL 9.2 不可能被实现的渠道转换分析.什么是 LATERAL 联合?对此的最佳描述在文档中可选 FROM 语句清单的底部:LATERAL 关键词可以在前缀一个 SELECT FROM 子项. 这能让 SELECT 子项在FROM项出现之前..转载 2020-07-07 10:08:56 · 2387 阅读 · 0 评论 -
PostgreSQL数据库中初始化所有序列的当前值
Postgresql中当我们创建Sequence序列的时候,往往初始值是1并以此开始做递增作为相应的数据表列中插入的默认值,当相应表的初始数据来源于外部(比如原来项目采用的是MSSQL时)迁移而来的数据时,这时序列的当前值与数据中的相应列的最大值并不同步,这时需要重新设置数库表中各个表的序列的当前值,以便下次插入数据时不会插入重复的序列值。以下脚本可以自动同步DB中所有Serial类型产生的序列的当前值为相应表的最大ID值,并让下次插入时得到递增的值:--初始化所有序列的当前值:do $$de原创 2020-06-20 16:44:47 · 2135 阅读 · 0 评论 -
PostgreSQL中序列相关函数 nextval、currval、lastval、setval、setval
PostgreSQL中序列主要涉及到的函数是 :函数 返回类型 描述 nextval(regclass) bigint 递增序列对象到它的下一个数值并且返回该值。这个动作是自动完成的。即使多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值。 currval(regclass) bigint 在当前会话中返回最近一次nextval抓到的该序列的数值。(如果在本会话中从未在该序列上调用过nextval,那么会报告一个错误。)请注意因为此...原创 2020-06-20 15:56:43 · 11877 阅读 · 0 评论 -
Npgsql实现Postgresql数据库表的批量导入及导出(Bulk Copy)
我们知道在ADO.NET中有“System.Data.SqlClient.SqlBulkCopy类”专门针对SQLServer的批导入表数据操作(Bulk Copy),而针对Postgresql的Npgsql并无相应的类,Npgsql实现BulkCopy是通过Copy指令实现的,详细可以参考Npgsql官网对BulkCopy的说明https://www.npgsql.org/doc/copy.html (如果想更多了解关于Copy指令的语法可以阅读https://www.postgresql.org...原创 2020-06-19 10:47:54 · 3767 阅读 · 1 评论 -
使用微软企业库Enterprise Library连接PostgreSQL等第三方数据库注意事项
最近项目开发在做数据库迁移,由于原先项目框架中采用微软企业库(Enterprise Library)连接MSSQL做了封装,由于官方对企业库已停更,而企业库对第三方数据库的支持需要扩展类库的支持,第三方类库大多数对企业库的支持也并没有跟进到企业库的最新版本6.0,而且处于放弃继续更新的状态,而原来项目中引用的企业库恰好是最新的Enterprise Library6.0版,在尝试将Enterprise Library连接PostgreSQL数据库的过程遇到不少坑,博主在搜寻了大量网上资料和测试后决定将Ente原创 2020-05-13 17:05:11 · 2626 阅读 · 0 评论 -
PostgreSql 的PL/pgSQL 块结构 (在pgAdmin查询工具中如何执行语句块)
PostgreSql 的PL/pgSQL 块结构本文我们学习PL/pgSQL结构块,包括如何写结构块和执行结构块。什么是结构块PL/pgSQL是结构块语言,因此,PL/pgSQL函数或过程是通过结构块进行组织。完整结构块的语法如下:[ <<label>> ][ DECLARE declarations ]BEGIN statements;...END [ label ];详细说明如下:块有两部分组成:声明部分和主体部分。声明...转载 2020-05-26 09:02:10 · 2545 阅读 · 0 评论 -
C#如何利用Npgsql调用以复合类型或表为参数的Function或Procedure
由于Postgresql中不像MSSQL可以有Table类型作为参数,因此自定义的类型可以是类似为一行记录的复合类型,而不能是表格。如果要用表格推荐考虑json数据类型(json的数组也是json类型),再在Functon或Procedure中用 “CREATE TEMP TABLE tmpTasks ASselect * from json_to_recordset(jsonParameter) t ("id" text, "no" text)转换成临时表;如果要用复合类型,可以采用复合类型数组的方...原创 2020-06-17 12:13:07 · 1123 阅读 · 0 评论 -
理解 newid ()和 newsequentialid ()
1.:newsequentialid 函数比起 newid 函数最大的好处是:如果你在一个 UNIQUEIDENTIFIER 字段上建立索引,使用 newid 产生的新的值是不固定的,所以新的值导致索引B+树的变化是随机的。而 newsequentialid 产生的新的值是有规律的,则索引B+树的变化是有规律的。有规律和无规律就会带来性能的改进。 2:UNIQUEIDENTIFIER...原创 2019-11-23 12:20:55 · 788 阅读 · 1 评论 -
SQLServer FOR XML PATH使用案例 (eg:拼凑列值)
有一张城市表:SELECT DISTINCT province, STUFF ( ( SELECT ','+city FROM #T_city B WHERE B.province=A.province FOR XML PATH('') )...转载 2019-10-25 14:24:34 · 255 阅读 · 0 评论