数据库
文章平均质量分 55
包含SQL Server,SQL优化,MySQL,ADO.NET
绿龙术士
这个作者很懒,什么都没留下…
展开
-
数据库设计及案例分析
数据库设计的过程:ER模型:ER模型有三种类型:1对1的关系1对多的关系多对多的关系题目中的关系可能不会明显的标记出现,而是会放在实体中,比如:员工表中会包含部门编码,员工和部门就是一个1对多的关系;答题技巧:详细分析试题说明熟练掌握基本知识案例分析1:自己的答案问题1:1:1;1:1;1:n(0分)问题2:补充权限信息与员工之间的联系,联系类型是岗位(1分)问题3:员工号,部门号;客房号;身份证号;岗位;客房号,身..原创 2021-04-25 08:20:10 · 3368 阅读 · 0 评论 -
Oracle - 安装与启动
安装W3C的Oracle安装教程(https://www.w3cschool.cn/oraclejc/oraclejc-41xa2qqv.html)安装后,验证安装情况,在SQL Plus中登录hr用户后提示:ORA-28000:theaccountislocked自认为是需要重启电脑后会恢复正常,但重启电脑后错误信息发生了改变:ORA-01033 initialization or shutdown in progress,在网上搜索了后按照Oracle ORA-01033: 错误解决办法...原创 2021-03-08 17:23:45 · 269 阅读 · 0 评论 -
SQL Server查询优化(关联等待和队列,确定行动方案)
关联等待和队列在实例级找出重量级等待后,就应该把它们和队列关联起来,以找出有问题的资源。一步这主要使用性能监视器来完成的。SQL Server也提供一个名为sys.dm_os_performance_counters的DVM,其中包含了性能监视器中所有与SQL Server实例对象相关的计数器。以下是一些常用的参数指标:1. SQL Server Buffer: Buffer Ca...原创 2018-08-29 08:50:09 · 733 阅读 · 0 评论 -
SQL Server查询优化(实例级别等待)
在处理性能问题时,数据库专家倾向于关注系统的技术层面,如资源队列、资源利用率等。而用户只把性能问题简单地认为是等待时间,他们发出一个请求,然后等待返回结果。用户通常认为 在交互请求后,超过三秒才得到响应,就算存在性能问题了。他们并不真关心平均每个磁盘转轴上 有多少个命令在等待,或者缓存命中率(cache hit ratio)是多少,也不关心阻塞,CPU利用率,缓 存中数据页的平均停留时间(page...原创 2018-08-23 15:12:33 · 2022 阅读 · 1 评论 -
数据库逻辑查询各个阶段(SELECT,ORDER BY阶段)
步骤5:SELECT阶段虽然SELECT子句出现在查询的最前面,但却放在第五步处理。步骤5-1:计算表达式SELECT列表中的表达式可以返回上一步得到的虚拟表的基础列,也可以是对这些基础列的操作。如果查询是一个聚合查询,就只能引用上一步返回的虚拟表中的组信息。如果要引用原始信息,就必须对它们进行聚合运算。这个阶段得到的是虚拟表VT5。步骤5-2:应用Distinct子句如果在查...转载 2018-08-17 14:34:54 · 688 阅读 · 0 评论 -
数据库逻辑查询各个阶段(Where,Group By,Having阶段)
步骤2:Where阶段对上一步返回的虚拟表中返回的所有行应用Where筛选器。只有让<where_predicate>逻辑条件为True的行,才会组成这一步要返回的虚拟表VT2。注意:由于还有对表进行分组,所以在Where子句中不能使用聚合。对于包含外联接的查询,有一个问题是让人困惑的,何时使用ON筛选器?何时Where筛选器?两者的主要区别是:ON在添加外部行之前执行...转载 2018-08-17 11:15:44 · 738 阅读 · 0 评论 -
数据库逻辑查询各个阶段(From阶段)
逻辑查询处理SQL与其他编程语言不同的最明显特征是代码的查询顺序。在大多数语言中,代码是按照编写顺序来处理的;但在SQL中,第一个要处理的子句是FROM子句,尽管SELECT是第一个出现,但它几乎都是最后才处理。每一步都会生成一个虚拟表,该虚拟表会称为下一步的输入,这些虚拟表对于用户是不可见的。如果在查询中没有指定某一个子句,则会跳过相应的步骤。步骤1:From阶段From阶段...转载 2018-08-17 10:13:40 · 928 阅读 · 0 评论 -
SQL Server存储过程与自定义函数
例程(routine)是为了计算结果或执行任务而对代码进行封装的一种编程对象。SQL Server支持三种例程:用户定义函数,存储过程,触发器。 用户定义函数用户定义函数(UDF,user-defined function)的目的是要封装计算的逻辑处理,有可能需要基于输入的参数,并返回结果。SQL Server支持两种用户定义函数:标量UDF和表值UDF。标量UDF只返回单个数据...原创 2018-08-13 13:58:12 · 2309 阅读 · 0 评论 -
COALESCE表达式
返回参数中从左到右,第一个不为NULL的值,参数不限制。返回的数据类型为参数中最高优先级的类型。COALESCE的英文解释是合并,倒还比较复合它的作用比较COALESCE和CASECOALESCE表达式是CASE表达式的语法糖,查询优化器会将SELECT COALESCE(EXPRESSION1,EXPRESSION2,...) 转成如下的CASE表达式:SELEC...转载 2018-08-13 13:38:58 · 1211 阅读 · 0 评论 -
SQL Server查询优化(细化到数据库/文件级别)
细化到数据库/文件级别优化处理的下一步是细化到数据库/文件级别。这一步要找出哪些数据库占用了大部分等待开销。在数据库内,还需要再细化到文件类型(数据/日志),因为文件的类型决定了要采取的行动方案。在数据库/文件级别分析I/O信息的一种工具是动态管理函数dm_io_virtual_file_stats。这个函数接收一个数据库ID和文件ID作为输入参数。返回与该文件相关的I/O信息。如果将这两个指...原创 2018-08-29 08:55:41 · 366 阅读 · 0 评论 -
SQL Server查询优化(细化到进程级别)
细化到进程级别使用SQL Server自带的工具SQL Server Profiler。但有几点需要特别注意:1. 不要把数据写入到表中,这样会严重影响性能。把数据写入到磁盘文件中是最快的选择,加载时我们可以使用fn_trace_gettable函数,用SELECT…INTO语句批量导入。2. 追踪会产生大量I/O操作。不要把追踪文件访问和数据库文件相同的文件的磁盘上,理想情况是为追踪...原创 2018-08-29 09:27:57 · 770 阅读 · 0 评论 -
SQL Server查询优化(优化索引和查询)
现在已经知道了哪些查询模式需要进行优化,可以着手更具体的查询优化步骤了。这一步会设计到索引优化和查询代码优化。SQL Server的数据库引擎顾问是一种工具。它可对输入的工作负荷进行分析,在此基础上为数据库优化提供建立。没有聚集索引的表被称为堆,拥有聚集索引的表叫聚集索引表(或聚集表)。索引是一种用于排序和搜索的结构。在查找数据库时,索引可以减少对I/O的消耗。 页和区页是SQ...原创 2018-09-07 13:56:35 · 15338 阅读 · 0 评论 -
Redis有哪几种数据类型?
Redis是一个开源的内存存储的数据结构数据库,它可以作为数据库,缓存,消息队列。支持多种数据格式。和mc相比具有数据持久化的能力。并能通过哨兵和集群提高可用性。它具有以下数据类型: 字符串类型在Redis里面采用的是SDS来封装char[]的,这个也是redis的最小存储单元。RedisObject是redis的基本数据类型,对照C#中的Object对象。而字符串类型就是在Red...原创 2018-10-18 10:34:45 · 1588 阅读 · 0 评论 -
SQL字符串聚合操作
常常有一种需求就是行转列,比如要将 Empid Name 1 Jack 1 Lucy 2 Jim 2 Alax 转成 Empid Name ...原创 2018-10-15 14:01:17 · 1838 阅读 · 0 评论 -
MySQL,Navicat,及其C#驱动在Windows平台的安装
MySQL在Windows平台的安装 这里有两个版本,一个是在线安装包,一个是离线安装包,这里我们选大的,安装过程全部点下一步就好。 安装完成后,我们进入doc,输入mysql –u root –p 然后输入密码,这时会提示“2059 - authentication plugin 'caching_sha2_password' -navicat连接异常”。这个错误出现的...原创 2018-10-10 15:20:08 · 859 阅读 · 0 评论 -
MySQL8.0.13在Linux平台上的安装
首先在MySQL官网上下载yum资源包:https://dev.mysql.com/downloads/repo/yum/安装MySQL的版本为8.0.13由于我的系统是Linux7 Centos,所以选择第一个下载,下载完之后复制mysql80-community-release-el7-1.noarch.rpm文件到Linux文件夹中,在这个文件夹中打开终端,依次输入:rpm ...原创 2018-10-22 17:13:12 · 4067 阅读 · 1 评论 -
如何往数据库中快速导入数据?
SqlBulkCopy是.NET的一个类常用于批量插入数据,这种方式比Insert方式性能要高许多。需要注意的是,DataTable中的列需要与即将插入的表的列兼容,名称和数据库的顺序完全一致。楼主往日期类型插入空值时就遇到了一个问题,那就是不能给这一列的设置Null值,而是要通过不给其赋值的方式。DataTable的表名要与数据库的表名一致。插入数据时,有个SqlBulkCopyOpti...转载 2019-01-23 16:33:30 · 1237 阅读 · 0 评论 -
Windows环境下快速用C#来操作sqlite数据库
Sqlite作为一种轻量级的嵌入式数据,常常在C/S项目中扮演重要的角色,而且它具有免费,跨平台,占用空间小等特点。下面就来说说C#如何快速地搭建Sqlite的环境吧,首先我的电脑是Win10操作系统,VS2017,.NET 4.0(要兼容XP系统)1.打开https://www.sqlite.org/download.html下载这两个文件解压第一个文件会得到sqlite的dll...原创 2019-03-06 08:33:34 · 1070 阅读 · 0 评论 -
SQL数据修改
INSERT语句INSERT VALUES语句可以将基于指定值的行插入表。SQL Server2008增强了VALUES语句的功能,允许在一条语句中指定由逗号隔开的多行记录。例如:INSERT INTO T_OrderVALUES (1,1,'冰箱','2017-01-01'),(2,1,'洗衣机','2017-01-01'),(3,1,'电视','2017-01-01')...原创 2019-08-20 11:01:54 · 7992 阅读 · 2 评论 -
三种关系型数据的比较
先来看看它们三个的流行趋势MySQL和Oracle是一种使用SQL语言并由Oracle维护的数据库软件。Microsoft SQL Server也是一种使用SQL语言并由Microsoft维护的数据库工具。Oracle最早发行,紧接着是SQL Server和MySQL。作为广泛使用的关系数据库管理系统(RDBMS),它们有一些相同的地方,比如辅助数据库模型都包含了文档储存和键...转载 2018-08-08 15:32:51 · 1560 阅读 · 0 评论 -
SQL Server变量与批处理
变量用DECLARE声明一个或多个变量,用SET语句可以把一个变量设置成指定的值。DECLARE @A AS VARCHAR(50);SET @A = 1SQL Server2008新增了对同一语句声明和赋值变量。DECLARE @B AS INT = 10;SET语句每次只能对一个变量进行操作,所以如果要对多个变量赋值,就必须使用多次SET语句。当从同一行取出不同的列...原创 2018-08-08 10:22:46 · 2095 阅读 · 2 评论 -
SQL Server检测阻塞
如果一个事务持有某一数据资源上的锁,而另一事务请求相同资源上不兼容的锁,则对新锁的请求将被阻塞,发出请求的事务进入等待状态。在默认情况下,被阻塞的请求会一直等待,直到原来的事务释放相关的锁。如果事务的运行时间太长,会导致持有锁的时间也过久。这是可以尝试缩短事务处理,把不属于工作单元的操作移到事务外面。在某些情况下,应用程序的bug也会导致事务一直打开。------------------...转载 2018-08-03 11:03:01 · 586 阅读 · 0 评论 -
SQL联接查询
联接查询Join表操作符对两个输入表进行了操作。联结有三种基本类型:交叉连接,内连接,外链接。这三种连接的区别是它们采用的逻辑查询处理步骤各部相同,每种连接都有一套不同的步骤。交叉连接只有一个步骤—笛卡尔积;内连接有两个步骤—笛卡尔积,过滤;外链接有三个步骤—笛卡尔积,过滤,添加外部行。交叉连接交叉联接是一种最简单的联接,交叉联接只实现一个笛卡尔积即可。这一步就是对两张表进行操作,把它...转载 2018-07-18 16:13:39 · 266 阅读 · 0 评论 -
SQL子查询
子查询SQL支持在查询语句中编写查询,或者嵌套其他查询。最外层查询的结果集会返回给调用者,称为外部查询。内部查询的结果是供外部查询使用的,也称为子查询。子查询也可以分为独立子查询(self-contained subquery)和相关子查询(correlated subquery)两类。独立子查询不依赖于它所属的外部查询,而相关子查询则依赖与它所属的外部查询。独立子查询所有子查...转载 2018-07-23 14:51:28 · 325 阅读 · 0 评论 -
Over子句
Over子句用于为行定义一个窗口(window),以便进行特定的运算。可以把行的窗口简单地认为是运算符的一个行的集合。例如聚合函数和排名函数都是可以支持Over子句的运算类型。由于Over为这些函数提供了一个行的接口,所以这些函数也被称之为开窗函数(window function)。 聚合开窗函数使用Over子句提供的窗口作为上下文,对窗口中的一组值进行操作,而不是使...转载 2018-07-03 16:09:25 · 512 阅读 · 0 评论 -
Select子句中要不要使用*(星号)?
除了很少数的例外,在绝大多数情况下,使用星号是一种糟糕的编程习惯。 在此还是建议你即使需要被査询表的所有列,也应该显式地指定它们。之所以要这么做, 原因有很多。不像关系模型,SQL会根据在语句中指定的列顺序来保持列的原始位置。通过制定SELECT *,就可以确保查询返冋的列是按照它们的原始位置来返回它们。而客户端应用程序可能通过列的原始位置,而不是名称来引用査询结果出的各列(这确实...转载 2018-07-02 15:35:15 · 6102 阅读 · 0 评论 -
ADO.NET 总结
Connections. 用于连接和管理针对数据库的事务。为了访问数据库,需要提供某些连接参数,如运行数据库的计算机和登记证书。使用SqlConnection类来连接SQLServer我们可以在https://www.connectionstrings.com/上找到各个数据库的连接字符串。连接池,现在关闭连接不会关闭与服务器的连接。相反,连接会添加到连接池中。再次打开连接,它可以从连接池中提取,...原创 2018-04-24 13:26:52 · 357 阅读 · 0 评论 -
递推,递归,贪心,枚举思想
转载自:http://www.cnblogs.com/huangxincheng/category/340148.html· 算法 (真正的编程应该是:编程=XX语言+数据结构+算法)· 递推思想· 概念:通过已知条件,利用特定关系逐步递推,最终得到结果为止,核心就是不断的利用现有信息推导出新的东西。· 分类:“顺推”,“逆推”· “顺推”是指通过条件推出结果· “逆推”是指通过结果推出条件· 例...转载 2018-04-12 15:06:18 · 532 阅读 · 0 评论 -
正确应用索引--分布式MySQL应用的大前提
分布式MySQL应用的要点:1.灵活应用操作系统缓存2.正确设置索引3.以横向扩展为前提设计灵活运用操作系统缓存:1.考虑全部数据量->保持数据量小于物理内存->内存不足时增加内存等2.考虑表结构设计对数据大小的影响索引的重点:index = 索引B+树1.搜索外部存储设备时能将寻道次数最小化的树结构2.搜索复杂度:O(n) -> O(log n)[例子]从4000万条数据的标签...转载 2018-01-15 09:55:23 · 229 阅读 · 0 评论 -
Redis持久化(快照)
Redis提供两种不同的持久化方法来将数据存储到硬盘中来。一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据写入到硬盘里面。另一种方法叫之追加文件(append only File,AOF),它会在执行写入命令的时候,将被执行的写命令复制到硬盘里面。这两种方法既可以同时使用,又可以单独使用,具体的使用哪种持久化方法,需要根据用户的数据以及应用来决定。以下是一些常用的配置项...转载 2018-01-18 14:07:51 · 234 阅读 · 0 评论 -
GridFS一个分布式文件系统
分布式文件系统MongoDB内置一套文件系统名为GridFS(Grid File System)我们可以使用它来存储大于16M的文件。它具有多机器存储备份,可以突破一般文件系统对file的限制,分段存储,不像普通file system是整个存储的。这样读取大型文件时就不会占用大量的内存。支持多种驱动,如Java,C#等GridFS会将文件存储在两个Document里:Chu...原创 2018-07-19 15:06:05 · 4840 阅读 · 0 评论 -
SQL集合运算
集合运算是对输入的两个或多个集合进行的运算,最终输出一个结果集。T-SQL支持3种集合运算:并集(UNION),交集(INTERSECT)和差集(EXCEPT)。 集合运算的基本格式为:输入的集合1<集合运算>输入的集合2[Order by …] 需要注意的是,集合运算涉及的两个查询不能包含ORDER BY 子句。但可以为整个集合运算的结果集增加一个...转载 2018-07-26 11:19:05 · 620 阅读 · 0 评论 -
SQL Server死锁
死锁(死锁)是指进程间互相永久阻塞的状态,可能涉及两个或多个进程例如:进程甲阻塞了进程B,而进程乙又阻塞了进程A.或者进程甲阻塞了进程B,进程B阻塞了进程C,进程C阻塞了进程A.在任何一种情况下,SQL Server都可以检测阻塞,并选择终止其中一个事务以干预死锁状态。除非指定了其他方式,SQL Server会选择终止做过操作最少的事务,因为这样可以让开销降低到最小。不过,用户也可以自己指定死...转载 2018-08-07 09:02:52 · 632 阅读 · 0 评论 -
什么是数据库的事务?
事务事务是作为单个工作单元而执行的一系列操作,如查询和修改数据,甚至是修改数据的定义。定义数据边界的方式有显式和隐式两种。显式事务的定义需要以BEGIN TRAN语句作为开始。如果想提交事务,则应该以COMMIT TRAN语句显式结束事务;如果不想提高事务,则以ROLLBACK TRAN语句显式结束事务。如果不显式定义事务边界,SQLServer会默认把每一条语句作为一个事务。事务...原创 2018-08-02 09:24:38 · 4331 阅读 · 0 评论 -
SQL Server有哪几种隔离级别?
事隔离级别用于控制并发用户如何控制并发用户读写的操作。读操作可以是任何检索数据的语句,默认使用共享锁。写操作是指任何对表进行修改的语句,需要使用排他锁。可以设置的隔离级别有6个:READ UNCOMMITTED(未提交读),READ COMMITTED(可提交读),REPEATABLE READ(可重复读),SERIALIZABLE(可序列化),SNAPSHOT(快照),以及READ COMM...转载 2018-08-06 15:29:49 · 1609 阅读 · 0 评论 -
动态SQL
SQL Server允许用字符串来动态构建T-SQL代码的一个批处理,接着再执行这个批处理。这种功能称为动态SQL(dynamic SQL)。SQL Server提供了两种执行动态SQL的方法:使用Exec命令和使用sp_executesql存储过程。常在“查询条件不固定”,“改善特定任务的性能”场景下应用。 EXEC命令Exec接受一个字符串作为输入参数,执行里面的批处理...原创 2018-08-09 11:02:22 · 188 阅读 · 0 评论 -
SQL Server临时表
有时需要把数据临时保存到表中,而且在某些情况下,你可能并不想使用永久性的表。例如,假设你需要让数据只对当前会话有效,或者甚至只对当前批处理有效。在这种情况下,使用临时表会更方便,SQL Server支持三种临时表:局部临时表,全局临时表,表变量。SELECT * INTO #T_OrderFROM T_Order 局部临时表要创建局部临时表,只需要在命名时以单个数字符号(...原创 2018-08-09 10:22:40 · 1465 阅读 · 1 评论 -
SQL之CURD操作(三)
修改数据UPDATE语句是标准的SQL语句,用于对表中数据行的一个子集进行更新。为了标识作为更新的子集行,须要在WHERE子句中指定一个谓词。在SET子句中要指定更改的列和这些列的新值(或表达式),各列之间用逗号分隔。 “同时操作”是SQL表达式中一个重要的特性,在编写UPDATE语句时应该谨记这一点。例如:UPDATE TSET col1 = col1 + 10,col2...原创 2018-07-31 09:42:55 · 457 阅读 · 0 评论 -
SQL之CURD操作(二)
删除数据T-SQL提供两种从表中删除数据行的语句:DELETE和TRUNCATEDELETE 语句是标准的SQL语句,它用于根据谓词删除表中的数据。DELETE采用的是完整模式的日志处理,当删除大量数据时,可能会花费大量时间。 TRUNCATE不是标准的SQL语句,它用于删除表中所有数据,与DELETE不同的是,它采取的是最小模式记录日志,在性能上它们有很大差异。例如:删除几百...原创 2018-07-30 15:49:21 · 377 阅读 · 0 评论 -
SQL之CURD操作(一)
INSERT语句INSERT VALUES语句可以将基于指定值的行插入表。SQL Server2008增强了VALUES语句的功能,允许在一条语句中指定由逗号隔开的多行记录。例如:INSERT INTO T_OrderVALUES (1,1,'冰箱','2017-01-01'),(2,1,'洗衣机','2017-01-01'),(3,1,'电视','2017-01-01')...原创 2018-07-26 15:08:42 · 2834 阅读 · 0 评论