Microsoft SQL server2000由一系列相互协作的组件构成。能满足最大的WEB站点和企业数据处理系统存储和分析数据的需要。本文带来的就是在windows环境下SQL2000的安装过程。
系统需求
这里以其四合一版本为例,以下安装过程同理。Microsoft SQL Server 2000 可在运行 Intel或兼容的 Pentium、Pentium Pro 或 Pentium II 处理器的计算机上运作。处理器必须以最低 166 MHz 的速度运行。需要 Internet Explorer 5.0 或更高版本。另外在在内存方面有如下要求:
企业版 最低 64 MB,推荐使用 128 MB
标准版 最低 64 MB
个人版 在 Windows 2000 上需要 64 MB,在所有其它操作系统上需要 32 MB
开发版 最低 64 MB
安装过程
第一步:将Microsoft SQL Server 2000安装光盘放入光驱中,安装程序会自动运行出现版本选择界面,我们以选择个人版为例。如下图:
第二步:在接下来的界面中选择“安装SQL Server 2000组件”选项。如下图:
第 ......
sql导出到Excel
从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句:
/*===================================================================*/
--如果接受数据导入的表已经存在
insert into 表 select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
--如果导入数据并生成表
select * into 表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
/*===================================================================*/
--如果从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select * from 表
--如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au ......
首先,我们看看exists和in的效率问题,这里我只说明一种测试语句
set statistics io on
sqlstatement
set statistics io off、
或者
set statistics time on
sqlstatement
set statistics time off
从studio里面的消息可以看出问题,我引用网上的一些准则http://www.cnblogs.com/diction/archive/2008/01/18/1043844.html
这里主要说明2个问题:
1.exists 主要是个存在关系,要么存在,则是表里面的全部数据,如果不存在,那么则没有表数据
2.in是集合关系,一般我们如果要用in搭配clause的话应该这样
thisfield in (select thisfield from tb where conditions)
但是exists不存在这种问题 ......
第一范式:确保每列的原子性.
如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式.
例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。
第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关.
如果一个关系满足第一范式,并且除了主键以外的其它列,都依赖于该主键,则满足第二范式.
例如:订单表(订单编号、产品编号、定购日期、价格、……),"订单编号"为主键,"产品编号"和主键列没有直接的关系,即"产品编号"列不依赖于主键列,应删除该列。
第三范式:在第二范式的基础上更进一层,目标是确保每列都和主键列直接相关,而不是间接相关.
如果一个关系满足第二范式,并且除了主键以外的其它列都不依赖于主键列,则满足第三范式.
为了理解第三范式,需要根据Armstrong公里之一定义传递依赖。假设A、B和C是关系R的三个属性,如果A-〉B且B-〉C,则从这些函数依赖中,可以得出A-〉C,如上所述,依赖A-〉C是传递依赖。
例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列"订单编 ......
对于一个数据库完整备份来说,备份的速度很大程度上取决于下面两个因素:读磁盘数据、日志文件的吞吐量,写磁盘数据文件的吞吐量。
下图是备份过程中磁盘的变化情况:
读吞吐量
读吞吐量的大小取决于磁盘读取数据的速度,而磁盘读取的速度又取决于数据文件在磁盘中的位置。因此,位于不同盘符上不同数据库文件的读取速度都不相同。
测量读吞吐量的一个方法就是进行一次数据库完整备份,然后使用Windows性能监控器(perfmon)来监控数据库文件所在磁盘的Read bytes/sec 性能计数器。保存备份文件的磁盘应该在物理上区别于数据库文件所在的磁盘,否则测量精度会不准确。当然备份同时也应该会有另外一些来自系统或是其他应用程序对磁盘的读取操作。
注意:如果你使用完整备份来监测磁盘读写吞吐量的话,那么这个测试用的备份文件应该和其他常规备份放在一起,以便恢复时使用。也就是说,如果你在测试备份文件之后又进行了常规差异备份,那么这些差异备份就会以这个测试备份为还原的起始点。
假设数据库所有文件的大小都是相等的,那么你获取的最小测量值就是你指定数据库在系统中最大的备份吞吐量了。
另一个测量读吞吐量的方法是在NUL设备上执行备份,如下:
BACKUP DA ......
SQL Server使用标准B-树存储信息。
索引中间层次数由表的行数和索引行的大小决定。若使用一个较长的键(key)来创建索引,一个分页上就只能容纳较少的条目,即树的层次可能会增多。
对于任何索引(无论是聚集或非聚集索引),索引B-树的叶级节点包含索引的键值,并都按照键的顺序排列。聚集和非聚集索引的区别在于叶级节点中包含的其他信息。
聚集索引的叶级节点不仅包含了索引键,还包含数据页(包含整行记录的信息)。
非聚集索引的叶级节点中不包含全部的数据。除此索引的键值外,还包含一个书签(bookmark)。若表上存在聚集索引,书签就是相应的数据行的聚集索引键。若表上没有聚集索引(即堆结构),书签就是一个行标识符(row identifier,RID)。 ......