sql server学习过程中遇到的一些语句

来源:互联网 发布:淘宝女装好店铺推荐 编辑:程序博客网 时间:2024/06/01 09:49

exec

第一个,执行存储过程:如果 EXEC SP_XXX

    嗯,存储过程(Stored Procedure):已预编译为一个可执行过程的一个或多个SQL语句。 详细:http://www.cnblogs.com/yank/p/4235609.html

第二个,执行组合的命令字符串,如:

1
2
3
4
5
6
7
8
declare @cmd varchar(500)
select @cmd='select * from '
select @cmd = @cmd + 'tbTest'
select @cmd = @cmd + ' where 1=1'
exec(@cmd)
 
-- 相当于执行了 select * from tbTest where 1=1 这条查询命令
-- 更多带参数传递形式的调用,请参考MSSQL的帮助信息。
https://zhidao.baidu.com/question/208485720.html

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

EXEC sp_addrolemember 
@rolename = 'student_role',
@membername = 'student_user';


EXEC sp_addrolemember
@rolename = 'admin_role',
@membername = 'admin_user';


use library;
go
exec sp_helprotect @username = 'admin_user';
/*
use library;
go
exec sp_helprotect @username = 'student_user';
*/

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  • [Linked server]LLSS (这个是共享数据库的连接名称,后续会用在数据库查询中)
    SELECT * FROM [LLSS].[DBName].[Schema].[TableName] SELECT * FROM [SERVER134].[CompanyDB].[dbo].[Employee]
  • [Server type]: 选择 [Other data source] 配置
  • [Provider][Choose SQL Native Client]
  • [Product Name]ZZZZZZZZZ 
    [ZZZZZZZZZ][Server2005]
  • [Data source]: XXX.XXX.XXX.XXX\DDSS (SQLServer的网络名称).
    [ XXX.XXX.XXX.XXX\DDSS][192.168.100.134\Server2005]
  • [Provider string]: (参数空就好了)
  • [Location]: 这个配置是灰色
  • [Catalog]:这个是默认数据库,可以是空的

然后打开“Security”,选择“be made using this security context”,然后配置参数
  • [Remote login]XX (这个共享数据库实例的账号)
    [XX[sa]
  • [With Password]YY (密码)
    [YY][MyS@P@ss ]
然后点击保存,完成一个实例的配置。
链接:http://www.dfwlt.com/forum.php?mod=viewthread&tid=496
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


http://www.cnblogs.com/chenmh/p/4080420.html
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份
http://blog.csdn.net/sqlserverdiscovery/article/details/11020057/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在sql server中decimal与numeric类型有什么区别吗?


http://www.itpub.net/thread-205212-1-1.html

//////////////////////////////////////////////////////////////////////////////////

BACKUP (Transact-SQL)
https://msdn.microsoft.com/zh-cn/library/ms186865(v=sql.105).aspx
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
如果要让sqlserver恢复到某个时间点的状态,是否可行呢?答案是肯定的,下面就教您这种sqlserver恢复的方法,供您参考,希望在您学习sqlserver恢复的过程中能起到些许作用。


--创建测试数据库   
CREATE DATABASE Db   
GO   
 
--对数据库进行备份   
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT   
GO   
 
--创建测试表   
CREATE TABLE Db.dbo.TB_test(ID int)   
 
--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)   
WAITFOR DELAY '00:00:01'   
GO   
 
--假设我们现在误操作删除了 Db.dbo.TB_test 这个表   
DROP TABLE Db.dbo.TB_test   
 
--保存删除表的时间   
SELECT dt=GETDATE() INTO #   
GO   
 
--在删除操作后,发现不应该删除表 Db.dbo.TB_test   
 
--下面演示了如何恢复这个误删除的表 Db.dbo.TB_test   
 
--首先,备份事务日志(使用事务日志才能还原到指定的时间点)   
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT   
GO   
 
--接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)   
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY   
GO   
 
--将事务日志还原到删除操作前(这里的时间对应上面的删除时间,并比删除时间略早   
DECLARE @dt datetime   
SELECT @dt=DATEADD(ms,-20,dt) FROM #  --获取比表被删除的时间略早的时间   
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt   
GO   
 
--查询一下,看表是否恢复   
SELECT * FROM Db.dbo.TB_test   
 
/*--结果:   
ID             
-----------    
 
(所影响的行数为 0 行)   
--*/   
 
--测试成功   
GO   
 
--最后删除我们做的测试环境   
DROP DATABASE Db   
DROP TABLE #   
http://database.51cto.com/art/201009/226152.htm
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
http://blog.csdn.net/dba_huangzj/article/details/8491327
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DBCC用法
http://www.cnblogs.com/lilycnblogs/archive/2011/03/31/2001372.html
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]INDEX index_name ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )[with[PAD_INDEX][[,]FILLFACTOR=fillfactor][[,]IGNORE_DUP_KEY][[,]DROP_EXISTING][[,]STATISTICS_NORECOMPUTE][[,]SORT_IN_TEMPDB]][ ON filegroup ]

CREATE INDEX命令创建索引各参数说明如下:

UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。

CLUSTERED:用于指定创建的索引为聚集索引。

NONCLUSTERED:用于指定创建的索引为非聚集索引。

index_name:用于指定所创建的索引的名称。

table:用于指定创建索引的表的名称。

view:用于指定创建索引的视图的名称。

ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。

Column:用于指定被索引的列。

PAD_INDEX:用于指定索引中间级中每个页(节点)上保持开放的空间。

FILLFACTOR = fillfactor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。

IGNORE_DUP_KEY:用于控制当往包含于一个唯一聚集索引中的列中插入重复数据时SQL Server所作的反应。

DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。

STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。

SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb 数据库中。

ON filegroup:用于指定存放索引的文件组。

--表bigdata创建一个名为idx_mobiel的非聚集索引,索引字段为mobielcreate index idx_mobielon bigdata(mobiel) --表bigdata创建一个名为idx_id的唯一聚集索引,索引字段为id--要求成批插入数据时忽略重复值,不重新计算统计信息,填充因子为40create unique clustered index idx_idon bigdata(id) with pad_index,fillfactor=40,ignore_dup_key,statistics_norecompute

Exec sp_helpindex BigData   --查看索引定义
Exec sp_rename 'BigData.idx_mobiel','idx_big_mobiel'  --将索引名由'idx_mobiel' 改为'idx_big_mobiel'
drop index BigData.idx_big_mobiel  --删除bigdata表中的idx_big_mobiel索引
dbcc showcontig(bigdata,idx_mobiel) --检查bigdata表中索引idx_mobiel的碎片信息
dbcc indexdefrag(Test,bigdata,idx_mobiel)  --整理test数据库中bigdata表的索引idx_mobiel上的碎片
update statistics bigdata  --更新bigdata表中的全部索引的统计信息

http://www.cnblogs.com/knowledgesea/p/3672099.html

ALTER INDEX { 索引名| ALL }
    ON <表名|视图名>
    { REBUILD  | DISABLE  | REORGANIZE }[ ; ]
ALTER INDEX语句的参数比较复杂,这里只介绍它的基本使用情况。参数说明如下:
REBUILD指定重新生成索引。
DISABLE指定将索引标记为已禁用。
REORGANIZE指定将重新组织的索引叶级。

https://www.2cto.com/database/201301/186302.html

通过sp_helpindex 查看表中索引

EXECUTE SP_HELPINDEX @OBJNAME = '表名';

///////////////////////////////////////////////////////////////////////

truncate table Employee;

///////////////////////////////////////////////////////////////////////

CREATE TABLE [dbo].[Article](
[Id][int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[MsId][int] NOT NULL,
[Title][nvarchar](96) NOT NULL,
[TitleBak][nvarchar](96) NOT NULL,
[Summary][nvarchar](512) NOT NULL,
[SummaryImageUrl][nvarchar](256) NOT NULL,
[Tag][nvarchar](50) NOT NULL,
[ArticleChannel_Id][int] NOT NULL,
[ArticleCategory_id][int] NOT NULL,
[IsApproved][bit] NOT NULL,
[Creator_Id][int] NOT NULL,
[CreatedDateTime][datetime] NOT NULL,
[ModifiedDateTime][datetime] NOT NULL,
[ViewCount][int] NOT NULL,
[ReplyCount][int] NOT NULL,
[DiggCount][int] NOT NULL,
[FavoriteCount][int] NOT NULL,
[LastReplyUser_Id][int] NOT NULL,
[LastReplyDateTime][datetime] NOT NULL,
[RightType][int] NOT NULL,
[IsDisplayContent][bit] NOT NULL,
[IsSensitive][bit] NOT NULL,
[Source][int] NOT NULL,
CONSTRAINT [PK_Articles] PRIMARY KEY CLUSTERED(
[Id] ASC
)WITH(PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON
)ON [PRIMARY]
)ON [PRIMARY]


DECLARE @number INT
SET @number = 200000
 
WHILE @number > 0
BEGIN
INSERT dbo.Article
(
MsId,
Title,
TitleBak,
Summary,
SummaryImageUrl,

Tag,
ArticleChannel_Id,
ArticleCategory_Id,
IsApproved,
Creator_Id,

CreatedDateTime,
ModifiedDateTime,
viewCount,
ReplyCount,
DiggCount,

FavoriteCount,
LastReplyUser_Id,
LastReplyDateTime,
RightType,
IsDisplayContent,

IsSensitive,
Source
)
VALUES
(
@number,
'Title' + cast(@number As VARCHAR(20)),
'TitleBak' + cast(@number AS VARCHAR(20)),
'Summary' + cast(@number AS VARCHAR(20)),
'SummaryImageUrl' + cast(@number AS VARCHAR(20)),

'Tag' + cast(@number AS VARCHAR(20)),
1,
2,
0,
@number,

GETDATE(),
GETDATE(),
100,
29,
123,

12,
@number,
GETDATE(),
1,
0,

0,
2
)
SET @number = @number - 1
END


WITH TEMP AS
(
SELECT ROW_NUMBER() OVER (ORDER BY CreatedDateTime) AS ROW,CreatedDateTime,ViewCount
FROM Article
WHERE Creator_Id = 199996
)
SELECT * 
FROM TEMP
WHERE ROW BETWEEN 1 AND 5;


CREATE INDEX Ix_article_creatorid ON Article(Creator_Id)

http://www.cnblogs.com/kevinlzf/archive/2009/10/28/1591201.html

Exec sp_helpindex BigData
Exec sp_rename 'BigData.idx_mobiel','idx_big_mobiel'
drop index BigData.idx_big_mobiel
dbcc showcontig(bigdata,idx_mobiel)
dbcc indexdefrag(Test,bigdata,idx_mobiel)
update statistics bigdata
http://www.cnblogs.com/knowledgesea/p/3672099.html
这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:
on update 和 on delete 后面可以跟的词语有四个
no action , set null , set default ,cascade
no action 表示 不做任何操作,
set null 表示在外键表中将相应字段设置为null
set default 表示设置为默认值
cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除
https://zhidao.baidu.com/question/113831827.html
@声明变量,@@系统函数,#本地临时表,##全局临时表
//////////////////////////////////////////////////////////////