MySQL查询数据(超详细)

136 篇文章 25 订阅
11 篇文章 1 订阅

MySQL查询数据(超详细)

一、简单查询语句
select * from 表名 条件查询语句;

二、多表查询
多张表有同名字段出现在select语句中,同名字段必须带上 “表名 . 字段名”
同名字段必须带上表名
如:

select xxb1.学号,姓名,分数 from xxb1 a,cjb b where a.学号=b.学号;

内连接
1.使用=符号
2.使用inner join…on…
3.使用join…on…
如:

select * from emp,dept  where Dept_id=dept.id;
select * from emp join dept	on Dept_id=dept.id;
select * from emp inner join dept on Dept_id=dept.id;

自身连接
一个表与其自己进行连接;需要给表起别名以示区别
如:

select Qir.cno,Qir.cname, Qir.cpno,sec.cname from course Qir,course sec where Qir.cpno=sec.cno

外连接
可以左向外连接、右向外连接,外连接是以左边或右边的表作为主表,把主表的内容都显示,从表没有的内容置为空处理
例如:主表 left join 表 ON a.no=b.no; 也可以换成left join
代码如下:

select s.sno,sname,sex,age,dept,cno,grade from student s left join sc ON	s.sno=sc.sno

左连接:left join
右连接:right join

三、嵌套查询、子查询
from使用子查询:对数据来源的二次加工
如:

select * from xxb1 as a,(select max(语文) as x from cjb) as b where a."学号"=b.x;

在where中使用子查询
如:

select * from score where score=(select max(secre) from score);

在select中使用子查询
如:

select (select count(*) from score where score<60)/(select count(*) from score);

一般用于统计…率类的(如上班时间09:00后迟到的概率)
如:

(select count(*) from kq where substr(notime,12,5)>'09:00')/(select count(*) from kq);

嵌套查询
如:

select 字段 from 表名 where 条件 group by 分组 having 聚合函数的条件语句 order by 排序子句

四、case语句
用法1:case 表达式
when 值1 then 返回值
when 值2 then 返回值

end
说明:end表示结束,也可以加上else ‘默认值’

如:

select no,bir,
   (case year(bir)
    when  '1998'  then  '小鲜肉'
    when  '1997'  then  '鲜肉'
    when  '1996'  then  '肉'
    else  '腊肉'
    end) 个性化标志
from  stu;

用法2:case
when 表达式 运算符 值1 then 返回值1
when 表达式 运算符 值1 then 返回值2

else 返回值
end

如:

select
   (case 
    when  year(bir)>'1999'  then  '小鲜肉'
    when  year(bir)>='1995'  and  year (bir)<='1999'  then  '青葱岁月'
    when  year (bir)>='1990'  and  year (bir)<'1995'  then  '风华正茂'
    else  '未知'   
    end)  x,count(*)
from  stu
group  by  x;

用嵌套查询的方法

select  a.分数段,count(*)
from(select
          (case
          when  result>=60  and  result<70  then  '60~70'
          when  result>=70  and  result<80  then  '70~80'
          when  result>=80  and  result<90  then  '80~90'
          when  result>=90  then  '90以上'
          else  '不及格'
          end) 分数段
      from  grade) a
group  by  a.分数段;

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值