SQLServer数据库开发
SQLServer数据库开发
1、T-SQL编程
1变量
局部变量
局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用。其说明形式如下:
DECLARE @变量名变量类型 [@变量名变量类型…]
例如:DECLARE @id char(10) —–声明一个长度为10的字符变量
全局变量
全局变量不是由用户的程序定义的,它们是在服务器级定应义的。只能使用预先说明及定义的变局变量。引用全局变量时,必须以“@@”开头。局部变量的名称不能与全局变量的名称相同、否则会在应用中出错。
常用全局变量
@@ERROR |
最后一个T-SQL错误的错误号 |
@@IDENTITY |
最后一次插入的标识值 |
@@LANGUAGE |
当前使用的语言的名称 |
@@MAX_CONNECTIONS |
可以创建的同时连接的最大数目 |
@@ROWCOUNT |
受上一个SQL语句影响的行数 |
@@SERVERNAME |
本地服务器的名称 |
@@TRANSCOUNT |
当前连接打开的事务数 |
@@VERSION |
SQL Server的版本信息 |
例如: select @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。2输出语句
使用print或select输出
Print/Select 变量或表达式
3控制语句
在c语言中,逻辑控制语句是if-else,switch,for,while,在sql编程中,也大相径庭,这里的逻辑控制语句分别是:if-else,while,case-end语句
if-else语句
语法格式为:
if(条件)
begin
语句1
语句2
end
else
begin
语句1
语句2
end
注意:begin…end相当于c语言中的大括号,有多条语句才使用begin…end,相当于begin…end之间的语句就是一个语句块
看个实例更容易理解,例:
declare @myavg float
select @myavg=avg(writexam) from stumake
print '本班平均分' + convert(varchar(5),@myavg)
if(@myavg>70)
begin
print '前三的成绩为'
select top 3 * from stumake order by writexam dese
end
else
begin
print '后三名的成绩为'
select top 3 * from stumake order by writexam asc
end
在使用T-SQL编程时,可以切换视图来查看结果,工具>选项>查询结果>常规>显示结果的默认方式>以文本格式显示结果,查看效果更好
while循环语句
语法格式为:
while(条件)
begin
语句1
语句2
break
end
注意:break是表示结束循环,与c语言中的辅助控制语句break,continue类似
看个实例:
declare @n int
where(1=1) --条件永远成立
begin
select @n=count(*) from stuMarks
where writtenExam<60 --统计不及格人数
if (@n>0)
update stuMarks --每人加2分
set writtenExam=writtenExam+2
else
break --退出循环
end
print '加分后的成绩如下:'
select * from stuMarks
case-end多分支语句
语法格式为:
case
when 条件1 then 结果1
when 条件2 then 结果2
else 其他结果
end
4批处理
批处理是作为一个逻辑单元的T-SQL语句。如果一条语句不能通过语法分析,那么不会运行任何语句。如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经运行了。为了将一个脚本分为多个批处理,可使用GO语句。
GO语句的特点:
GO语句必须自成一行,只有注释可以再同一行上。
它使得自脚本的开始部分或者最近一个GO语句以后的所有语句编译成一个执行计划并发送到服务器,与任何其他批处理无关。
GO语句不是T-SQL命令,而是由各种SQL Server命令实用程序(如:ManagementStudio中的"查询"窗口)识别的命令。
2、SQL高级查询
1嵌套子查询
子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择
子查询是嵌套在另一个查询中的select—from—where表达式。子查询嵌套在where子句中,通常用于对集合的成员资格、集合的比较以及集合的基数进行检查,还用于:空关系测试,重复元祖存在性测试,from子句中的子查询,with子句。
集合成员资格:连接词in测试元组是否是集合中的成员,集合是由select子句产生的一组值构成的,对应的还有not in。
短语“至少比某一个要大”在SQL中用“>some”表示。
some子句的定义:C<comp> some r <=>存在t属于r(C <comp> t),其中<comp>可以为:< ,>,=,……(=some)=in;但是,(不等于some)不等于notin。
在SQL中,结构>all对应于词组“比所有的都大”。
all子句的定义:C <comp> all r <=> 任意t属于r(C<comp>t);(不等于all)等于not in 但是,(=all)不等于in。
SQL还有一个特性可测试一个子查询的结果中是否存在元组。exists结构在作为参数的子查询为空时返回true值。
Exists r <=> r不等于0
Not exists r<=> r=0
还可以将“关系A包含关系B”写成“not exists(B except A)”.
还有一个布尔函数,用于测试在一个子查询的结果中是否存在重复元组。如果作为参数的子查询结果中没有重复的元组unique结构将返回true值。
SQL允许在from子句中使用子查询表达式。任何select-from-where表达式返回的结果都是关系,因而可以被插入到另一个select-from-where中任何关系可以出现的位置。
2聚合技术
SQL提供了五个固有聚集函数:
平均值:avg
最小值:min
最大值:max
总和:sum
计数:count
其中,sum和avg的输入必须是数字集,但其他运算符还可以作用在非数字数据类型的集合上,如字符串。
还有分组聚集(group by):其中子句出的一个或多个属性是用来构造分组的,在group by子句中的所有属性上取值相同的元组将被分在一个组中。
having子句类似于where子句,但其是对分组限定条件,而不是对元组限定条件,having子句中的谓词在形成分组后才起作用,因此可以使用聚集函数。
3排序函数
row_number()
函数一般用于组内排序,而其他三个函数是对结果集排序
特点:没有并列编号,不跳空编号
rank()
特点:有并列编号,有跳空编号
dense_rank()
特点:有并列编号,没有跳空编号
4公用表表达式
语法结构
Withexpression_name [(column_name)(…..n)]
AS
(CTE query_definition) 查询结果
后续使用结果集时可直接使用公用表名称expression_name
3、存储过程
1存储过程的概念(存储过程都是用exec调用)
存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务规则,存储过程可以带参数,也可以返回结果。
存储过程可以包含数据操纵语句、变量、逻辑控制语句等,比如:单个select语句,select语句块,select语句与逻辑控制块。
存储过程优点:
执行速度更快
允许模块化程序设计
提高系统安全性
减少网络流通量
2系统存储过程
由系统定义,存放在master数据库中
类似C语言中的系统函数
系统存储过程的名称都以“sp_”开头或”xp_”开头
3用户自定义存储过程
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 =默认值 OUTPUT,
……,
@参数n 数据类型 =默认值 OUTPUT
AS
SQL语句
GO
4RAISERROR
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ]
)
[ WITH option [ ,...n ] ]
用户可定义0-18之间严重级别
SQLServer数据库开发相关推荐
- SQL-Server数据库开发总结
良好数据库设计的表现 执行效率高 使用应用程序便于开发 容易进一步扩展 实体-关系(E-R)数据模型 数据模型只应包含那些对描述现实世界有意义的抽象概念.在数据模型中,抽象是必须的,模型就是抽象的产物 ...
- SqlServer数据库开发神器‘SQLPrompt’ 插件的使用说明
SQLPrompt是Sql Server 开发智能提示插件,方便查询表结果,避免了开发人员一个个敲查询语句.执行语句等,下面带大家仔细了解一下. 打开Sql Server,该插件会自动运行,将数据库中 ...
- sqlserver数据库迁移mysql_在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合...
在开发项目的时候,往往碰到的不同的需求情况,兼容不同类型的数据库是我们项目以不变应万变的举措之一,在底层能够兼容多种数据库会使得我们开发不同类型的项目得心应手,如果配合快速的框架支持,那更是锦上添花的 ...
- php sqlserver开发实例,Linux_用sql脚本创建sqlserver数据库范例语句,下面是创建一个sqlserver数据库 - phpStudy...
用sql脚本创建sqlserver数据库范例语句 下面是创建一个sqlserver数据库的代码模板,加上一个创建表的模板.开发的时候可以拷贝过去直接改动一下就可以用了. 希望能帮上忙! 复制代码 代码 ...
- ssh项目同时使用mysql跟sqlserver数据库_MSSQL_如何把sqlserver数据迁移到mysql数据库及需要注意事项,在项目开发中,有时由于项目 - phpStudy...
如何把sqlserver数据迁移到mysql数据库及需要注意事项 在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Serve ...
- OPENCV+VS2008+SQLserver图片存储数据库开发
2010-04-01 OPENCV+VS2008+SQLserver图片存储数据库开发 本人是做图像处理方向的,图像存储的数据库开发是一次尝试,开发平台用的是OPENCV+VS2008+SQLserv ...
- asp.net旅游网站系统VS开发sqlserver数据库web结构c#编程计算机网页项目
一.源码特点 ASP.NET 旅游网站系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为vs2010,数据库为sqlserver20 ...
- asp.net摄影网站系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
一.源码特点 ASP.NET C# 摄影网站系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发.开发环境为vs2010,数据库为sqlser ...
- asp.net会员卡管理系统VS开发sqlserver数据库web结构C#编程
一.源码特点 asp.net 会员卡管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库 系统主要采用B/S模式开发. 下载地址: asp.net会员卡管理系统VS开 ...
最新文章
- windows命令_用Windows恢复环境(WinRE)排除电脑故障,只需一条命令
- tensorflow1.0代码迁移到2.0官方指导
- PyTorch 源码解读之即时编译篇
- linux安装Python36
- SpringBoot整合Spring Security——第三章异常处理
- SICNU 2018 Summer Training #9
- 使用doxygen和latex生成PDF文件
- 模板:无旋treap
- _stat64获取错误_Log4j,Stat4j,SMTPAppender集成–汇总错误日志以发送过多电子邮件...
- 有哪些适合新手练手的C/C++项目?
- C# webservice调用方法总结
- win 7 ×××自动拨号设置
- mysql 数据库连接 w3school_PHP 连接 MySQL
- springboot2.0新特性
- 数学建模十大经典算法和常用算法
- modbus测试plc软件,MODBUS RTU设备测试调试工具官方版
- 干货分享 | 工业信息数据库安全现状与技术分析
- click option/argument参数详解(click.option()和click.argument())
- CSS溢出文字使用省略号表示
- navigator 导航标签