随笔分类 -  SQL

摘要:什么是SQL注入(SQL Injection)?SQL注入是网站攻击途径之一,这里引用一下百度百科的解释:“所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令”。简单示例网站的登录界面,需要用户输入用户名和密码来进行登录,如果网站开发者在开发时没有考虑对SQL注入加以防范,则恶意攻击者就可以通过在用户名和密码输入框中添加特定的SQL语句,以达到查询后台数据库获取数据,甚至对后台数据库中的数据造成破坏的目的。网站所有用户的用户名和密码一般都保存在后台数据库的表中,当用户输入用户名和密码时,通过执行诸如下面形式的查询语句 阅读全文
posted @ 2013-06-19 15:54 ITGirl笑笑 阅读(307) 评论(0) 推荐(0)
摘要:http://msdn.microsoft.com/en-us/library/ms174318.aspx 阅读全文
posted @ 2012-12-24 11:06 ITGirl笑笑 阅读(152) 评论(0) 推荐(0)
摘要:索引碎片的产生:索引能够加快对表的访问速度,然而任何事物都有两面性,索引在带给我们便利的同时也会占用额外的磁盘空间,并且我们在对表进行增删改的操作时也要消耗额外的时间来更新索引。而在我们对包含索引的表进行增删改时,也会造成索引碎片,久而久之,索引碎片程度越来越高,反而会降低我们对表的访问速度。因此作为数据库管理员,要定期维护索引,修复索引碎片。查询索引碎片:通过sys.dm_db_index_physical_stats这个存储过程我们可以对索引的碎片信息进行查询,此存储过程适用于SQL 2005/2008/2008R2/2012。简单的模拟以下索引碎片产生的过程:1)首先创建一个带索引的表, 阅读全文
posted @ 2012-10-26 11:28 ITGirl笑笑 阅读(1748) 评论(1) 推荐(0)
摘要:通过对表或者视图建立索引,可以优化记录的查找效率。一、索引类型及其描述,如下:http://msdn.microsoft.com/en-us/library/ms175049.aspx关于如何创建各个类型的索引,也可以从以上文章中找到相应的链接。二、没有聚簇索引的表,我们称其为堆:http://msdn.microsoft.com/en-us/library/hh213609.aspx三、通过查询sys.indexes系统表可以查到所有索引和堆的信息:http://technet.microsoft.com/en-us/library/ms173760.aspx扩展阅读:http://www. 阅读全文
posted @ 2012-10-16 12:03 ITGirl笑笑 阅读(198) 评论(0) 推荐(0)
摘要:有时候我们想要批量向数据库中添加数据,只需要定义一个用于计数的变量,然后用while循环实现循环添加数据: 1. 循环插入一组内容相同的记录: declare @i int set @i=1 while @i<n begin insert into tablename(column_name1,column_name2,......) values(value1,... 阅读全文
posted @ 2012-10-16 11:32 ITGirl笑笑 阅读(542) 评论(0) 推荐(0)
摘要:SQL Server通过Server Roles来进行整个Server的权限管理,通过Database Roles来对单个的数据库进行权限管理。 通过将用户加到不同的Server Role组来控制用户对SQL Server的操作权限,首先,每一个SQL Server的用户都有public这个Server Role的权限,以下是SQL Server Security下除public外所有预定义Se... 阅读全文
posted @ 2012-09-21 15:58 ITGirl笑笑 阅读(844) 评论(0) 推荐(0)
摘要:启用Trace Flag 在单独的会话中启用 /禁用 DBCC TraceOn(Flag ID) DBCC TraceOff(Flag ID) 在所有会话中启用/禁用 DBCC TraceOn(Flag ID,-1) DBCC TraceOff(Flag ID,-1) 参考资料: http://sqlanddotnetdevelopment.blogspot.com/2011/1... 阅读全文
posted @ 2012-05-08 10:11 ITGirl笑笑 阅读(359) 评论(0) 推荐(0)
摘要:最近初步地学习了OVER子句及相关知识,以我目前的理解,OVER子句对首先对记录集进行分类,然后在分类的基础上排序的情况非常好用。 一、OVER子句介绍 1) 在相关联的开窗函数被应用之前,OVER子句用于对行集进行分区和排序。 2) OVER子句应用于:排名开窗函数(Ranking window functions)和聚合开窗函数(Aggregate window functions)。 ... 阅读全文
posted @ 2011-12-28 15:52 ITGirl笑笑 阅读(760) 评论(0) 推荐(0)
摘要:最近在学习SQL Server相关知识,一直不知道怎么使用GROUP BY语句,经过研究和练习,终于明白如何使用了,在此记录一下同时添加了一个自己举的小例子,通过写这篇文章来加深下自己学习的效果,还能和大家分享下,同时也方便以后查阅,一举多得一、GROUP BYGROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个列的结果集。语法如下:SELECT column1, column2, ... column_n, aggregate_function (expression) 阅读全文
posted @ 2011-12-19 15:20 ITGirl笑笑 阅读(2145) 评论(0) 推荐(1)
摘要:在SQL语句中,可以使用加号连接符来连接多个字符串,但是在默认情况下,如果连接的多个字符串中有一个为空值,则返回的连接字符串则为空。 例如以下语句,只要country,region或者city有一个为空(NULL),则location为空(NULL)。 SELECT custid, country, region, city, country + N',' + region + N',... 阅读全文
posted @ 2011-12-14 15:22 ITGirl笑笑 阅读(6886) 评论(0) 推荐(0)
摘要:标准的SQL语言中,单引号(‘’)用来分隔文字的字符串,比如’character’;而双引号(“”)用来分隔包含空格或者以数字开头的不规则的标识符,比如”irregular identifier”;用方括号[]也可以起到和双引号相同的作用。 不过在SQL Server中,可以通过QUOTED_IDENTIFIER来控制双引号(“”)的意义,set QUOTED_IDENTIFER ON:设... 阅读全文
posted @ 2011-12-14 14:50 ITGirl笑笑 阅读(577) 评论(0) 推荐(0)
摘要:1. 系统数据库: 对于数据库实例来说,系统数据库是默认数据库,在我们装好数据库时它们就是存在的。系统数据库有:master,model,msdb,tempdb以及Resource数据库。 master数据库存储着服务器配置信息,初始化信息,实例中所有数据库的信息;model数据库是一个数据库模板,所有用户数据库都是以model数据库为模板建立; tempdb数据库用于存储临时数据,每次数据库... 阅读全文
posted @ 2011-11-30 15:03 ITGirl笑笑 阅读(455) 评论(0) 推荐(0)
摘要:连接到SQL Server的实例,然后执行以下命令: SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY 阅读全文
posted @ 2011-09-23 17:36 ITGirl笑笑 阅读(181) 评论(0) 推荐(0)
摘要:有时候我们希望对SQL Server中的数据库只具有读的权限,而不可以更改,这时候就需要为SQL Server中的数据库设置sead-only模式。 ALTER DATABASE database-name SET READ_ONLY 如果想改回读写模式: ALTER DATABASE database-name SET READ_WRITE 阅读全文
posted @ 2011-09-22 16:45 ITGirl笑笑 阅读(594) 评论(0) 推荐(0)
摘要:TRUSTWORTHY 数据库属性用于指明 SQL Server 的实例是否信任该数据库以及其中的内容。默认情况下,除 msdb 数据库之外的所有系统数据库都将 TRUSTWORTHY 设置为 OFF。对于 model 和 tempdb 数据库,不能更改此值。 1. 可以通过ALTER DATABASE语句来修改数据库的TRUSTWORTHY属性(注意:必须是 sysadmin 固定服务器角色的... 阅读全文
posted @ 2011-09-21 10:58 ITGirl笑笑 阅读(1773) 评论(0) 推荐(0)
摘要:1. SQL Create Index 语句 CREATE INDEX语句用于在表中创建索引,以使查找数据更加快速和高效。但是更新带索引的表要比更新不带索引的表花费更长的时间,因此在最好只在经常需要查询数据的列或表格中创建索引。 CREATE INDEX index_name ON table_name (column_name) 创建唯一索引:不允许重复值 CREATE UNIQUE ... 阅读全文
posted @ 2011-09-13 17:51 ITGirl笑笑 阅读(205) 评论(0) 推荐(0)
摘要:SQL约束(Constraints): SQL约束用于限制一个表中数据的类型,可以在建表时(使用CREATE TABLE语句),也可以在建表后(使用ALTER TABLE)来指定约束。 约束包括以下几种: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT NOT NULL: 强制表中某列不接受空值。 CREATE ... 阅读全文
posted @ 2011-09-01 17:08 ITGirl笑笑 阅读(765) 评论(0) 推荐(0)
摘要:SELECT INTO: 从一个表中选择数据,然后将这些数据插入到另一个表中去。通常用于备份表。 选择所有列: Syntax: SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename Example: SELECT * INTO Persons_Backup IN 'Backup.mdb'... 阅读全文
posted @ 2011-09-01 15:57 ITGirl笑笑 阅读(414) 评论(0) 推荐(0)
摘要:一、 SQL JOINS用于在两个或多个表中查询。INNER JOIN: 当两个表至少存在一个匹配项时返回行。语法规则:SELECT column_name(s)FROM table_name1INNER JOIN table_name2ON table_name1.column_name=table_name2.column_nameLEFT JOIN: 即使在右表中没有匹配,仍返回左表中的所有行(返回左表中的所有行,以及右表中的匹配行)。语法规则:SELECT column_name(s)FROM table_name1LEFT JOIN table_name2ON table_name1 阅读全文
posted @ 2011-08-24 13:44 ITGirl笑笑 阅读(282) 评论(0) 推荐(0)
摘要:从SQL Server 2005开始,SQL开始集成了.NET Framework的CLR(Comman Language Runtime)组件,也就是说,现在我们可以使用任何.NET Framework语言(包括Microsoft Visual Basic .NET和Microsoft Visual C#)来编写存储过程、触发器、用户定义类型、用户定义函数(包括标量函数和表值函数)以及用户定义的... 阅读全文
posted @ 2011-08-03 10:55 ITGirl笑笑 阅读(244) 评论(0) 推荐(0)