SET NOCOUNT ON ---不返回计数,也就是sql操作受影响的行数
SET NOCOUNT OFF --和上面正好相反
SET QUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON
这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。
当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。
SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。
当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
DML(Data Manipulation Language)数据操纵语言(SQL中的分类)还有以下两种:
DDL(Data Definition Language)数据定义语言
DCL(Data Control Language)数据控制语言
DLL包括以下SQL语句: CREATE TABLE ALTER TABLE DROP TABLE CREATE INDEX DROP INDEX
DCL包括以下SQL语句: GRANT REVOKE COMMIT ROLLBACK LOCK
DML包括以下SQL语句: INSTER UPDATE DELETE SELECT
SELECTE @@VERSION 查看数据库服务器版本
Sql创建文件夹--通过调用doc来建立,这个命令涉及到安全问题,用完一定要关闭
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1 --开启cmdshell
RECONFIGURE
GO
set @path = 'mkdir D:/数据库备份/'+@dateTime
exec xp_cmdshell @path,NO_OUTPUT
EXEC sp_configure 'xp_cmdshell',0 --关闭cmdshell
CONVERT函数全部用法对日期操作
格式:
CONVERT(data_type,expression[,style])
说明:
(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到的函数的3个参数,
第1个参数为,转换后的大小,第2个为转换日期的字段或函数,第3个为转换的格式,具体如下:
0 | 0 or 100 | mon dd yyyy hh:miAM(或PM)
1 | 101 | mm/dd/yy
2 | 102 | yy-mm-dd
3 | 103 | dd/mm/yy
4 | 104 | dd-mm-yy
5 | 105 | dd-mm-yy
6 | 106 | dd mon yy
7 | 107 | mon dd,yy
8 | 108 | hh:mm:ss
9 | 9 or 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
10 | 110 | mm-dd-yy
11 | 111 | yy/mm/dd
12 | 112 | yymmdd
11| 13 or 113 | dd mon yyyy hh:mi:ss:mmm(24小时制)
14 | 114 | hh:mi:ss:mmm(24小时制)
15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小时制)
16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制)
具体例子:
查询2009-09-01到2009-10-31之间的数据
select * from qb_mm5_data
where dt between CONVERT(datetime , '2009-09-01', 110 )
and convert(datetime , '2009-10-30', 110 ) and id =0
工作中的常用SQl语句
No.1 增,删,改字段
增加字段
alter table 表名 add 字段名 字段类型 是否可为空
示例: alter table student add sid int not null
更新字段
alter table 表名 alter column 字段名 字段类型 是否为空
示例: alter table student alter column sid varchar(20) null
删除字段
alter table 表名 drop column 字段名
示例: alter table student drop column sid
NO.2 判断有无该表,有的话删除掉重新建立
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[student]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[student]
NO.3 多条件语句,类似swich语句
示例:
declare @sumdays [int]
declare @grade [int]
select @grade =
case
when @sumdays=40 then 1
when @sumdays>40 then 2
end
NO.4 备份还原语句
备份:
BACKUP DATABASE [QPShopDB] TO DISK = N'D:/数据库备份/100209/QPShopDB.bak' WITH NOFORMAT, NOINIT, NAME = N'QPShopDB-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10
还原:
RESTORE DATABASE [News] FROM DISK = N'D:/数据库备份/100209/QPShopDB.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
NO.5 给表建立索引
如下:给ErrReport表的Version列建立Version_Indexf索引:
CREATE NONCLUSTERED INDEX [Version_Index] ON [dbo].[ErrReport] ([Version] ASC )
如果是聚集索引将NONCLUSTERED改成CLUSTERED即可