T—sql数据库操作

1:排序之后就不是结果集了成了游标,游标不能作为数据源;所以视图后面的一句中不能有order by;(要想用select后加top3就又变成了数据源)
create view vw2
as
select top percent * from 表
order by sage desc
select * from vw2————这种做法不会得到想要结果,不能top所有

在视图和子查询中都不能有order by 除非有top。。。;
2:给视图建索引

3:在T_sql中适用变量
T_sql(只适用于mssqlsever)和 sql(适用所有数据库)区别
1:--变量的声明declare @name varchar(10)<declare @变量名 类型>
2:赋值:(方法1)set 变量名=值;(方法2)select 变量名=值;两种方法有什么不同:举例说明set 变量名=count查询语句--先查询再赋值,select 变量名=count(*)from student 及查询又赋值;
(1)把查询到的多条值赋值给=set 变量名(报错不能接受多条语句)
set 变量名=select sage from student
(2)把查询到的多条值赋值给=select 变量名 (可以接受)select <top 5> 变量名=sage from 表名
当查询多值时把最后一个值赋值给变量
注意点一
declare @fage int--只定义没赋值
set @fage=@fage+1
select @fage--输出null

3:输出:print 变量名
注意点二
select 可现实多个变量
print 只能现实一个变量
select 变量1,变量2
print @name+cast(@age as varchar(10))

二:全局变量
print @@identity//查看输出最后插入的全局变量例如Fid
print @@version //查看版本
print @@language
print @@servername
print @@error//如果返回值为0,说明上一条语句(执行的)没错误,如果上一条语句出错,返回错误消息序号
三:ifelse条件语句
declare @hage int
set @hage=50
if @hag>10
begin
print '长大了'
end
else
begin
print ‘还小’
end
计算score表中english平均成绩如果<60,查询倒数前三名,如果平均成绩>=60查询正数前三名
方法一:定义三个变量(因为聚合函数不能有空值)
方法二:select avg( is null(字段,0)from 表 是null返回 0;
四:while循环
通过while计算1--100之间奇数和
建一个变量累加
建一个变量计数
while 计数变量<100
if 计数变量能否被整除
begin
set 累加变量累加
end
set 计数变量自加
英语不及格人数过半就没人加2,知道少于一半为止

floor(7/2.0) ceiling(7/2.0)向上取整4


算出总人数(建变量)
算不及格人数(建变量)
算比例()
与一半比
while 一半人数<不及格的
{
给不及格成绩加2
set 不及格=现在不及格人数
}
五:事务
转账问题
建约束:alter table bank add constraint 约束名(CH_balance) check (balance>=10) balance 不能小于十
加了约束改值之后要是不满足条件就不进行操作
事务:
begin tran--打开
commit tran--提交
rollback tran--回滚事务

--隐式事务
默认为关如果打开,则不自动提交,需要手动
set implicit_Transaction on
delete from bank
rollback
select * from Bank
如果隐士事物打开,然后删除某表,在实务没结束前,其他查询不能访问访问
该表(防止并发)没有结束事物,就把表锁了别人不能操作
set implicit_Transaction off

六:储存过程(有名,可以有参数,可以有返回值)类似于C#中的方法
执行速度快
1:系统存储过程(master-可编程性-存储过程-系统。。)sp_开头,exec查询
执行:exec sp_databases/要快于select查询语句/
用 esec SP_helptext sp_databases 查看存储过程代码

给数据库重命名:exec SP_renamedb '原名',‘改为’
查询当前数据库中有多少表exec SP_table

2:自定义存储过程 以usp_开头
创建:
create proc usp_helloworld
as
begin
print ''
end
查:
exc usp_helloword

创建计算2个数和的存储过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值