--聚合函数
use?pubs
go
select?avg(distinct?price)??--算平均数
from?titles
where?type='business'
go?
use?pubs
go
select?max(ytd_sales)??--最大数
from?titles
go?
use?pubs
go
select?min(ytd_sales)?--最小数
from?titles
go?
use?pubs
go
select?type,sum(price),sum(advance)??--求和
from?titles
group?by?type
order?by?type
go?
use?pubs
go?
select?count(distinct?city)??--求个数
from?authors
go?
use?pubs
go
select?stdev(royalty)?--返回给定表达式中所有值的统计标准偏差
from?titles
go?
use?pubs
go
select?stdevp(royalty)?--返回表达式中所有制的填充统计标准偏差
from?titles
go?
use?pubs
go
select?var(royalty)?--返回所有值的统计方差
from?titles
go?
use?pubs
go
select?varp(royalty)?--返回所有值的填充的统计方差
from?titles
go?
--数学函数?
select?sin(23.45),atan(1.234),rand(),PI(),sign(-2.34)?--其中rand是获得一个随机数
--配置函数
SELECT?@@VERSION?--获取当前数据库版本
SELECT?@@LANGUAGE?--当前语言
--时间函数
select?getdate()?as?'wawa_getdate'?--当前时间
select?getutcdate()?as?'wawa_getutcdate'?--获取utc时间
select?day(getdate())?as?'wawa_day'?--取出天
select?month(getdate())?as?'wawa_month'?--取出月
select?year(getdate())?as?'wawa_year'?--取出年
select?dateadd(d,3,getdate())?as?wawa_dateadd?--加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一样
select?datediff(d,'2004-07-01','2004-07-15')?as?wawa_datediff?--计算两个时间的差
select?datename(d,'2004-07-15')?as?wawa_datename?--取出时间的某一部分
select?datepart(d,getdate())?as?wawa_datepart??--取出时间的某一部分,和上面的那个差不多
--字符串函数
select?ascii(123)?as?'123',ascii('123')?as?'"123"',ascii('abc')?as?'"abc"'?--转换成ascii码
select?char(123),char(321),char(-123)?--根据ascii转换成字符
select?lower('ABC'),lower('Abc'),upper('Abc'),upper('abc')?--转换大小写
select?str(123.45,6,1),?str(123.45,2,2)?--把数值转换成字符串
select?ltrim('????"左边没有空格"')??--去空格
select?rtrim('"右边没有空格"?????')?--去空格
select?ltrim(rtrim('???"左右都没有空格"????'))?--去空格
select?left('sql?server',3),right('sql?server',6)?--取左或者取右?
use?pubs
select?au_lname,substring(au_fname,1,1)?--取子串
from?authors
order?by?au_lname?
select?charindex('123','abc123def',2)?--返回字符串中指定表达式的起始位置
select?patindex('123','abc123def'),patindex('%123%','abc123def')?--返回表达式中某模式第一次出现的起始位置
select?quotename('abc','{'),quotename('abc')?--返回由指定字符扩住的字符串
select?reverse('abc'),reverse('上海')?--颠倒字符串顺序
select?replace('abcdefghicde','cde','xxxx')?--返回呗替换了指定子串的字符串
select?space(5),space(-2)?
--系统函数
select?host_name()?as?'host_name',host_id()?as?'host_id',user_name()?as?'user_name',user_id()?as?'user_id',db_name()?as?'db_name'
--变量的定义使用
--声明局部变量
declare?@mycounter?int
declare?@last_name?varchar(30),@fname?varchar(20),@state?varchar(2)?--一下声明多个变量
--给变量赋值
use?northwind
go
declare?@firstnamevariable?varchar(20),
?@regionvariable?varchar(30)
set?@firstnamevariable='anne'?--可以用set,也可以用select给变量赋值,微软推荐用set,但select在选择一个值直接赋值时很有用
set?@regionvariable?='wa'?
select?lastname,firstname,title??--用声明并赋值过的变量构建一个Select语句并查询
from?employees
where?firstname=?@firstnamevariable?or?region=@regionvariable
go
--全局变量
select?@@version??--返回数据库版本
select?@@error??--返回最后的一次脚本错误
select?@@identity??--返回最后的一个自动增长列的id?
--while,break,continue的使用
--首先计算所有数的平均价格,如果低于30的话进入循环让所有的price翻倍,
--里面又有个if来判断如果最大的单价还大于50的话,退出循环,否则继续循环,知道最大单价大于50就break出循环,呵呵,
--我分析的应该对吧.
use?pubs
go
while?(select?avg(price)?from?titles)?<$30?
begin
?update?titles
??set?price=price*2
??select?max(price)?from?titles
??if(select?max(price)?from?titles)?>$50
??break
??else
??continue
end
print?'too?much?for?the?marker?to?bear'?
--事务编程经典例子
--begin?transaction是开始事务,commit?transaction是提交事务,rollback?transaction是回滚事务
--这个例子是先插入一条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit?提交这个事务了哦
--上面的那个return返回可以返回一个整数值,如果这个值是0的话就是执行的时候没出错,如果出错了就是一个负数,
--这个return也可以用在存储过程中,[email protected]_status=?pro_name来获取这个值
use?pubs
go
begin?tran?mytran
?insert?into?stores(stor_id,stor_name)
??values('333','my?books')
?go
?insert?into?discounts(discounttype,stor_id,discount)
??values('清仓甩卖','9999',50.00)
?if?@@error<>0
??begin
???rollback?tran?mytran
???print?'插入打折记录出错'
???return
??end
commit?tran?mytran?
--事务处理的保存点示例
--做了事务保存点后可以rollback(回滚)到指定的保存点,不至于所有的操作都不能用
use?pubs
go
select?*?from?stores
begin?transaction?testsavetran
?insert?into?stores(stor_id,stor_name)
??values('1234','W.Z.D?Book')
?save?transaction?before_insert_data2
?go
?insert?into?stores(stor_id,stor_name)
??values('5678','foreat?Books')
?go
rollback?transaction?before_insert_data2
select?*?from?stores?
--存储存储过程
use?pubs
if?exists(select?name?from?sysobjects?where?name=?'proc_calculate_taxes'?and?type='P')
?drop?procedure?proc_calculate_taxes
go
create?procedure?proc_calculate_taxes?(@p1?smallint=42,@p2?char(1),@p3?varchar(8)='char')
as
select?*
from?titles
--执行过程
EXECUTE?PROC_CALCULATE_TAXES?@P2='A'
详细解决方案
Sqlserver 函数/事宜/存储过程
热度:621 发布时间:2016-05-05 14:38:41.0
相关解决方案
- [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.多谢
- com.microsoft.sqlserver.jdbc.SQLServerException: 列名 n_id 无效。解决方案
- com.microsoft.sqlserver.jdbc.SQLServerException: 该联接已关闭
- Cannot load JDBC driver class 'com.microsoft.jdbc.sqlserver.SQLServerDriver'解决方法
- com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。该怎么解决
- com.microsoft.sqlserver.jdbc.SQLServerException: 没为参数号 2 设置值
- com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'sa' 登录失败。该用户与可托 SQL Server
- java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.解决思路
- java sqlserver jdbc有关问题
- asp.net mvc3.0+sqlserver 高并发日记系统解决方案,求思路
- asp.net +sqlserver 能不能 读取一次数据库,然后按条件输出,该如何解决
- sqlserver bulk insert 远道导入数据!
- sqlserver 2005 的問題,该如何处理
- sqlserver 数据库备份,该怎么处理
- 未能加载资料或程序集“Microsoft.SqlServer.Replication”或它的某一个依赖项。试图加载格式不正确的程序
- MS sqlserver 查询有关问题,
- 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键, 注意:ID可能不是连续的。解决思路
- Microsoft.SqlServer.Replication.dll 引发的IIS异常
- C# SQLServer 企业应用解决思路
- sqlserver like '%,3,%' 有关问题。
- sqlserver 建数据库时表示时间,金额和重量的字段用什么数据类型好,有人说全用nvarchar因为好操作,求解,该怎么解决
- sqlserver 表的ID有关问题
- 请教mysql 跟 sqlserver 相似吗
- sqlserver dri权限是指什么?解决办法
- sqlserver ntext存储长度的有关问题
- asp.net sqlserver 怎么用一段代码来实现查询功能
- 关于SQL过滤,仅过滤单引号是否可以防止注入(access,sqlserver),该如何处理
- 哪位兄弟推荐个易于整合到网站用户的bbs源码(asp.net2.0+sqlserver),该如何解决
- 大型 OA C#+SQLSERVER 源码,该怎么解决