为什么需要锁 在任何多用户的数据库中,必须有一套用于数据修改的一致的规则,当两个不同的进程试图同时修改同一份数据时,数据库管理系统(DBMS)负责解决它们之间潜在的冲突.任何关系数据库必须支持事务的ACID属性,所以在开始了解锁之前,首先简单了解一下数据库事务和事务的ACID属性. 原子性(Atomicity):原子性意味着数据库中的事务执行是作为原子.即不可在分,整个语句要么执行,要么不执行 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏.(唯一约…
    写在前面:本篇文章需要你对索引和SQL中数据的存储方式有一定了解.标题中高级两个字仅仅是因为本篇文章需要我的T-SQL进阶系列文章的一些内容作为基础. 简介 在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构(表上没有聚集索引则为堆结构,不在本文讨论之列)如下图: 在聚集索引B树中,只有叶子节点实际存储数据,而其他根节点和中间节点仅仅用于存放查找叶子节点的数据. 每一个叶子节点为一页,每页是不可分割的. 而SQL Serve…
安装好SQL Server 2005 Express后,再安装SQL Server Management Studio Express CTP就可以很方便的使用控制台进行数据库的管理.但SQL Server Management Studio Express CTP并没有导入Access数据库的功能,我们应该使用Access的"数据库实用工具"进行导入.本文以Access 2003为例介绍如何将Access的数据库导入到SQL Server 2005 Express中,其中没有说明的地…
曾经遇到过一个用户MSDB数据库非常大,让我帮忙查查是什么原因.使用sp_spaceused找出了所有表的数据大小,发现问题是SQL Server备份和还原历史表数据太大.用户经常会做日志备份,但是从来没有清除过历史记录.后来在设置了维护计划定期清除备份记录,问题就不在发生了. 这里列出了查询SQL Server备份还原记录的语句以及如何清理数据库备份还原的脚本: --查询SQL Server备份历史 SELECT CONVERT(CHAR(100),SERVERPROPERTY('Server…
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天 SELECT * FROM 表名 where DATE_SUB(CURDATE(…
分页查询是项目中必不可少的一部分,难倒是不难,就是这些东西,长时间不用,就忘的一干二净了.今天特此总结一下这两款数据库分页查询的实现过程(只记录效率比较高的) 一.Oracle中的分页查询 1.通用分页查询模板 SELECT * }) x) --{0}为嵌套的查询语句或为一张表 } --{1}取值的最小范围 } --{2}取值的最大范围 查询的原理是,先用一个子查询,将查询得到的数据进行排列,最外层的查询再根据rownum取范围,下面贴一个实例,方便以后查看 SELECT * FROM (SEL…
1.查询SQL中的所有表: Select TABLE_NAME FROM   "你的数据库名称".INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2.查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns I…
查询book表中大于该类图书价格平均值的图书信息 先将第一条记录的类编号的值为2代入子查询中,子查询为 select avg(price) from book b where b.id=2 则得到类编号为2的书籍平均价格为(23+45)/2=34 再和外部查询做判断 select * from book a where price>34 然后再类编号为3的书籍中,再次通过比较 相关子查询(多值子查询) 1.非相关子查询(嵌套子查询)是独立于外部的子查询,子查询只会执行一次,相关查询可以执行多次,…
使用sp_configure启用'Ad Hoc Distributed Queries'解决 1.启用Ad Hoc Distributed Queries:exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 2.为了安全使用完成后,关闭Ad Hoc Distributed Queries:   exec sp_con…
先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [int] NOT NULL, , ) NULL, , ) NULL ); GO 怎么查询每一组的前几个? select t1.rn,t1.order_nid,t1.sku,t1.qty,t1.price,t1.amount from( select *,ROW_NUMBER() over(parti…