SQLZOO做题笔记

13、asc、desc(升序,降序)

asc是指定列按升序排列(即:从小到大排序) ---降序排列

desc则是指定列按降序排列(即:从大到小排序) ---升序排列

排序子句语法:order by 列名 asc/desc

例:查询选修 C2、C3、C4或C5课程的学号、课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列;
解:select sno 学号,cno 课程号,grade 成绩 from sc where cno in('c2','c3','c4','c5') order by sno asc,grade desc 


12、distinct(去重)


11、 getdate()(日期-时间函数)

返回某个时间戳或者当前本地的日期/时间的日期/时间信息。

  • 返回带有与时间戳相关的信息的关联数组:
  • [seconds] - 秒
  • [minutes] - 分
  • [hours] - 小时
  • [mday] - 一个月中的第几天
  • [wday] - 一周中的某天
  • [mon] - 月
  • [year] - 年
  • [yday] - 一年中的某天
  • [weekday] - 星期几的名称
  • [month] - 月份的名称
  • [0] - 自 Unix 纪元以来经过的秒数

例: 从系统当前日期中返回系统当前的年份数、月份数和天数。

解:select 
    year(GETDATE()) 年份,
    MONTH(getdate()) 月份,
    DAY(getdate()) 号数


10、decimal(浮点型)

声明语法是:decimal(M,D)

  • M是最大位数(精度)。范围是1到65。
  • D是小数点右边的位数(小数位)。范围是0到30,并且不能大于M。
  • 如果D省略,则默认值为0。如果 M省略,则默认值为10。
  • 赋值的时候小数位如果没有D位,则会自动补0;整数位如果大于M位会出错,小于M位没事,如果没有数字会自动补零

例: 定义一个名为@Height 的局部变量,数据类型是decimal(5,3) ,给该变量赋值并显示其值。

解:declare @Height decimal(5,3)--浮点型,5表示共有5位数,3表示小数位数
       set @Height=12.000--赋值的时候小数位如果没有3位,则会自动补0;整数位如果大于2位会出错,小于2位没事,如果没有数字会自动补零
        print @Height


9、给date类型赋值

用单引号赋值,日期之间用空格、/、点、-分隔或不分割都行

例:定义一个名为@Birthday 的局部变量,数据类型是date,给该变量赋值并显示其值。

解:declare @Birthday date
set @Birthday='2021 11 1'或者

set @Birthday='2021/11/1'或者

set @Birthday='2021.11.1'或者

set @Birthday='20211101'
print @Birthday


8、any

All:只有当其所有数据都满足条件时,条件才成立
Any:只要有一条数据满足条件,条件就成立,与in的用法一样
Some:其中存在一些数据满足条件,作用和Any大致相同 常规的使用中看作一致即可

例:查询其他系中比挖掘机系某一学生年龄小的学生姓名和年龄。
解:select sname,sage from student where sdept !='挖掘机' and sage<=any(select sage from student where sdept='挖掘机')


7、order by(排序)

默认为升序(ASC),降序(DESC)

  • 多列排序时,如果第一列相同的情况下,会根据第二列继续排序。

例:查询选修 C2、C3、C4或C5课程的学号、课程号和成绩,查询结果按学号升序排列,学号相同再按成绩降序排列;
解:select sno 学号,cno 课程号,grade 成绩 from sc where cno in('c2','c3','c4','c5') order by sno asc,grade desc 


6、group by(分组\去重合并)

  • 用于对查询结果进行分组统计

例题:查询选修课程超过5门的学生学号和专业

解:

select 学号,专业

from 学生信息表

where 学号 in

        (select 学号 from 选课信息表 group by 学号 having count(*)>5)


5、反向查询

例题:查询不选修课程号为"C5"的学生的姓名和所属单位 

解:

select 姓名,单位

from 学生信息表,选课信息表

where学生信息表.学号=选课信息表.学号

        and 学生信息表.学号 not in

                (select 学生信息表.学号 from 学生信息表,选课信息表 where  课程号='C5')

解释:先找出选了C5课程的学生学号,然后找出不属于这部分学生的学生学号


 4、insert(插入)

  • 语法格式:
  • 一次插入一个元组

insert into <表名> [(<属性列1>,<属性列2>...)]

        有颜色的一段可以有可以无,如果省略的话表示源表的全部属性

values (<常量1>[,<常量2>]...)

        有颜色的一段的顺序必须和上一句的顺序相同,如果上一句省略了,那就和源表的顺序一样

  • 一次插入多个元组

insert into <表名> [(<属性列1>,<属性列2>...)]

values (<常量1>[,<常量2>]...),(<常量1>[,<常量2>]...),(<常量1>[,<常量2>]...),....


3、foreign(外键)

  • foreign key(Cno) references Course(Cno)
  • 解释:定义了Cno作为外键,参照了Course表的Cno
  • Cno char(4) references Course(Cno)
  • 解释:直接在后边加references也是定义外键

 2、replace

  • 语法:replace ( string_expression , string_pattern , string_replacement )
  • string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。
  • string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 (''")。
  • string_replacement 替换字符串。string_replacement 可以是字符或二进制数据类型。
  • 返回类型:如果其中的一个输入参数数据类型为 nvarchar,则返回 nvarchar;否则 replace 返回 varchar。
  • 如果任何一个参数为 NULL,则返回 NULL。

做题图:


1、concat

  • 功能:将多个字符串连接成一个字符串。
  • 语法:concat(str1, str2,...)
  • 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

做题图: 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多低调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值