SQLServer 基本语法

  最近一直忙于项目,项目中奇奇怪怪的问题也遇到了不少,总结起来,最后解决办法都是从数据库入手,给一个数据源从而来解决项目中存在的问题,比如说:查询出来的grid列表绑定数据源的时候,界面显示的日期列,都会精确到时分秒,界面看是很不友好,截个图给大家看看:

  大家看到我特殊标记的地方了吧,在这里【出车时间】和【返回时间】,根本没有必要显示那么准确的时间,只需要显示到年月日即可,所以呢,数据源查询出来的数据直接绑定就会是这样,如果要处理就必须使用属性给格式化下显示样式,在这里,我需要申明下,我使用的是Devexpress 来做的项目,所以吧一些标签里边写的属性说不定还不起作用(偶也是新学Devexpress控件者),这里我只是举例时间列说明而已,由于不同需求,显示时间也是根据不同的需要来规范格式的,而我说的最简单的一种,精确年月日,html代码可以这么来写一句属性:

<dx:GridViewDataDateColumn Caption="出车时间" VisibleIndex="5" FieldName="fSDate">
    <PropertiesDateEdit DisplayFormatString="yyyy-MM-dd"> </PropertiesDateEdit>
 </dx:GridViewDataDateColumn>

<dx:GridViewDataDateColumn Caption="返回时间" VisibleIndex="5" FieldName="fEDate">
<PropertiesDateEdit DisplayFormatString="yyyy-MM-dd"> </PropertiesDateEdit>
</dx:GridViewDataDateColumn>

  

 这样一句属性即可把界面上显示的时间为‘yyyy-mm-dd‘的样子,

随便一个截图说明下效果。

以上是可以实现你想要的结果,但是还有的效果你从界面上来处理很麻烦,甚至有时候还无法解决,所以呢,此时你从数据库着手是最简单便捷的方式,只需要把sq server的语法掌握熟悉了,然后做起这个东西那是小case 啦。就比如这个时间,如果你对时间函数比较熟悉,就直接在sql脚本里边加上函数就over 了。

    今天写这篇文章的目的,主要是想提醒自己吃透sql 的语法以及常用的函数,因为自己对sql的语法使用不是很熟悉,平时也就使用写简单的查询呀,删除,更新啥的,,不过后来使用了存储过程,很多时候都没有去使用像游标,标量值函数,表值函数,索引...  其实使用了这些为数据底层做了基础,很大程度上也就优化了我们的程序运行的速度和执行效率。所以,今天利用下班时间来写下这片博客,主要是整理了下基本的sql 语法,有错误的地方欢迎大家给指出,还希望高手指点。

以下就是我下班之前加上下班时间晚走了那么一会给整理的sql语法:

一、定义变量
 简单赋值
declare @a int
set @a=5
print @a

--使用select语句赋值
declare @user1 nvarchar(50)
select @user1='张三'
print @user1
declare @user2 nvarchar(50)
select @user2 = Name from ST_User where ID=1
print @user2

--使用update语句赋值
declare @user3 nvarchar(50)
update ST_User set @user3 = Name where ID=1
print @user3

二、表、临时表、表变量
view sourceprint?--创建临时表1
create table #DU_User1
(
  [ID] [int] NOT NULL,
  [Oid] [int] NOT NULL,
  [Login] [nvarchar](50) NOT NULL,
  [Rtx] [nvarchar](4) NOT NULL,
  [Name] [nvarchar](5) NOT NULL,
  [Password] [nvarchar](max) NULL,
  [State] [nvarchar](8) NOT NULL
);
--向临时表1插入一条记录
insert into #DU_User1 (ID,Oid,[Login],Rtx,Name,[Password],State)

values (100,2,'LS','0000','临时','321','特殊');

--从ST_User查询数据,填充至新生成的临时表
select * into #DU_User2 from ST_User where ID<8

--查询并联合两临时表
select * from #DU_User2 where ID<3 union select * from #DU_User1

--删除两临时表
drop table #DU_User1
drop table #DU_User2

view
sourceprint?--创建临时表
CREATE TABLE #t
(
  [ID] [int] NOT NULL,
  [Oid] [int] NOT NULL,  
  [Login] [nvarchar](50) NOT NULL,
  [Rtx] [nvarchar](4) NOT NULL,
  [Name] [nvarchar](5) NOT NULL,
  [Password] [nvarchar](max) NULL,
  [State] [nvarchar](8) NOT NULL,
)

--将查询结果集(多条数据)插入临时表
insert into #t select * from ST_User
--不能这样插入
--select * into #t from dbo.ST_User

--添加一列,为int型自增长子段
alter table #t

add [myid] int NOT NULL IDENTITY(1,1)
--添加一列,默认填充全球唯一标识
alter table #t add [myid1] uniqueidentifier NOT NULL default(newid())

select * from #t
drop table #t

view sourceprint?--给查询结果集增加自增长列

--无主键时:
select IDENTITY(int,1,1)as ID, Name,[Login],[Password]

into #t from ST_User  select * from #t

--有主键时:
select (select SUM(1) from ST_User where ID<= a.ID) as myID,* from ST_User a order by myID

view sourceprint?--定义表变量
declare @t table
(  
   id int not null,  
   msg nvarchar(50) null
)
insert into @t values(1,'1') 

insert into @t values(2,'2')  select * from @t

三、循环
view sourceprint?--while循环计算1到100的和
declare @a int
declare @sum int

set @a=1
set @sum=0
while
  @a<=100
    begin
      set @sum+=@a
      set @a+=1
    end


  print @sum

四、条件语句
view sourceprint?--if,else条件分支
if(1+1=2)
  begin
    print '对'
  end
else
  begin
    print '错'
  end

--when then条件分支
declare @today int
declare @week nvarchar(3)
set @today=3
set @week=case
  when @today=1 then '星期一'
  when @today=2 then '星期二'
  when @today=3 then '星期三'
  when @today=4 then '星期四'
  when @today=5 then '星期五'
  when @today=6 then '星期六'
  when @today=7 then '星期日'
  else '值错误'
end
print @week

     由于时间关系,整理到这里,接下来整理下游标,触发器,存储过程,自定义函数,希望大家给以指导!

 

 

转载于:https://www.cnblogs.com/sky-me/archive/2012/12/04/SqlServer.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值