SQL常见的查询语句

本文深入讲解SQL查询语句,涵盖单表与多表查询、条件筛选、聚合统计、排序及分组等核心技能,助您掌握高效数据检索方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于数据库的查询语句,不像 增 删 改的语句比较少,故单独写一篇,(若有不正之处,还望大佬指正)
在知道了数据库的增删改的语句之后,接下来就是数据的查询,查询可简单的分为两大类:单表查询和多表查询。
对于单表查询大致可分为如下几种:

  • 简单查询
  // 查询表中的所有数据:
  select * from 表名   // 比如查询student表中的所有数据 : select * form  student
  //查询表中的某列的数据:
  select  列名  from 表名  //比如查询 student表中的sname列 :select  sname from studnet
  //查询表中的某列的数据,并去重:
  select distinct 列名 from 表名  //比如查询student表中的sex列 :select distinct sex from student
  //查询数据并给某列起别名:
  select 列名 [as] '别名' ,... from 表名  // 比如 查询student表的sname列并起别名为:姓名  select sname '姓名' from student  显示信息就会以别名显示
  // 查询结果并对列之间的数据做算术运算:
  select 列名 运算符 列名  from 表名 // 计算student中的数学和英语总成绩  select math + english from student 
  • 条件查询
//语句为表名后加 where  条件
// 先介绍一下,条件语句中的SQL中的特别的语句: 1. between  数值1 and 数值2 :在数值1到数值2之间的数都满足条件,包括数值1和数值2 即:[数值1,数值2] 。2.in(值1,值2,值3,...)满足值1,或者是值2,或者是值3,...
//举几个例子吧;
// 查询student表中数学成绩在80-100之间的学生,包括 80和 100
select * from student where math  between 80 and 100
//查询student表中数学成绩是 75,85,95 的同学
select * from student where  math in(75,85,95)
//一些常见的运算符都是适合的 :>,<,>=,<= ,and,or,not (表示 && ,|| ,!) 等等...
select * from student where math > 80;
select * from student where math = 100 and english = 100 // 这是别人家的孩子
 
  • 模糊查询
//关键字:like  语句 :字段 like ‘通配符’,其中 % 表示任意个字符,_ 表示单个字符
select * from student where ename = '张%'  // 所有姓张的学生
select * from student where ename = '__' // 姓名为两个字的学生
  • 聚合查询
//常见的有5种:统计指定列的记录数: count   记录不为null的总数:sum   计算数据中不为null的平均值:avg   找出数据中的最大值:max   找出最小值:min
select sid, max(math) from  student // 找出学生中数学成绩最高的同学的sid
select count(*) from student //计算student表中有多少同学
select avg(english) from student //计算student中english的平均分
  • 排序查询
//  分为两种 : 顺序和倒序
// 语法:order by 字段  desc /asc (降序/升序 ,若是asc 可省略不写 ,默认为升序)
select * from student  order by math desc //student中,按照数学成绩降序排序。
select * from student order by english [asc]  // 按照英语升序排序
  • 分组查询
语法:group by  分组的字段 
select sex count(*) from student group by sex //按照sex分组,并将分组之后的记录统计有多少个。
//若要对分组之后的数据再加以条件查询的话,要将where改为having再加条件。
  • 分页查询
//语法: limit index,length
select * from studnet limit 0,5 // sid从0开始,只显示前5个记录

多表查询一般可分三种:

  • 内连接(查询数据之间有关联的数据。)
//内连接分为隐式内连接和显式内连接
//隐式内连接:select 字段名 from 表1,表2,... where 条件
select * from employee  e,department  d  where  e.dept_id = d.id
//显式内连接:select 字段名 from 表1 inner join 表2 on 条件...
select * from employee  e inner join department  d on e.dept_id = d.id
  • 外连接(先查询一个表的所有数据,再查询其他表的关联数据。可以查询出null数据)
//左外连接:select 字段名 from 表1 left join 表2 on 条件...(以表1为主)
select * from employee  e left join department  d on e.dept_id = d.id
//右外连接:select 字段名 from 表1 right join 表2 on 条件...(以表2为主)
select * from employee  e right  join department  d on e.dept_id = d.id
  • 子查询
/*一种查询技巧,没有固定语法,有些像查询嵌套,
子查询结果只要是 单列 ,肯定在 WHERE 后面作为 条件
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
子查询结果只要是 多列 ,肯定在 FROM 后面作为 表
SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件;
*/
/因为数据需要准备的比较多,就不举例了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值