D8   基础练习杂图

by admin on 2019年10月3日

1.返回 每月最后一天订单

1、局部变量声明

1、IF-ELSE 逻辑判断语句

基础练习杂图,学习水彩的五种技法,玩水~

今天来带大家了解下在sql
server 中的查询机制

SELECT orderid, orderdate, custid, empid
FROM Sales.Orders
WHERE orderdate = EOMONTH(orderdate);

语法:DECLARE  @变量名  数据类型

语法:IF  (条件)

图片 1

使用select语句进行查询

 使用EMONTH 对输入的日期返回月末日期   类似动态条件

例如:DECLARE  @name  varchar(8)

                BEGIN 

图片 2

1.查询所有的数据行和列

DATEDIFF(month, ‘19991231’, orderdate)  相差多少月 
从19991231到 orderdate之间先查多少月

           DECLARE   @seat  int

                    语句1,语句2,……语句n

图片 3

select  *  from student

DATEADD(month, DATEDIFF(month, ‘19991231’, orderdate), ‘19991231’)
中间是加上的月数  最后一个从什么时间开始加

2、变量赋值

                END

图片 4

2.查询部分行和列

SELECT orderid, orderdate, custid, empid
FROM Sales.Orders
WHERE orderdate = DATEADD(month, DATEDIFF(month, '19991231', orderdate), '19991231');

语法:️SET  @变量名  =  数值

           ELSE

select scode,sname,saddress
from * student
where saddress='北京'

两种写法  记住 可以用动态条件 区分记录

          ️SELECT  @变量名 = 数值

                BEGIN

3.在查询中使用列的别名

 

例如:

                    语句1,语句2,……语句n

select scode as 学生编号,sname as 姓名 ,saddress as 地址
from student
 where saddress<>'北京'
  1. 姓氏a上有相同的 

    SELECT empid, firstname, lastname
    FROM HR.Employees
    WHERE lastname LIKE ‘%a%a%’;

1、SET  @name =‘张三’;

                END

4.查询空值

3.对每个客户的订单日期排序

2、SELECT  @name=‘张三’;

2、循环语句——WHILE

select sname from student
where semail is null
SELECT custid, orderdate, orderid,
  ROW_NUMBER() OVER(PARTITION BY custid ORDER BY orderdate, orderid) AS rownum
FROM Sales.Orders
ORDER BY custid, rownum;

3、SELECT  @name = StudentName  from Student  where  StudentNo=‘1008’;

语法:

5.在查询中使用常量

4.条件筛选case

注:SELECT可以同时给多个变量赋值,而SET不允许。

例如:SELECT  @name=‘张三’,@age=18;语法是正确的。

           SET  @name=‘张三’,@age=18;语法是错误的。

            WHILE (条件)

select 姓名=sname ,地址=saddress,'汉族' as 民族
from student
SELECT empid, firstname, lastname, titleofcourtesy,
  CASE titleofcourtesy
    WHEN 'Ms.'  THEN 'Female'
    WHEN 'Mrs.' THEN 'Female'
    WHEN 'Mr.'  THEN 'Male'
    ELSE             'Unknown'
  END AS gender
FROM HR.Employees;

SELECT empid, firstname, lastname, titleofcourtesy,
CASE 
WHEN titleofcourtesy IN('Ms.', 'Mrs.') THEN 'Female'
WHEN titleofcourtesy = 'Mr.' THEN 'Male'
ELSE 'Unknown'
END AS gender
FROM HR.Employees;

3、全局变量

                BEGIN

6.查询返回限制的函数

第一种 是指向搜索  固定的指向  第二种没有可以多字段条件

@@ERROR      表示最后一个T-SQL错误的错误号

                    语句1,语句2,……语句n

select top 5 sname, saddress
from student 
where Ssex=0

5.在order by 加限制排序条件

@@SERVERNAME      本地服务器名称

                END

 

SELECT custid, region
FROM Sales.Customers
ORDER BY
  CASE WHEN region IS NULL THEN 1 ELSE 0 END, region;

@@VERSION      SQLServer版本号

例如:求1-10之间所有整数之和:

查询排序

两个条件 0,1 默认排序规则 通过int 对相应的条件进行排序

DECLARE  @i   int

如何使用order by

DECLARE  @sum  int

如果要按照一定顺序排列查询语句选中的行,则需要使用order
by 字句,并且排序可以是升序(asc)可以是降序(desc),

SET  @i=i

eg:   将学生成绩按照升序排列

SET  @sum=0

