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。
做题图: