011.T_SQL语法(sql实例)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了011.T_SQL语法(sql实例)相关的知识,希望对你有一定的参考价值。

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

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

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

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

--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 [email protected]


控制语句:
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 @[email protected]
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实例)的主要内容,如果未能解决你的问题,请参考以下文章

009.增删查改语法(sql实例)

SQL的substring函数及其用法实例——MYSQL另一种截取目标字符的函数

将 Csv 文件导入到 postgres Cloud SQL 实例无效输入语法错误

SQL的ROUND函数用法及其实例

ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例

SQL语句关键词以及实例