SQL单表查询

SQL数据查询

1 select语法

select  all|distinct <目标****表达式> 【列】

from <表名或视图名>select语句)as  <别名>

where<条件表达式>【行】
--只有符合having条件的组才可以输出
group by <列名1> HAVEING<条件表达式>

with  {CUBE|ROLLUP}

order by<列名2>[ASC|DESC]

目标列表达式可以为列名,算数表达式,函数,字符串等。

where子句作用于基本表或者视图,从中选择满足条件的元组

having子句从group后的组中选择满足条件的组

总结一下自己的理解:

select相当于关系代数中的映射,是对列的操作,除了top 5 * 以外

where相当于关系代数里的选择操作,是对行的操作,where后边不可以使用聚集函数,having处和select处才可以使用聚集函数

group 是按指定列的值分组,比如,把学号相同的记录分为一个组,where筛选掉不需要参加分组的记录,

having时对分组后的记录进行筛选

order by 列名 ASC DESC默认升序

顺序:where-----group-----having

2 查询条件where

比较:

= 、>=、<=、<>

确定范围

between and (闭区间) not between and

确定集合

IN NOT IN

字符匹配

like not like

_匹配一个任意字符,包括一个汉字

%匹配0至多个任意字符

[]:指定范围内的任意单个字符,例如 LIKE’[CK]’,表示CK中的一个字符

[^ ] 和正则表达式一样的。

数据库字符集为ASCII 时一个汉字需要两个_,当字符集为GBK时只需要一个_

转义匹配,如果查询含有_的字符串 ,在前边加一个反斜杠 \

[not] like<匹配串> [escape换码字符’]

空值匹配

is null

is not nul

多重条件匹配

and , or , not

限制结果返回行数top

--选择前五行
select top 5 stu_no  学号,stu_name 姓名
FROM Student;

--3~5行记录---嵌套查询
select TOP 3* FROM student
where stu_no NOT IN (SELECT TOP 2 stu_no FROM student)

--集合的差 except
SELECT TOP 5 * FROM student
EXCEPT
SELECT TOP 2 * FROM student


---注意select * 代表选择所有列,即一行记录的所有属性,此时的select对行和列都进行了筛选,只是
行只能选择显示几行。

3 聚集函数

聚集函数只能用于select子句和group子句的having子句中

COUNT(*)统计元组个数
COUNT([distinct|all]<列名>)统计一列中值的个数
SUM([distinct|all]<列名>)统计一列值的总和,must数值型
AVG([distinct|all]<列名>)统计一列值的平均值,must数值型
MAX([distinct|all]<列名>)求一列中的最大值
MIN([distinct|all]<列名>)求一列中的最小值

avg(),count()在统计时,会忽略为null的值。比如
在统计某学生选了多少门选课时,应该用count(cou_no),而不能用count(grade)
因为如果他缺考,成绩为null的话,这们选课就count()不到。
count(stu_no)统计学生人数时,也不会去掉相同学号的记录,就是说,count()不是集合操作,它只是数数符合条件的记录有几条。count(distinct stu_no)

4 字符串函数

CHARINDEX

用来寻找一个指定的字符串在另一个字符串中的起始位置

LEN

MySQL中为length

返回传递给它的字符串长度。

SELECT LEN(‘SQL SERVER课程’) ,返回12,空格也算哦

LOWER

把传递给它的字符串转换为小写

UPPER

把传递给它的字符串转换为大写

LTRIM

清除字符左边的空格,右边的不清除。

5 日期函数

在这里插入图片描述

在这里插入图片描述

6 数学函数

在这里插入图片描述

7 系统函数

在这里插入图片描述
注意CONVERT转换数据类型
MySQL·使用CAST

8例题:一组变一行

在这里插入图片描述

列用CASE语句表示,相当于把group后的一组数据变为一行数据

MAX使用原因,比如一个同学同一门课程考过两次(补考),也就是说符合学号和课程号的记录可能有多条,系统不知道选哪一条给我们看(二义性),或者使用MIN()也可以。

9 case用法

select  Stu_no 学号,Cou_no 课程号,grade 成绩,case 
											when  grade>=90 then '优秀'
											when  grade>=80 then '良好'
											when  grade>=70 then '中等'
											when  grade>=60 then '及格'
											when grade is null then '缺考'
											else '不及格'
											end as '等级'
FROM SC

--注意case的用法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值