随笔分类 -  数据库

摘要:Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID、YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,... 阅读全文
posted @ 2015-01-05 02:25 大智若简 阅读(274) 评论(0) 推荐(0)
摘要:代码如下,请给出具体修改代码 public void AddCategory(string nCategoryName, int nImgId, int nBelongToId, int nShopId, int nSortId) { int CategoryId = 0; string cmdText = "Select top 1 CategoryId from ProductCategory where CategoryName='' ROWLOCK"; SqlConnection conn = new SqlConnection(Connection 阅读全文
posted @ 2012-10-24 22:59 大智若简 阅读(463) 评论(0) 推荐(0)
摘要:对于这样一个表character,id为主键:id name gender race--------------------------------------------------------1 JimRaynor male terran2 SarahKerrigan femal zerg3 Zeratul unknown protoss--------------------------------------------------------要实施一个“有则更新,无则插入”的操作可以这样做declare count int;Select count(*) into count fro 阅读全文
posted @ 2012-10-24 08:03 大智若简 阅读(2702) 评论(0) 推荐(0)
摘要:示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERTINTOclients(client_id, client_name, client_type)SELECTsupplier_id, supplier_name, 'advertising'FROMsuppliersWHEREnotexists(select * fromclientswhereclients.client_id = suppliers.supplier_id);示例一:插入单条记录INSERTINTOclients(client_id, clien 阅读全文
posted @ 2012-10-22 23:56 大智若简 阅读(1892) 评论(0) 推荐(0)
摘要:char char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。 nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。 varchar[(n)] 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为... 阅读全文
posted @ 2012-10-08 09:04 大智若简 阅读(120) 评论(0) 推荐(0)
摘要:随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。1、实现原理实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具 阅读全文
posted @ 2012-09-22 20:58 大智若简 阅读(333) 评论(0) 推荐(0)
摘要:一, 设置sp_configureexec sp_configure 'show advanced options',1reconfigureexec sp_configure 'Ad Hoc Distributed Queries',1reconfigure执行sql :SELECT * FROM OPENROWSET ( 'SQLOLEDB ', 'WIN-P8AKPFGRVGZ'; 'sa'; '6YHN7ujm',ReportServer.dbo.batch)关闭 把相应设置为0即可。二,s 阅读全文
posted @ 2012-09-22 11:40 大智若简 阅读(281) 评论(0) 推荐(0)
摘要:格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到.例子:SELECTCONVERT(varchar(30),getdate(),101) now结果为:now---------------------------------------|09/15/2001===================================================================style数 阅读全文
posted @ 2012-07-11 13:43 大智若简 阅读(228) 评论(0) 推荐(0)
摘要:计算字符串长度 len()用来计算字符串的长度select sname ,len(sname) from student字符串转换为大、小写 lower() 用来将一个字符串转换为小写,upper() 用来将一个字符串转换为大写select lower('I AM A STUDENT !') select upper('i am a student !') 截去字符串左、右侧空格 ltrim() 用来将一个字符串左侧的空格去掉 ,rtrim()用来将一个字符串右侧的空格去掉declare @str varchar(100) set @str=' 我的左侧 阅读全文
posted @ 2012-07-11 11:30 大智若简 阅读(271) 评论(0) 推荐(0)
摘要:一、sql server日期时间函数 Sql Server中的日期与时间函数 1. 当前系统日期、时间 selectgetdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 selectdateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数。 selectdatediff(day,'2004-09-01','2004-09-18') --返回:17 4. d 阅读全文
posted @ 2012-07-11 11:24 大智若简 阅读(234) 评论(0) 推荐(0)
摘要:--测试数据 declare @tab table(id varchar(3),class varchar(10),sums int) insert @tab select '001','计算机','65' union all select '002','计算机','75' union all select '001','美术','77' union all select '003','体育','54' 阅读全文
posted @ 2012-07-03 18:17 大智若简 阅读(153) 评论(0) 推荐(0)
摘要:相信很多朋友都有需要利用Sql语句查出指定库中所有表的需求,比如在做与数据库相关的工具与项目时,这种需求更是常见,本章我们总结几种利用SQL语句查询数据库中所有表的方法。1,利用sysobjects系统表 在这个表中,在数据库中创建的每个对象(例如约束、默认值、日志、规则以及存储过程)都有对应一行,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了。 示例语句如下::select * from sysobjects where xtype='U'注意:在SQL SERVER2005中,出现了sys.objects目录视图来代替sysobjects系统表,我们在SQ 阅读全文
posted @ 2012-06-12 18:11 大智若简 阅读(1178) 评论(0) 推荐(0)
摘要:如果你对SQL使用的经验不是足够丰富,如果你在SQL中解决的问题不够多,请认真看完本章,它可以让你避免一个很可能经常会犯的错误!我们先创建一个测试表create table #table1 ( id int identity(1,1) primary key, col1 int not null, col2 decimal(18,1) )然后插入数据insert into #table1 (col1,col2) select 0,0.1 union all select 1,1.1 union all select 2,2.2 union all select 3,3.3我们来猜猜下面Sele 阅读全文
posted @ 2012-06-12 18:07 大智若简 阅读(3856) 评论(2) 推荐(2)
摘要:如果你对SQL使用的经验不是足够丰富,如果你在SQL中解决的问题不够多,请认真看完本章,它可以让你避免一个很可能经常会犯的错误!我们先创建一个测试表create table #table1 ( id int identity(1,1) primary key, col1 int not null, col2 decimal(18,1) )然后插入数据insert into #table1 (col1,col2) select 0,0.1 union all select 1,1.1 union all select 2,2.2 union all select 3,3.3我们来猜猜下面Sele 阅读全文
posted @ 2012-06-12 18:01 大智若简 阅读(656) 评论(1) 推荐(0)
摘要:首先我们应该知道数据库总是处于一个特定的状态中,下面先来了解一下数据库的常见的三种状态: 1,脱机:我们可以在Microsoft SQL Server Management中看到该数据库,但该数据库名称旁边有"脱机"的字样,说明该数据库现在虽然存在于数据库引擎实例中,但是不可以执行任何有效的数据操作,比如新增,修改,删除等,这就是脱机状态。2,联机:该状态为数据库正常状态,也就是我们常看到的数据库的状态,该状态下的数据库处于可操作状态,可以对数据库进行任何权限内的操作。3,可疑:和"脱机"状态一样,我们可以在Microsoft SQL Server Ma 阅读全文
posted @ 2012-06-12 18:00 大智若简 阅读(2195) 评论(0) 推荐(0)
摘要:在SQL SERVER中的使用过程中,视图是我们不可避免要经常使用到的。那到底什么是视图呢?概括的讲,视图就是用户自己写的一段SQL语句。我们为该段SQL语句起一个名字,就称为视图名,以后想要利用该段SQL语句返回的结果集时,只要像查询表一样针对视图名写SQL语句就可以了,所以,你也可以把视图想像为一个虚拟表。下面,我们讲解一个视图的创建与使用:一,创建视图:create view v_viewname as select * from table1其中view为视图关键词,v_viewname为我们创建的视图名,select * from table1为该视图返回的结果集.二,调用视图:与查 阅读全文
posted @ 2012-06-12 17:47 大智若简 阅读(2161) 评论(0) 推荐(0)
摘要:在上述的文章中我们讲到,SQL SERVER视图其实就是一段SQL语句,在视图被调用时动态执行定义的SQL,返回结果集。在SQL Server2005后,微软推出了索引视图,索引视图与之前的普通视图有一个本质的区别,就是索引视图中的结果集是保存在数据库中的,而不是每次动态执行的结果。这样,查询时就可以像查询基础表一样,性能得到不少的提升。我们还可以在索引视图上创建索引,让索引视图的性能得到进一步提升。那么,要如何建创索引视图呢?我们可以通过关键字SchemaBinding来创建,例句如下:create view v_salary with Schemabinding as select nam 阅读全文
posted @ 2012-06-12 17:45 大智若简 阅读(1206) 评论(0) 推荐(0)
摘要:简单命令:备份:BACKUP DATABASE test TO DISK='d:\04-08-07bak.bak'恢复: RESTORE DATABASE test from disk='d:\04-08-07bak.bak' with NORECOVERY利用SQL语言,实现数据库的备份/恢复的功能体现了SQL Server中的四个知识点:1. 获取SQL Server服务器上的默认目录2. 备份SQL语句的使用3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理4. 作业创建SQL语句的使用/*1.--得到数据库的文件目录@dbname 指 阅读全文
posted @ 2012-05-31 18:12 大智若简 阅读(372) 评论(0) 推荐(0)
摘要:触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。Ø 什么是触发器 触发器对表进行插入、更新、删除的时候会自动执行的特殊存储过程。触发器一般用在check约束更加复杂的约束上面。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。SQL Server 2005中触发器可以分为两类:DML触发器和DDL触发器,其中DDL触发器它们会影响多种数据定义语言语句而激发,这些语句有cr 阅读全文
posted @ 2012-05-31 17:38 大智若简 阅读(170) 评论(0) 推荐(0)
摘要:1. 为何使用游标: 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。 2. 如何使用游标: 一般地,使用游标都遵循下列的常规步骤: (1) 声明游标。把游标与T-SQL语句的结果集联系起来。 (2) 打开游标。 (3) 使用游标操作数据。 (4) 关闭游标。 2.1. 声明游标 DECLARE CURSOR语句SQL-92标准语法格式:DECLARE 游标名 [ ... 阅读全文
posted @ 2012-05-31 17:13 大智若简 阅读(313) 评论(0) 推荐(1)