SqlServer (一)

来源:互联网 发布:淘宝seo管家 编辑:程序博客网 时间:2024/05/02 03:04
 /*
--创建数据库
create database SQLStudy
--使用数据库
use sqlstudy
--创建表
create table tb_user
(
 UserID int not null primary key,
 UserName varchar(14),
 PassWord varchar(14)
)
--插入100条记录
declare @var_number int
declare @var_sunnumber int
set @var_number=0
set @var_sunnumber=0
while @var_number<100
begin
set @var_number=@var_number+1
set @var_sunnumber=@var_sunnumber+@var_number
insert into tb_user values(@var_number,'PMQ','PMQ')
end
select @var_sunnumber
GO
select * from tb_user
--创建临时表
declare @var_table table
(
 ProductNumber int,
 AuthorName varchar(14)
)
--把tb_user表的数据插入临时表
insert into @var_table select UserID,UserName from tb_user
--查询临时表
select * from @var_table
--查询常量
select 'L',UserID from tb_user
GO
--字符操作
declare @var_position int,@var_str char(15)
set @var_position=1
set @var_str='SQL SERVER'
while @var_position<=datalength(@var_str)
begin
select ascii(substring(@var_str,@var_position,1)),
char(ascii(substring(@var_str,@var_position,1)))
select @var_position=@var_position+1
end
GO
--操作数字5代表长度,1代表小数位数
select str(123.45,7,3)
--操作字符1代表开始位置,5代表长度
select subString('abcdefghijk',1,5)
--将数字转化为nchar类型
select nchar(234)
--char(),ascii把字符转化为ascii码,或者把ascii码转化为字符
--为M字符在特定列userName的开始位置
select patindex('%M%',userName) from tb_user where userID=50
GO
--as的使用
select UserID as ddd,userName from tb_user
select UserID as 'ddd',userName from tb_user
--游标的使用
create table historyTable
(
User_ID   int,
User_Name varchar(14)
)
GO
declare @var_userID int
declare @var_userName varchar(14)
declare var_userCursor cursor for
select userID,userName from tb_user
open var_userCursor
fetch next from var_userCursor into @var_userID,@var_userName
while(@@fetch_status=0)
begin
insert into historyTable values(@var_userID,@var_userName)
fetch next from var_userCursor into @var_userID,@var_userName
end
close var_userCursor
deallocate var_userCursor
select * from historytable
--给表添加列
alter table tb_user
add userLevel int
GO
--修改列
alter table tb_user
alter column  userName varchar(20)
多表连接分组聚合函数
select  avg(a.UserID+b.User_ID),a.userName,b.User_ID from (select UserID, UserName from tb_user where UserID in (5,6,7,8)) a left join historytable b on a.userID=b.user_ID group by a.userName,a.UserID,b.User_ID
--复习游标用法
declare @var_name varchar(14)
declare var_cursor cursor for
select UserName from tb_user where userid=59
open var_cursor
fetch next from var_cursor into @var_name
while(@@fetch_status=0)
begin
 select @var_name
fetch next from var_cursor into @var_name
end
close var_cursor
deallocate var_cursor
--if,else的使用
declare @var_name varchar(20)
declare @var_number int
declare var_cursor cursor for
select userID from tb_user
open var_cursor
fetch next from var_cursor into @var_number
while(@@fetch_status=0)
begin
if(@var_number<=10)
  set @var_name='小于10'
else
  if(@var_number<=20)
   set @var_name='小于20'
  else
    set @var_name='依次类推'
print @var_name
fetch next from var_cursor into @var_number
end
close var_cursor
deallocate var_cursor
--case,when的使用
select UserID,UserName,用户 = case
when(userID<=20) then '前二十名'
when (userID<=50) then '前五十名'
else '后面名次'
end from tb_user
select userID,username,用户 = case userID
when 20 then '前二十名'
when 30 then '前三十名'
else '没有名次'
end from tb_user
--使用存储过程
create procedure pro_tb_user
   @username varchar(14)
as
select * from tb_user where username=@username
GO
--调用存储过程
execute pro_tb_user 'pmq'
--传入动态SQL语句
create procedure pro_tb_usersqd
@username varchar(14)
as
--声明局部变量
declare @sql varchar(50)
set @sql='select * from tb_user where username='''+@username+''''
exec (@sql)
GO
--调用存储过程
execute pro_tb_usersqd 'pmq'
--带输出参数的存储过程
create procedure pro_tb_user_output
@username varchar(14),
@userid   int output
as
  select @userid = count(userID)  from tb_user where username= @username
GO
--调用带输出参数的存储过程
declare @var_userid int
execute pro_tb_user_output 'PMQ',@var_userid output
select @var_userid--声明带输出游标的存储过程
create procedure pro_tb_cursor_test
@var_cursor cursor varying output
as
set @var_cursor=cursor forward_only static for
select  * from tb_user
open  @var_cursor
GO
declare @varjubcursor cursor
exec  pro_tb_cursor_test @varjubcursor output
while (@@fetch_status=0)
begin  
fetch next from @varjubcursor
end
close @varjubcursor
deallocate @varjubcursor
GO
--用户自定义函数
create function  ResultDemo
(
@varNumber1 int,
@varNumber2 int,
@varNumber3 int
)
returns int
as
begin
 declare @Res int
 set @Res=(@varNumber1+@varNumber2)*@varNumber3
 return @Res
end
GO
--调用用户自定义函数
declare @var_select int
set @var_select= dbo.ResultDemo(3,4,5)
select @var_select
--再练习一下
create function ResultString
(
  @varstrString varchar(50)
)
 returns varchar(50)
as
begin
return '输出的是:'+@varstrString
end
GO
--调用
declare @varstrString varchar(50)
set @varstrString=dbo.ResultString('PMQ是英雄')
select @varstrString
--function返回table
create function ReturnTable
(
@username varchar(14)
)
returns @userTable table
(
userID int,
userName varchar(14)
)
as
begin
  insert into @userTable select UserID,UserName from tb_user where UserName=@username
  return
end
GO
select * from dbo.ReturnTable('PMQ')*/
use Sqlstudy
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机验证码被盗怎么办 网络博彩不让提款怎么办 冰团e购扫码注册怎么办 苏宁销售火爆怎么办 菲洛城平台黑钱怎么办 货车扣12分怎么办 烟草证下来后怎么办 余款未结该怎么办 沙袋吸盘吸不住怎么办 电视购物不退货怎么办 母亲相信电视购物怎么办 中关村商城会买到假货怎么办 年休 科室主任不同意怎么办 怡成血糖仪不准怎么办 电子血压仪不准怎么办 学java没思路怎么办 安逸花评分不足怎么办 环保投诉不管用怎么办 乐购超市会员卡怎么办 易购225冻结金额怎么办 麻将机不洗牌了怎么办 麻将桌升不起来怎么办 公司宣布破产债务怎么办 一元乐购被骗怎么办 车被墙外皮砸了怎么办 win10安全中心打不开怎么办 导航出现001错误怎么办 车导航代码错误怎么办 买了假化妆品怎么办 发物流没有单号怎么办 天添网密码忘了怎么办 新华书香卡过期怎么办 车险断了一年怎么办 天添新倒闭捷信怎么办 建行diy信用卡怎么办卡 奥体 游泳卡过期怎么办 次卡过期了怎么办 该插件不受支持怎么办 信用卡申请找不到住址怎么办 中信信用卡白户怎么办 空调外铜管裸露怎么办