select studentID as 学生编号, CourseID as 课程ID,Score as 成绩

from Score 

where Score >60

order by Score,CourseID

WHILE  (@i<=10)

 

         BEGIN

在查询中使用函数

              SET  @sum=@sum+@i

1.字符串函数

              SET  @i=@i+1

函数名称:
1.CharIndex('str1','str2',index)//位置从开始
    --第一个参数:要查询的字符串
    --第二个参数:在哪个字符串中搜索
    --第三个参数:从str2的第几个字母开始搜索
    --注意点:如果在str2中没有找到str1,那么返回
    eg:
        SELECT CHARINDEX('JBNS','My Jbns Course')  
2.len():获取小括号中字符串的长度,空格也算一个字符长度
    eg:
        SELECT LEN('SQL Server课程')
3.upper():将括号中出现的英文全部转换成大写
    eg:
        select upper('i can speak english.你能吗?')
        select lower('I HAVE A DREAM')
4.LTrim():清除括号中内容左边的空格(left:right)
    eg:
        select rtrim('         生活不是林黛玉,      ')
5.既想移除左边空格,也想移除右边空格
    eg:
        select rtrim(ltrim('         生活不是林黛玉,      '))
        select ltrim(rtrim('   你还好吧!   '))
6.思路灵活
    eg:
        select len(rtrim('今年奇怪了,北京没下雪,去去去    '))
7.substring('字符串',截取的位置,截取的长度)
    eg:
        select substring('我是中国人,我爱自己伟大的祖国,真的',6,1)
8.right():从字符串(左)右边返回指定类型的字符
    eg:
        select left('大家今天好像都没有交日记本,我去',3)
        select right('大家今天好像都没有交日记本,我去',2)
9.replace('str1','要替换的字符','目标字符'):
    eg:
        select replace('张海迪,残疾人,虽然手不残疾,但是X残疾','残                疾','好')
10.stuff('字符串',删除的起始位置,删除的长度,'插入的字符串')
    eg:
        select stuff('我爱你中国,我爱你故乡',4,2,'北京')

         END

 

3、分支逻辑控制语句(CASE-END)

2.日期函数

语法

1.getdate():获取当前日期和时间
    eg:
        select getdate()
2.dateadd(按年/月/日添加,增量,时间)
    eg:
        select dateadd(yy,100,'2014-8-6')
        select dateadd(year,-20,getdate())
3.datediff(按年/月/日求差,小时间,大时间)
    eg:
        select datediff(year,'1998-01-01',getdate())
4.datename:获取某个日期是星期几
    eg:
        select datename(dw,'2014-08-06')
5.datepart(mm,日期):获取指定日期对应的年/月/日部分  
    eg:
        select datepart(yy,getdate())
    通过该方式也可以获取当天是周几
    eg:
    select datepart(dw,getdate())

CASE

 

        WHEN    条件1    THEN    结果1

3.数学函数

        WHEN    条件2    THEN    结果2

1.rand():产生一个到之间的随机数
    eg:
        select right(rand(),4)
2..abs:取绝对值
    eg:
        select abs(-10)
        select abs(10)非负数
3.ceiling:天花板,你要看天花板,抬头,向上取整
    eg:
        select ceiling(1.999991)
4.floor:向下取整
    eg:
        select floor(1.999999)
        select ceiling(1.000000000000001)
        select floor(2.999999999999999)
5.power(5,2)求幂值
    eg:
        select power(4,4)
        select 1*2/3+5-56+100-5/100
        select power(2,3)
6.round:将一个数字四舍五入到指定精度
    eg:
        select round(42.564,1)
7.sign:如果括号中写的是一个正数,返回,如果是负数,返回-1
    eg:
        --如果是返回
        select sign(20)
        select sign(0)
8.sqrt()开平方
    eg:
        select sqrt(9)

        WHEN    条件n    THEN    结果n

 

ELSE    其他结果。

4.常用的系统函数

例如:有一张Result表

convert:(用来转换数据类型)
        eg:
            select convert (varchar(5),12345)
            返回:字符串'12345'

图片 5

 

请使用美国等级标准(A-E)显示成绩

ok 精彩的代码分析时间就到这里,请持续关注哦!

SELECT  *  (

 

       CASE

              WHEN  StudentResult >= 90 then ‘A’

              WHEN  StudentResult >= 80 then ‘A’

              WHEN  StudentResult >= 70 then ‘A’

              WHEN  StudentResult >= 60 then ‘A’

              ELSE ‘E’

)  AS  等级

FROM Result;  (上图表格为查询后显示)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图