SQL语法基础学习(二)

本章节笔记内容简要概括主要对查询这部分进行学习总结。其次聚集函数的使用连接、exists的子查询带有any all的子查询等查询重点的相关内容进行笔记总结。

本次查询所用到的参数内容如下所示:

一、查询所有&查询部分列:

*:该符号表示所有列
select:查询的关键字

查询格式:select <列名> from <表名>

select * from Student
上述代码等价于下面这句
select Sno,Sname,Ssex,Sage,Sdept from Student;

二、查询给列起别名,给表起别名也是一样的操作

代码格式:select <列名> <列别名> from <表名> <表别名>
例如:select username 姓名 from user;
再例如该图例子:

运行结果:

三、结果去重

加上distinct关键字即可实现
代码语句格式:select distinct <列名> <列名别名> from <表名> ;
观察如下参数:

我们对该重复的标题结果进行去重,
代码语句:select distinct title 课程名字 from edu_course;

四、查询结果加条件:

条件关键字:where
代码语句格式标准:select <列名> <列名别名> from <表名> where <列名> <谓词> <相关参数>
相关查询条件和谓词表如下:
![](https://img2024.cnblogs.com/blog/3531827/202412/3531827-20241201164418551-2082132542.png
例题如下(请自行创建参数更换谓词和参数执行使用看看):
select title 课程名字 from edu_course where price>=88;

五、聚集函数的使用

常用聚集函数如下:

查询格式:select <聚集函数> <列名> from <表名> ;
例如:
select count(*) from edu_course;
加上distinct可以去除列重复的来计算,例如:select count(distinct teacher_id) from edu_course;

六、分组查询
group by 分组,如果进行筛选,请使用Having
该部分使用到的参数:

例如:select teacher_id from edu_course group by teacher_id;
注意:使用时必须使用具体的列名参数才能使用分组查询。直接使用*会报错无法运行。

(2)条件过滤使用
注意:使用group by 不能使用where来接条件,需要使用having

select teacher_id from edu_course group by teacher_id having teacher_id=1;

六、连接

内容简要:等值,非等值连接,以where为关键词。
例如:select * from edu_course ec, edu_course_description ecd where ec.id=ecd.id;
会输出得到一个笛卡尔积的表

(2)自身连接
一个表与自身连接,为本身这个表七两个1别名,然后进行操作
例如:select * from edu_course ec1, edu_course ec2 where ec1.id=ec2.id;

(3)外连接
把被舍弃的值,也保留在结果中,但是要加null
左外连接例如:select * from edu_course ec left outer join edu_course_description scd on ec.id=ecd.id;

右外连接例如:
select * from edu_course ec right outer join edu_course_description scd on ec.id=ecd.id;

补充说明:左外连接列出左边关系(如本例Student)中所有的元组,右外连接列出右边关系中所有的元组。****

(4)多表查询
两个表以上的连接:该内容较为复杂建议参考教材上例题进行练习理解。

(5)嵌套查询:
例如:
select * from edu_course ec where teacher_id in (select teacher_id from edu_course where teacher_id=10 or teacher_id=0)

七、带有any all的子查询

参考下图

例如:
select * from edu_course ec where teacher_id price >any (select price from edu_course where price<10 );

八、带EXISTs的子查询(改内容比较绕,自行参考例题捋一捋思路)

关键字:
not exists 如果后面的子查询没有值,返回1 否则为1
exists 与上述描述相反

九、集合查询
并、交、差
重点三个关键词:union、intersect、except

例1:select * from Student where Sdept=‘CS’ union select * from Student where Sage<=19;
例2:select * from Student where Sdept=‘CS’ intersect select * from Student where Sage<=19;
例3:select * from Student where Sdept=‘CS’ except select * from Student where Sage<=19;

posted @ 2024-12-03 14:45  GercenBC  阅读(14)  评论(0编辑  收藏  举报