SQL Server中 索引的使用
索引的使用 索引的使用并不需要显式使用,建立索引后查询分析器会自动找出最短路径使用索引. 但是有这种情况.当随着数据量的增长,产生了索引碎片后,很多存储的数据进行了不适当的跨页,会造成碎片(关于跨页和碎片以及填充因子的介绍,我会在后续文章中说到)我们需要重新建立索引以加快性能: 比如前面的test_tb2上建立的一个聚集索引和非聚集索引,可以通过DMV语句查询其索引的情况: SELECT index_type_desc,alloc_unit_type_desc,avg_fragmentation_in_percent,fragment_count,avg_fragment_si...
SQL Server中 非聚集索引
非聚集索引 因为每个表只能有一个聚集索引,如果我们对一个表的查询不仅仅限于在聚集索引上的字段。我们又对聚集索引列之外还有索引的要求,那么就需要非聚集索引了. 非聚集索引,本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页. 一个简单的非聚集索引概念如下: 可以...
SQL Server中 聚集和聚集索引
聚集和聚集索引 在SQL SERVER中,最主要的两类索引是聚集索引和非聚集索引。可以看到,这两个分类是围绕聚集这个关键字进行的.那么首先要理解什么是聚集. 聚集在索引中的定义: 为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚集码)上具有相同值的元组集中存放在连续的物理块称为聚集。 简单来说,聚集索引就是: 在SQL SERVER中,聚集的作用就是将某一列(或是多列)的物理顺序改变为和逻辑顺序相一致,比如,我从adventureworks数据库的employee中抽取5条数据: ...
SQL Server中索引是什么
索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 精简来说,索引是一种结构.在SQL Server中,索引和表(这里指的是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一种用于查找的平衡多叉树.理解B树的概念如下图: 理解为什么使用B树作为索引和表(有聚集索引)的结构,首先需要理解SQL Server存储数据的原理. 在SQL SERVER中,存储的单位最小是页(PAGE),页是不可再分的。就像细胞是生物学中不可再分的,或是原子是...
SQL如何运行EXE文件
1.权限 xp_deletemail 的执行权限默认授予 sysadmin 固定服务器角色的成员,但可以授予其他用户 2.执行方式 xp_cmdshell 以同步方式操作。在命令行解释器命令执行完毕之前,不会返回控制。 3.不能执行用户交互的命令,比如,执行记事本这种需要用户录入,关闭等操作的程序,就会挂死程序 4.如果程序是要弹出用户界面的,用户界面不会弹出
ACCESS LIKE语法
ACCESS在使用的过程中,除了关键字时出错,用[]包起关键字可以解决,还有问题就是,LIKE出错,因为LIKE和SQL里的LIKE用法不一样,详见下面: 1、ACCESS库的通配符为: * 与任何个数的字符匹配。 ? 与任何单个字母的字符匹配 2、在SQL Server中的通配符为: % 与任何个数的字符匹配 - 与单个字符匹配 3、正确写法应是: 在C#里写应写成 Select * From Table Where Name Like '%jacky%' Select * From Table Where Name Like '_jacky_' Access内测试语句应写成 : Select * From Table Where Name Like '*jacky*' S...
ALTER TABLE 语句修改列、触发器
ALTER TABLE 语句 ALTER TABLE 语句用于在已有的表中添加、修改或删除列。 SQL ALTER TABLE 语法 如需在表中添加列,请使用下列语法: ALTER TABLE table_name ADD column_name datatype 要删除表中的列,请使用下列语法: ALTER TABLE table_name DROP COLUMN column_name 注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。 要改变表中列的数据类型,请使用下列语法: ALTER TABLE table_name ALTER COLUMN column_name datatype 原始的表 (用在例子中的): Persons 表: Id La...
SQL数据库版本不兼容还原失败
我用 SQL server 2008 10.00.1600 版本还原 用sql server 2008 R2 版本 10.50.1600 备份的数据包时出错! color=#FF0000]还原 对于 服务器“mysql\test_db”失败。 (Microsoft.SqlServer.SmoExtended) 该数据库是在运行版本 10.50.1600 的服务器上备份的。该版本与此服务器(运行版本 10.00.1600)不兼容。请在支持该备份的服务器上还原该数据库,或者使用与此服务器兼容的备份。 RESTORE DATABASE 正在异常终止。 (.Net SqlClient Data Provider)[/color] 方式一:1、sql 2008 R2成脚本文件。到sql 2008、2005...
SQL保留2位小数
ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数。 SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_name 参数 描述 column_name 必需。要舍入的字段。 decimals 必需。规定要返回的小数位数。 SQL ROUND() 实例 我们拥有下面这个 "Products" 表: Prod_Id ProductName Unit UnitPrice 1 gold 1000 g 32.35 2 silver 1000 g 11.56 3 copper 1000 g 6.85 现在,我们希望把名称和价格舍入为最接近的整数。 我们使用如下 SQL 语句: SELECT ProductName, ROUN...
使用SQL语句添加和删除约束
--主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空。 --唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。 --检查约束(Check Constraint):某列取值范围限制、格式限制等,如有关年龄的约束。 --默认约束(Default Constraint):某列的默认值,如我们的男性同学较多,性别默认为男。 --外键约束(Foreign Key):用于在两表之间建立关系需要制定引用主表的哪一列。 语法如下 alter table 表名 add constraint 约束名 约束类型 具体的约束说明 示例: --添加主键约...