码迷,mamicode.com
首页 > 数据库 > 详细

011.T_SQL语法(sql实例)

时间:2017-01-20 22:15:49      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:nvarchar   否则   系统变量   定义变量   where   控制   null   时间   用户自定义变量   

--T_SQL :TRANSACTION _SQL (SQL SERVER 专有)
--PL_SQL: (ORACLE 特有)

--作用:
--标准sql+编程(逻辑)=t_sql

-- t_sql语法基础:
-- 变量:
--全局变量 (系统变量)了解
--@@,系统定义,维护,赋值
-- 只读(使用)

--局部变量:用户自定义变量(*****)
-- @,由用户定义,赋值,使用

--1 声明declare
--c# int i=9
--declare @i int=10
--declare @a varchar(20),@j int

--2 赋值
declare @i int =0
declare @s1 varchar(20), @j int
set @i=85 --,@j=10 set1次给1个变量赋值
select @s1=‘jack‘,@i=10 --可以给多个变量赋值
--输出(测试)
-- print @s1 +‘的成绩是‘+ cast(@i as varchar(10))
select @s1 +‘的成绩是‘+ cast(@i as varchar(10))
--如何将查询结果赋值给变量
--判断员工的平均工资,如果>2000 输出‘工资达标‘
--否则输出‘工资太低‘
declare @avgSla money=0 --平均工资
--赋值
--注意:子查询查询结果不要超过1个,否则报错
--set @avgSla=(select AVG(sal) from EMP)
select @avgSla=AVG(sal)from EMP
--如果查询超过1个值,会将最后一个值赋给变量,不会报错
if(@avgSla>=2000)
print‘工资达标‘
else
print‘工资太低‘

--已知部门名称(变量),查询该部门员工将该部门员工信息显示出来.

declare @em nvarchar(20)
set @em=‘SALES‘
print @em+‘部门员工信息如下:‘
select EMPNO as 员工编号,ENAME as 姓名,JOB as 工作,MGR as 上级编号,HIREDATE as 入职时间,SAL as 薪资 from EMP,DEPT
where EMP.DEPTNO=DEPT.DEPTNO and DNAME=@em


控制语句:
if 语句

IF(条件)
BEGIN
--只有1条语句,begin end可以忽略
END

while 语句

WHILE (条件)
BEGIN
--循环体
end
--eg:1-100之间的数,求其中能被3整除的数的和,输出和.

declare @num int =1,@sum int=0
while (@num<=100)
begin
if(@num%3=0)
begin
set @sum+=@num
end
set @num+=1
end
print ‘1-100能被3整除的数的和是:‘+cast(@sum as varchar(10))

--eg:涨工资,循环着涨,直到所有的员工工资都超过2000,每次涨200元.公司制度有工资上限:员工的工资上限是5000块
select * from EMP

declare @sal int=(select MIN(SAL) from EMP)
while(@sal<=2000)
begin
update EMP set SAL+=200
where SAL+200<=5000
end
select sal from EMP

--case end语句(面试题)
嵌套在select,update中 实现功能
语句:case
when 条件1 then 结果1
when 条件2 then 结果2
...
else 其他结果
end

--eg
select sname,sex=case
when sex=1 then‘男‘
when sex=0 then‘女‘
end from info

--面试题:
将info表中的sex 列的1改成0,0改成1.
update info set sex=case
when sex=1 then 0
when sex=0 then 1
end
select * from info

USE Practice
CREATE TABLE TEMP
(
SJ DATETIME,
RE VARCHAR(10)
)
INSERT INTO TEMP VALUES
(‘2015-5-9‘,‘胜‘),
(‘2015-5-9‘,‘负‘),
(‘2015-5-10‘,‘胜‘),
(‘2015-5-10‘,‘负‘),
(‘2015-5-10‘,‘负‘)

SELECT * FROM TEMP

SELECT SJ,SUM(CASE WHEN RE=‘胜‘ THEN 1 ELSE 0 END)AS‘胜‘,
SUM(CASE WHEN RE=‘胜‘THEN 0 ELSE 1 END)AS ‘负‘
FROM TEMP
GROUP BY SJ

create table kechengtb
(
techID int ,
[week] nvarchar(20),
isClass nvarchar(10)
)
insert into kechengtb values
(1,‘2‘,‘有‘),
(1,‘3‘,‘有‘),
(2,‘1‘,‘有‘),
(3,‘2‘,‘有‘),
(1,‘2‘,‘有‘)

select techID as 教师号,
sum(CASE WHEN week=1 then 1 else null end)as 星期一,
sum(CASE WHEN week=2 then 1 else null end)as 星期二,
sum(CASE WHEN week=3 then 1 else null end)as 星期三
from kechengtb
group by techID










011.T_SQL语法(sql实例)

标签:nvarchar   否则   系统变量   定义变量   where   控制   null   时间   用户自定义变量   

原文地址:http://www.cnblogs.com/harveylv/p/6326616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!