-
select 语句基本语法:
select…from 子句的参数及说明
-
常用的行聚合函数和功能
-
like 关键字
(1)%通配符:包含零个或任意字符串
例子:查询姓“王”的员工信息
where name like"王%"
(2) 下划线:匹配任意单个字符
例子:1.查询姓"王"且名字只是两个字的员工信息 where name like’王’
2.查询姓“王”且最后一个字是“行”的员工信息 where name like’王行’
(3)[]通配符:表示查询一定范围内的任意单个字符,包括两端数 例子:年龄在22~24之间的员工信息 where Age like’2[2-4]’
(4)[^]通配符:表示查询不一定范围内的任意单个字符,包括两端数 据
例子:年龄不在22~24之间的员工信息
where Age like’2[^2-4]’
Between 关键字
Between…and 和Not …Between …and用来指定范围条件
in关键字 :
指定列搜索的条件,确定指定是否与子查询或列表中的值相匹配
例子:查询ID是001,002的员工信息
where id in(‘001’,‘002’)
查询ID不是001,002的员工信息
where id not in(‘001’,‘002’)
-
All、Some、Any关键字
All:比较标量值和单列集中的值,>All表示大于条件的每一个值,就是大于最大值
Some|Any:比较标量值和单列集中的值,>Any 表示大于条件的每一个值,就是大于最小值
- EXISTS关键字:指定一个子查询,测试行是否存在
-
Group by 子句:
按一个列或多个列或表达式的值将一组选定行组合成一个摘要行集
例子:员工信息按年龄进行分组并统计每个年龄段的人数 select Age 年龄,Count(Age)人数 from Employee Group by Age
-
Having 子句:指定组或聚合搜索的条件
例子:查询每个年龄段的人数大于等于2人的年龄
select Age,count(Age)人数 from Employee Group by Age
Having count(Age)>=2
-
Order by子句:返回的列中所使用的排序顺序 例子:查询女员工的详细信息,并按年龄的降序排列 select * from Employee where Sex='U' Order by Age DESC
Top关键字:限制查询结果显示的行数
带in 的嵌套查询
例子:查询参加考试的学生信息
select *from student
where Sno in (select Sno from SC)
带 not in 的嵌套查询
例子:查询没有考试成绩的课程信息
select * from course
where Cno not in
(select Cno from SC where Cno is not null)
-
带Some的嵌套查询
查询Sage 小于平均年龄的所有学生的信息
select * from student
where Sage<Some(select AVG(sage)from stduent) -
带ANY的嵌套查询 1.查询Sage大于平均年龄的所有学生的信息 select * from student where Sage>Any (select AVG(sage)from student ) 2.查询Sage不等于平均年龄的所有学生的信息 select * from student where Sage<>Any (select AVG(sage)from student );
-
带ALL的嵌套查询 例子:查询Grade 没有大于90分的Cno的详细信息 select *from Course where Cno<>ALL (select Cno From SC where Grade>90)
-
带EXISTS的嵌套查询 例子:查询参加考试的学生信息 select * from Student
where EXISTS (select Sno From SC where Student.Sno=SC.Sno)
-
内部连接: 比较运算符比较要联接列中的值的值的联接 select * from SC Join Student On Student.Sno=SC.Sno
-
外部连接
左外联:将返回右表的所有行。如果左表的某行在右表中没有匹配行,则将为右表返回空值左连接:
select *from Student
LEFT JOIN Score ON Student.s_id=Score.s_id
以左表为主表,右表没数据为null
右外联:将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值;以右表为主表,左表中没数据的为null
select *from Student
right JOIN Score ON Student.s_id=Score.s_id
-
全外连接(FULL JOIN 或 FULL OUTER JOIN)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
select * from SC
Full Join Course
On Course.Cno=SC.Cno
交叉联接
使用Cross Join交叉联接 , 交叉连接不带ON子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到 结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查 询条件的数据行数。 select * from Student
Crocs join Course
-
联接多表 1.在Where子句中联接多表 select * from Student,Course,SC Where Student.Sno=SC.Sno And SC.Cno=Course.Cno 2.在From子句中联接多表 select * from Student join SC join Course on SC.Cno=Course.Cno on Student.Sno=SC.Sno 3.Case 语句 --简单case函数 case sex when '1' then '男' when '2' then '女’ else '其他' end --case搜索函数 case when sex = '1' then '男' when sex = '2' then '女' else '其他' end
注意:
1.在where 子句中不能使用比较运算符(=)对空值进行判断,只能用 is (not)null对空值进行查询