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

  • 简单查询
// 查询表中的所有数据:
  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 条件;
*/
/因为数据需要准备的比较多,就不举例了。