- Posted by Admin on May 8, 2012
据了解绝大多数开发人员对于索引的理解都是一知半解,局限于大多数日常工作没有机会、也什么没有必要去关心、了解索引,实在哪天某个查询太慢了找到查询条件建个索引就ok,哪天又有个查询慢了,再建立个索引就是,或者干脆把整个查询SQL直接发给DBA,让DBA直接帮忙优化了,所以造成的状况就是开发人员对于索引的理解、认识很局限,以下就把我个人对于索引的理解及浅薄认识和大家分享下,希望能解除一些大家的疑惑,一起走出索引的误区
误区1.在表上建立了索引,在查询时用到了索引的列,索引就一定会生效
首先明确下这样的观点是错误的,SQL Server查询优化器是基于开销进行选择...
[More]
- Posted by Admin on May 2, 2012
--查询所有数据库
use master
select * from sysdatabases where dbid>4;--系统自带的数据库分别是master->1,model->3,msdb->4,tempdb->2
--查询数据库中所有数据库(存储过程)
exec sp_helpdb;
--查询指定数据库中的表
use master
select * from sysobjects where xtype='u' ;
if object_id('#test1') is not null
dro...
[More]
- Posted by Admin on March 15, 2012
异常
View Code
BEGIN TRY --SQL异常和VB很像,需要很完整的开闭
DECLARE @N INT--这里做一个最简单的异常,除0异常
SET @N=0
SET @N=7/@N
PRINT @N --这个不会输出
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS MSG,@@ERROR CODE
END CATCH
--现在做个很实际的异常处理
--人员表,包含人名和出生日期,
--因为基本上不会有100多岁的用户来使用这个系统
--所以在注册的时候,要限制出厂日期的填...
[More]
- Posted by Admin on March 15, 2012
常量
View Code
--MSSQL支持多种常量类型,常量可以直接使用
SELECT 'ABCDabc012!@#$',--字符串常量,''两个单引号
N'物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻',--UNICODE常量
0,--或1,BIT型常量,为特殊的INT常量
0x0001111,--二进制常量
12212,--INT常量
'2012-12-22',--...
[More]
- Posted by Admin on March 15, 2012
为了能够演示,先建立了三张表,具体SQL如下:
View Code
CREATE TABLE POSTTB (ID INT IDENTITY(1,1) PRIMARY KEY,NAME NVARCHAR(20) NOT NULL)
--职位对照表
INSERT INTO POSTTB VALUES('项目经理')
INSERT INTO POSTTB VALUES('架构师')
INSERT INTO POSTTB VALUES('开发人员')
INSERT INTO POSTTB VALUES('...
[More]
- Posted by Admin on March 15, 2012
SELECT是个大话题,分成单独一篇
基本查找
View Code
SELECT * FROM USERS
--查询全部数据
SELECT * FROM USERS WHERE USERNAME LIKE 'K%'
--查询所有用户名以K打头用户的全部信息
SELECT TOP 1 * FROM USERS WHERE USERNAME LIKE 'K%'
--查询第一个用户名以K打头用户的全部信息
SELECT USERNAME,[PASSWORD],AGE=DATEDIFF(YEAR,BIRTHDAY,GETDA...
[More]
- Posted by Admin on March 15, 2012
数据操作
(还是上节的表,增加一个GENDER字段(n),表示性别,无默认值,SQL如下)
View Code
ALTER TABLE USERS ADD GENDER NCHAR(1)
复制代码
为了方便操作这里创建了一个临时表,并插入了一些数据,SQL在代码下面的代码中,有兴趣的话,可以看看
View Code
--为能演示,先写个临时表,这里的性别字段不同
CREATE TABLE #(ID INT IDENTITY(1,1),USERNAME NVARCHAR(20),[PASSWORD] CHAR(3...
[More]
- Posted by Admin on March 15, 2012
简单的数据定义(CREATE,ALTER,DROP,DECLARE)
表,列,视图,索引,触发器
创建表,并附带各种约束,默认值
View Code
CREATE TABLE USERS ( ID INT IDENTITY(1,1) PRIMARY KEY,--自增主键
-- ID CHAR(32) PRIMARY KEY UNIQUE,--GUID主键
...
[More]
- Posted by Admin on March 15, 2012
MYSQL 逻辑架构
思维导图
前言
》 Mysql并非尽善尽美,但足够灵活,能适应高要求环境,如Web应用。
》 Mysql在众多平台上运行良好,支持多种数据类型,但不支持对象类型(Mongodb支持)
》 Mysql的存储引擎可以基于表建立,以满足对数据存储,性能,特征及其他特性的各种需要。
架构逻辑视图
...
[More]
- Posted by Admin on February 26, 2012
如何加快查询速度?
1、升级硬件
2、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。
3、扩大服务器的内存
4、增加服务器CPU个数
5、对于大的数据库不要设置数据库自动增长,它会降低服务器的性能
6、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
7、查询时不要返回不需要的行、列
8、用select top &...
[More]
- Posted by Admin on February 20, 2012
http://msdn.microsoft.com/zh-cn/library/cc645611.aspx
- Posted by Admin on February 18, 2012
简介
在简单恢复模式下,日志文件的作用仅仅是保证了SQL Server事务的ACID属性。并不承担具体的恢复数据的角色。正如”简单”这个词的字面意思一样,数据的备份和恢复仅仅是依赖于手动备份和恢复.在开始文章之前,首先要了解SQL Server提供的几种不同备份类型。
SQL Server提供的几种备份类型
SQL Server所提供的几种备份类型基本可以分为以下三种(文件和文件组备份以及部分备份不在本文讨论之列):
&...
[More]
- Posted by Admin on February 17, 2012
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 1000; //1000秒
- Posted by Admin on January 30, 2012
你想获取某一年份第一周开始的日期,Insus.NET给你的答案,可以参考使用下面这个函数:http://www.cnblogs.com/insus/articles/1622988.html
SELECT [StartDate] FROM [dbo].[udf_Week](2012,2012) WHERE [Week] = 1
上面SQL语句执行结果:
但你还是觉得此方法很复杂,而且只需要日期部分,时间部分无需显示。因此In...
[More]
- Posted by Admin on January 30, 2012
MS SQL有一个函数CHAR()是将int(0-255) ASCII代码转换为字符。那我们可以使用下面MS SQL语句,可以随机生成小写、大写字母,特殊字符和数字。
大写字母:
CHAR(ROUND(RAND() * 25 + 65,0))
小写字母:
CHAR(ROUND(RAND() * 25 + 97,0))
特殊字符:
CHAR(ROUND(RAND() * 13 + 33,0))
数字:
CHAR(ROUND(RAND() * ...
[More]
- Posted by Admin on October 9, 2011
当前日期SELECT CONVERT(VARCHAR(30),GETDATE(),111) SqlServer中得到当前日期(convert函数,getdate函数)函数GETDATE()的返回值在显示时只显示到秒。实际上,SQL Sever内部时间可以精确到毫秒级(确切地说,可以精确到3.33毫秒)。 ..类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和 13返回的月份用三位字符表示(用Nov代表November).对表11.1中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如...
[More]
- Posted by Admin on July 14, 2011
超时时间已到。在操作完成之前超时时间已过或服务器未响应 初步分析原因为对MSSQL操作时连接超时,知道这事,以前没留意,大概是在配置文件中设置连接时限,在网上找了下解决方法,大多说在数据库连接字符串里解决SqlConnection con = new SqlConnection("server=.;database=myDB;uid=sa;pwd=password;")改为:SqlConnection con = new SqlConnection("server=.;database=myDB;uid...
[More]
- Posted by Admin on June 23, 2011
数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住。所以我们很多人就根本不按照范式来设计数据库。 实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白。本文将对范式进行通俗地说明,并以笔者曾经设计的一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际工程。 范式说明 第一范式(...
[More]
- Posted by Admin on June 15, 2011
在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,
该门语言则命名为——C with
classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented
programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++...
[More]
- Posted by Admin on June 11, 2011
助理装备的SQL数据库开发人员和DBA的生产力工具,他们需要加快数据库的开发过程,提高代码的质量和准确性。SQL Assistant easily integrates with many widely used database editors and database management and development environments including native tools that come with your database systems.数据库助理轻松集成与许多广泛使用的数据库编辑器和数据库管理和开发环境,包括:工具,来与您的数据库系统。 It provides...
[More]
- Posted by Admin on May 27, 2011
第一步:配置数据源 1.在‘控制面板→管理工具’里选择‘数据源’,在弹出的页面选择‘用户DSN’(默认)。 2.点击旁边的‘添加’按钮,在弹出的页面选择‘Driver do Microsoft Access (*.mdb)’,然后点击‘完成’。 3.在弹出的‘ODBC Microsoft Accecc 安装’页面,在‘数据源名’文本输入框填写一个名称(自定义),&l...
[More]
- Posted by Admin on April 27, 2011
在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话。
测试环境
硬件:CPU 酷睿双核T5750 内存:2G
软件:Windows server 2003 + Sql server 2005
OK,我们首先创建一数据库:data_Test,并在此数据库中创建一表:tb_TestTable
1create databa...
[More]
- Posted by Admin on April 8, 2011
分两种情况,一种是版本问题,一种是安装顺序问题 一、你安装的是SQL Server 2005 Express Edition版,快速开发版 SQL Server 2005 Express版是不用花钱的,微软免费让你用,但是它功能上少很多东西,不过对于学习、个人开发功能还是够用了。安装SQL Server 2005 Express Edition,在安装后会发现可以找得到SQL Server 2005的服务管理器,但是找不到它的数据库管理器,这是因为Express版本...
[More]
- Posted by Admin on March 26, 2011
正 文: 由于飘易手里有项目需要用到Microsoft SQL Server 2005数据库,电脑里原有的mssql2000已经不适用了,到网上寻找SQL Server 2005简体中文开发版的下载地址,一开始下载了个学习版的express,可限制太多,还是决心安装开发版本的。 到微软的官方网站寻找了一些授权资料,贴在下面: Microsoft SQL Server ...
[More]
- Posted by Admin on February 24, 2011
聚集索引和非聚集索引的区别: 汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同样的,如果查“...
[More]
- Posted by Admin on September 11, 2010
当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
- Posted by Admin on August 21, 2010
update 表名
set text类型字段名=replace(convert(varchar(8000),text类型字段名),'要替换的字符','替换成的值')
http://blog.chinaunix.net/u/484/showart_1071250.html
- Posted by Admin on August 9, 2010
请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库。 一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据。第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复。 1、清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2、截断事务日志 BACKUP LOG 数据库名 WITH NO_LOG ...
[More]
- Posted by Admin on July 3, 2010
在做分析报表,常常会做到比率计算,由于在MS SQLServer中,特别一点,就是得需要注意分母值问题,所以写了一个自定义函数,日后使用时,只需传入两个参数(分子,分母)即可。代码SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE FUNCTION [dbo].[udf_Rate] ( @Numerator DECIMAL(18,6), ...
[More]
- Posted by Admin on July 3, 2010
编写存储过程时,如果需要对表添加一个字段,或是修改表的字段时,首先判断字段是否已经存在表中,可以以下面语法进行判断: IF NOT EXISTS(SELECT name FROM syscolumns where id = OBJECT_ID('表名') AND syscolumns.name ='字段名') PRINT '字段不存在。'ELSE &nb...
[More]
- Posted by Admin on July 3, 2010
在存储过程中,有时需要处理前端传入的如数组集合,方法可以参考下面实例: 代码SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE [dbo].[usp_FqaVisual_GetWorkPlaceReport]( @WorkPlaceCollections NVARCHAR(50) --用户选择的场所集合,如:"2,5,6,7&quo...
[More]
- Posted by Admin on June 27, 2010
日志的逻辑文件名是DBNAME_LOG,数据库DBNAME: USE DBNAME BACKUP LOG DBNAME WITH NO_LOG --截断事务日志 GOOPTION 1:DBCC SHRINKFILE(DBNAME_LOG,10) --收缩事务日志 GO OPTION 2...
[More]
- Posted by Admin on June 21, 2010
if object_id('[表1]') is not null drop table [表1]
go
create table [表1]([日期] varchar(4),[人员] int,[提交量] int)
insert [表1]
select '6-17',801,1 union all
select '6-18',801,4
go
if object_id('[表2]') is not null drop table [表2]
go
create table [表2]([日期] varchar(4),[人...
[More]
- Posted by Admin on May 13, 2010
数据操作类 SQLHelper.cs
http://www.cnblogs.com/zengxiangzhan/archive/2009/12/31/1636871.html
无限级分类 存储过程
http://www.cnblogs.com/zengxiangzhan/archive/2010/01/04/1639220.html
百万级分页存储
http://www.cnblogs.com/zengxiangzhan/archive/2009/09/12/1565313.html
SQL经典短小代码收集
http://www.cnblogs.co...
[More]
- Posted by Admin on May 5, 2010
如果是查询分析器中,要做到类似企业管理器的功能,就用:
--备份数据结构及数据
select * into #tb from 原表
--添加字段
alter table #tb add column 字段名 字段类型
&n...
[More]
- Posted by Admin on April 28, 2010
大家好,相信大家在发布 Asp.net 的时候都会与 Microsoft SQL 数据库打交 道吧!可是怎么才能把我们的数据库部署到远程的虚拟机上呢?今天我给大家介 绍个好方法,那就是用“Microsoft SQL Server Database Publishing Wizard”,下载 地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=zh-cn
这个版本是 1.1,可以嵌入到 ...
[More]
- Posted by Admin on April 8, 2010
由于前端提交处理做的不到位或者数据库设计的不够合理,库中通常会存在一些冗余数据,比如重复记录就是一种,那这样的记录如何删除呢?
我们先看一下相关数据结构的知识。
在学习线性表的时候,曾有这样一个例题。
已知一个存储整数的顺序表La,试构造顺序表Lb,要求顺序表Lb中只包含顺序表La中所有值不相同的数据元素。
算法思路:
先把顺序表La的第一个元素付给顺序表Lb,然后从顺序表La的第2个元素起,每一个元素与顺序表Lb中的每一个元素进行比较,如果不相同,则把该元素附加到顺序表Lb的末尾。
Code highlighting produ...
[More]
- Posted by Admin on March 16, 2010
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
CREATE function Get_StrArrayLength
(
@str varchar(1024), --要分割的字符串
@split varchar(10) --分隔符号
)
returns int
as
begin
declare @location int
declare @start int
declare @length i...
[More]
- Posted by Admin on March 11, 2010
Sql代码
select * into target_table from source_table;
insert into target_table(column1,column2) select column1,5 from source_table;
select * into target_table from source_table;
insert into target_table(column1,column2) select column1,5 from source_table;
以上两句都是将源表s...
[More]
- Posted by Admin on March 11, 2010
Sql代码
select * into target_table from source_table;
insert into target_table(column1,column2) select column1,5 from source_table;
select * into target_table from source_table;
insert into target_table(column1,column2) select column1,5 from source_table;
以上两句都是将源表...
[More]