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;