首页 > 数据库 > MySQL > 正文

mysql数据库怎样实现查询语句

2024-07-24 12:33:50
字体:
来源:转载
供稿:网友
  单表查询
  1、普通查询
 
  (1)命令:select * from <表名>;//通匹
 
  (2)命令:select <要查询的字段> from <表名>;
 
  2、去重查询(distinct)
 
  命令:select distinct <要查询的字段> from <表名>
 
  3、排序查询(order by)
 
  升序:asc
 
  降序:desc
 
  降序排列命令:select <要查询的字段名> from <表名> order by <要查询的字段名> desc
 
  不加desc一般默认为升序排列
 
  4、分组查询(group by)
 
  命令:select <按什么分的组>, Sum(score) from <表名> group by <按什么分的组>
 
  假设现在又有一个学生成绩表(result)。要求查询一个学生的总成绩。我们根据学号将他们分为了不同的组。
 
  命令:
 
  mysql>select id, Sum(score) from result group by id;
  多表查询
  一、等值查询
 
  现在要查询年龄小于20岁学生的不及格成绩。
 
   语句:select stu.id,score from stu,result where stu.id = result.id and age < 20 and score < 60;
 
  可见等值查询效率太低
 
  二、连接查询
 
  1、外连接查询
 
  (1)左外连接查询
 
  假设我们依旧使用的是上面的两个表,任然查询年龄小于20岁学生的不及格成绩
 
  我们利用左外连接查询,先将学生表中所有年龄小于20岁的学生取出来,再在成绩表中将所有成绩小于60的学生取出来,然后再进行配对,我们会发现效率大大得提高,只用匹配四次就可以找到。
  
  语句为:
 
  select a.id,score
  from
  (select id,age from stu where age < 20) a (过滤左表信息)
  left join
  (select id, score from result where score < 60) b (过滤右表信息)
  on a.id = b.id;
  左外连接就是左表过滤的结果必须全部存在。如果存在左表中过滤出来的数据,右表没有匹配上,这样的话右表就会出现NULL;
 
  (2)右外连接查询
 
  select a.id,score
   from
   (select id,age from stu where age < 20) a (过滤左表信息)
   right join
   (select id, score from result where score < 60) b (过滤右表信息)
   on a.id = b.id;
  左外连接就是左表过滤的结果必须全部存在
 
  我们发现过滤出来的表进行的匹配只有两条满足条件(红色代表条件满足),但最后的结果却是:
 
  左表不匹配的数据改为空,右表过滤出来的数据都要存在。
 
  (3)全外连接查询
 
  结合了左外连接和右外连接,使得左表和右表的数据都存在。
 
  2、内连接查询
 
  只筛选匹配结果
 
  只匹配我们需要的结果
 
  语句为:
 
  select a.id,score
   from
   (select id,age from stu where age < 20) a (过滤左表信息)
   inner join
   (select id, score from result where score < 60) b (过滤右表信息)
   on a.id = b.id;
  以上是“mysql数据库如何实现查询语句”这篇文章的所有内容,感谢各位的阅读!

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表