数据库补充:常量,变量,函数及注释符,运算符,通配符,流程控制
常量
数据在内在中存储始终不变化的量叫常量 ,也称文字值或标量值.
常见的常量有: 数字常量,字符串常量;日期和时间常量;符号常量
变量
数据在内存中存储可以变化的量叫变量 SQL可以使用两种变量,一种是局部变量(以@开头,set 赋值,select 给多个局部变量赋值)和全局变量.
局部变量实例1
declare @song char(20)
set @song='I love flower'
print @song
局部变量实例2
declare @song char(20),@a int,@b int
select @song='I love flower',@a=1,@b=2
print @song
print @a
print @b
注释符,运算符,通配符,流程控制
注释 :不参与代码的编译
eg:
/*对Mydb数据库进行操作
显示My数据库中的Table1表中的全部内容
其中,Go命令标志批处理的结束
*/
Use Mydb
Select * from table1
Go
通配符 一般用like 与通配符结合起来(%,_,[],[^])
[]-指定范围([a~f])或集合([abcdef])中的任何单个字符 eg [0~9]123 表示以0~9之间任意一个字符开头,以’123’结尾的字符
[^]-表示不属于指定范围([a~f])或集合([abcdef])中的任何单个字符 eg [^0~5]123 表示不以0~5之间任意一个字符开头,却以’123’结尾的字符
流程控制
Begin…end 将多个SQL语句组合为一个逻辑块
declare @x int,@y int,@t int
select @x=1,@y=2
begin
set @t=@x
set @x=@y
set @y=@t
end
print @x
print @y
输入结果为 2 1
Waitfor; goto;while,if…else;break;return;continue
--while实现-10数字相加
declare @n int,@sum int
set @n=1
set @sum=0
while @n<=10
begin
set @sum=@n+@sum
set @n=@n+1
end
print @sum
/*goto语句实现跳转结果输出2 3*/
declare @x int
select @x=1
loving:
print @x
select @x=@x+1
while @x<=3 goto loving
/*waitfor语句结果过秒后输出'祝你节日快乐!'*/
waitfor delay '00:00:05'
print '祝你节日快乐!'
/*waitfor语句结果等到某个时间输出'祝你节日快乐!'*/
waitfor time '22:26:05'
print '祝你节日快乐!'
常用命令
Declare命令 用于声明一个或多个局部变量,游标变量或表变量
Print命令 显示一个字符串(最长为255个字符),局部变量或全局变量的内容
Select 查询和赋值
Set 局部变量赋值
Use 在前工作区打开或关闭数据库
Dbcc命令 用于验证数据库完整性,查找错误和分析系统使用情况等
/*demoData 是指定的数据库名*/
dbcc checkalloc('demoData')
Checkpoint命令
Raiserror 在SQL Server系统中返回错误信息时同时返回用户指定的信息
Readtext命令 用于读取text,ntext或image列中的值,从指定的位置开始读取指定的字符数
Backup
Restore
Shutdown
Writetext
函数
聚合函数
数学函数
通常可以用在SQL语句的表达式中,eg avg,sum,max,min….
字符串函数
日期和时间函数
--getdate 返回当前系统日期和时间
select GETDATE() as '现在时间'
--day 返回指定日期的天
select day('2013-07-05') as '指定日'
go
select DAY(getdate()) as '当前日'
--month 返回指定日期的月
select month('2013-07-05') as '指定月'
go
select month(getdate()) as '当前月'
--year 返回指定日期的年
select year('2013-07-05') as '指定年'
go
select year(getdate()) as '当前年'
--datediff 返回日期和时间的边界数 datediff(datepart,startdate,enddate)
--datepart可为year,quarter(季度),month,day,week,hour,minute,scond,millisecond
select datediff(day,'2012-07-05','2013-07-05') as '时间差距-datepart为日'
go
select datediff(QUARTER,'2012-07-05','2013-07-05') as '时间差距-datepart为季度'
go
select datediff(MILLISECOND,'2013-07-04','2013-07-05') as '时间差距-datepart为毫秒'
go
--dateadd() 添加日期时间 格式 dateadd(datepart,number,date)
select DATEADD("month",1,getdate()) as '加一个月的时间'
转换函数(cast和convert)
--语法格式cast(expression as data_type)
select CAST('luoqing' as nvarchar(3))
as 输出结果
--语法格式convert(data_type[lenght],expression[,style])
select
GETDATE() as UncovertedDateTime,
cast(getdate() as nvarchar(30)) as UsingCast,
convert(nvarchar(30),getdate(),126) as UsingConvrtTo_ISO601
go
元数据函数
Col_length 返回列定义的函数
--语法格式col_length('table','column')
select col_length ( 'Student','StudentName') as char类型长度
Col_name 返回数据库列的名称
--语法格式col_name('table_id','column_id'),table_id=object_id('table')
select col_name ( object_id('Student'),3 )
as char类型长度
Db_name 返回数据库名
--语法格式db_name()
select DB_NAME() as [Current Database]