一步一步往上爬
一.sysobjects中type的含义(与临时系统表TEMPDB..SYSOBJECTS 类似)
type char(2) 对象类型。可以是下列值之一:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
常用:U,P
二.RTRIM与LTRIM与TRIM
RTRIM:截断尾格空格或者说舍去右边空字符串返回字符串
LTRIM:删除起始空格后返回字符串表达式
TRIM: 前导和尾随空白,即左边和右边空格
语法LTrim(string)RTrim(string)Trim(string)必要的 string 参数可以是任何有效的字符串表达式。如果 string 包含 Null,将返回 Null
例子:
Declare @stringto_trim varchar(200)
Set @stringto_trim=' wo shi zhang wen ni shi shui ? '
Select 'Here is the string without ledaing:' + LTRIM(RTRIM(@stringto_trim))
Go
三.按顺序查询例子
Select * from table where dagan=’16’ or dagan=’11’ or dagan=’17’ or dagan=’15’ order by case dagan when ‘16’ then 1 whern ‘11’ then 2 when ‘17’ then 3 when ‘15’ then 4 end
四.Char(10)与VARCHAR(10)区别
CHAR(10):长度固定 如:“ABC”占据10个字节,7个空字符
VARCHAR(10):弹性,“ABC”占据3个字节,最大10个字符
五.CAST与CONVERT的使用
一般是从datetime型转化为VARCHAR型,一般建议使用CAST
CONVERT(data_type,expression[,style]) convert 是转换数据类型的函数
Select CONVERT(varchar(100), GETDATE(), 120): 20##-05-16 10:57:49
Select CONVERT(varchar(30),getdate(),101) now 06/02/2009
语句及查询结果:
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 20## 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 20## 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 20## 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 20##-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 20##-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 20##-05-16 <--------------
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 20##-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 20## 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 20##
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 20##
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 20## 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 20## 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 20##-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 20##-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 20##-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:
SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME
返回值将是 yy.mm.dd 00:00:00(如12:00AM作为时间戳;
六.Creat与alter
CREATR 是创建一个储存过程或者表时使用
Create Proc LyArticleInEditProc
ALTER 是修改储存过程时使用(有些时候储存过程不能被删除重新创建)
ALTER Procedure LyCountSalaryProc
七.新建一个储存过程以及新建一个临时表的方法
-- IF EXISTS意思是如果括号内有返回值的存在,则执行下面语句
IF EXISTS(SELECT * FROM sysobjects where name='zhangwengongziproc' and type='p'
drop proccedure zhangwengongziproc
use lymis
go
create proc zhangwengongziproc
(
@code varchar(10)
....
)
as
declare @Seven Float,
@Eight Float,
@Nine Float,
@SQL VarChar(1000),
@Year1 Char(4)
新建临时表
IF EXISTS(SELECT * FROM tempdb..sysobjects where name='##zhangwengongziproc' and type='u')
drop table ##zhangwengongziproc
use lymis
go
create table ##zhangwengongziproc
(
code varchar(10)
)
declare @Seven Float,
@Eight Float,
@Nine Float,
@SQL VarChar(1000),
@Year1 Char(4)
八.关于default(0.0)默认一位小数default(0)默认整数
九.Substring()函数使用
作用:截取字符串需要字符
Substring(‘’ABCDEFG’,2,4) 返回字符串第2位开始的第四个字符 即 BCED
十.Len()与datelength()区别
Len()返回字符数 注意:不包含尾格空字符,不可以对文本截断
Datelength()返回字节数
十一.union与union all区别
Union 对两个结果进行并集操作,不包括重复行,同时进行默认规则排序(INTERSECCT)
Union all对两个结果进行并集操作, 包括重复行, 不进行排序 (minus)
十二.引号 +号
declare @value varchar(100)
declare @str varchar(8000)
set @value=' a a '
set @str=' insert into 表名 values(你的名字 '+' '+ltrim(''+@value+'')+' '+' 张文)
print @str
十三.有关SQL数据库查询EXCEL导入导出
导入如:
if Exists (Select * from tempdb..Sysobjects where name='##tmptablep' and type='u')
Drop Table ##tmptablep
select sort,dept,class,plu into ##tmptablep
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\重複品牌業績導出\Modal.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[book1$]
insert into zhangwenRepPlu(sort,dept,class,plu)
select sort,dept,class,plu from ##tmptablep
SELECT * FROM OPENROWSET('microsoft.jet.oledb.4.0','excel 8.0;hdr=yse;User id=用户名;pwd=密码;database=e:\11.xls',[sheet1$])
--OpenDataSource 打开一个新的标记
--('Microsoft.Jet.OLEDB.4.0','Data Source=”” 是ADO控件
--D:\重複品牌業績導出\Modal.xls 是数据地址
--User ID=Admin;Password=;Extended properties=Excel 8.0'这是用户名 密码和操作方式
查询导出如:
EXEC master..xp_cmdshell 'bcp zhangwenRepPlu out d:\重複品牌業績導出\zhangwenRepPlu.xls -c -q -S"(local)" -U"sa" -P""'
---(文)-c -q -S"数据库服务器名" -U"数据库用户名" -P"数据库用户密码"'
十四INNER JION & LEFT JION & RIGHT JOIN 的区别
inner join(等值连接) 创建只包含联接字段中数据相同的记录的查询
left join(左联接) 创建左边外部联接.左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。如果没有相符值的记录则该字段的值为NULL
right join(右联接) 创建 右边外部联接.右边外部联接将包含了从第二个(右边)开始的两个表中的全部记录,即使在第一个(左边)表中并没有匹配值的记录。如果没有相符值的记录则该字段的值为NULL
注意:
1、在 INNER JOIN 之中可以写一个嵌套的 LEFT JOIN 或一个 RIGHT JOIN,但是在一个 LEFT JOIN 或一个 RIGHT JOIN 之中不能写
嵌套的 INNER JOIN。
2、可以链接多个 ON 子句。
3、以上为横向联接,并且是将左右两表中的所有字段合并,即使两表中拥有相同的字段名。
十五. isnull(sum(unitprice),0) , 不计算unitprice为null的值
和sum(isnull(unitprice,0)), 计算unitprice为null,并置为0
但结果是一样,如是avg函数,则结果会有区别的!
如:
Select saleno,IsNull(Sum(SsTotal),0) as jine From ##tmp where left(depcode,5)=@depcode Group by saleno
十六. DATEADD() 函数在日期中添加或减去指定的时间间隔。
-- Set @BegDate='20##-11-09'
-- Set @EndDate='20##-12-02'
-- Set @MidDate=@BegDate
--
-- While @MidDate<=@EndDate
-- Begin
-- Insert into LyYuGuDateRate(UpDepCode,PlanDate,DateRate,DateTotal)
-- values ('4',''+@MidDate+'','0','0')
--
-- Set @MidDate=Convert(char(10),DateAdd(d,1,@MidDate),120)
--
-- End
十七.SQL Server数据库快捷键:
书签:清除所有书签。 CTRL-SHIFT-F2
书签:或删除书签(切换)。 CTRL+F2
书签:移动到下一个书签。 F2 功能键
书签:移动到上一个书签。 SHIFT+F2
取消查询。 ALT+BREAK
连接:连接。 CTRL+O
连接:断开连接。 CTRL+F4
连接:断开连接并关闭子窗口。 CTRL+F4
数据库对象信息。 ALT+F1
编辑:清除活动的编辑器窗格。 CTRL+SHIFT+DEL
编辑:注释代码。 CTRL+SHIFT+C
编辑:复制。还可以使用 CTRL+INSERT。 CTRL+C
编辑:剪切。还可以使用 SHIFT+DEL。 CTRL+X
编辑:减小缩进。 SHIFT+TAB
编辑:在编辑器窗格中删除至行尾。 CTRL+DEL
编辑:查找。 CTRL+F
编辑:转到行号。 CTRL+G
编辑:增大缩进。 TAB
编辑:使选定内容为小写。 CTRL+SHIFT+L
编辑:使选定内容为大写。 CTRL+SHIFT+U
编辑:粘贴。还可以使用 SHIFT+INSERT。 CTRL+V
编辑:删除注释。 CTRL+SHIFT+R
编辑:重复上次搜索或查找下一个。 F3 功能键
编辑:替换。 CTRL+H
编辑:全选。 CTRL+A
编辑:撤消。 CTRL+Z
执行查询。还可以使用 CTRL+E (针对向后兼容性)。 F5 功能键
SQL 查询分析器帮助。 F1 功能键
对所选 Transact-SQL 语句的帮助。 SHIFT+F1
浏览:在查询窗格和结果窗格之间切换。 F6 功能键
浏览:切换窗格。 Shift+F6
浏览:窗口选择器。 CTRL+W
"新建查询"窗口。 CTRL+N
对象浏览器(显示/隐藏)。 F8 功能键
对象搜索。 F4 功能键
分析查询并检查语法。 CTRL+F5
打印。 CTRL+P
结果:以表格格式显示结果。 CTRL+D
结果:以文本格式显示结果。 CTRL+T
结果:移动拆分器。 CTRL+B
结果:将结果保存为文件。 CTRL+SHIFT+F
结果:显示结果窗格(切换)。 CTRL+R
保存。 CTRL+S
模板:模板。 CTRL+SHIFT+INSERT
模板:替换模板参数。 CTRL+SHIFT+M
优化:显示预估执行计划。 CTRL+L
优化:显示执行计划(切换开/关)。 CTRL+K
优化:索引优化向导。 CTRL+I
优化:显示客户统计 CTRL+SHIFT+S
优化:显示服务器跟踪。 CTRL+SHIFT+T
使用数据库。 CTRL+U
十八。Datename用法
返回代表指定日期的指定日期部分的字符串
语法
DATENAME ( datepart , date )
参数
datepart是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server? 识别的日期部分和缩写。
日期部分 缩写
Year yy, yyyy
Quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
Hour hh
minute mi, n
second ss, s
millisec ond ms
如:datename(weekday,xsdate) in(''星期五'',''星期六'',''星期日'')
declare @KStime varchar(10)
set @KStime = '20##-11-20'
Select datename(weekday,convert(datetime,@KStime)) 返回星期四
Or
declare @KStime varchar(10)
set @KStime = '20##-11-20'
Select datename(weekday,@KStime)
Or
declare @KStime varchar(10)
set @KStime = '20##年1月5日'
--Select datename(weekday,convert(datetime,@KStime))
Select datename(weekday,replace(replace(replace(@KStime,'年','-'),'月','-'),'日','-')) 等同
declare @KStime varchar(10)
set @KStime = '20##年1月5日'
set @KStime =
replace(replace(replace(@KStime,'年','-'),'月','-'),'日','-')
select datename(weekday,@KStime)
十九。STUFF
删除指定长度的字符并在指定的起始点插入另一组字符。
语法
STUFF ( character_expression , start , length , character_expression )
示例
下例通过在第一个字符串 (abcdef) 中删除从第二个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,创建并返回一个字符串。
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO
下面是结果集:
---------
aijklmnef
(1 row(s) affected)
二十。关于赋值(当后面是一条语句时,子查询时候记得用括号)
set @i=(select max(orderId) from ##teptabledate)
200x年在全行员工忙碌紧张的工作中又临近岁尾。年终是最繁忙的时候,同时也是我们心里最塌实的时候。因为回首这一年的工作,我们会计出…
个人工作总结转眼间,20xx年也将过去,来电气工程部技术科工作已经一年多了,在这一年多里我已经渐渐完成了由一个大学毕业生向一个工程…
金刚杰网站建设总结报告“光阴似箭,日月如梭”。转瞬之间,20xx又接近尾声,在刘中和老师的精心辅导下和网络部部长杨森辛苦配合之下,…
九月份已过去,十月份来到了。九月份,一个很忙碌的季节,时间很短暂。在这个九月份我收获了不少的快乐和知识。九月份我的业绩目标是完成1…
XX年度个人工作总结根据乡党委、政府的安排,本人主要负责妇联工作,兼管政府财务人事劳资工作,配合两办做好会务筹备来人接待工作,包村…