SQL查询

  •  		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对空值进行查询

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值