mysql中怎么实现查询操作

52次阅读
没有评论

共计 2485 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 mysql 中怎么实现查询操作,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、选择所有的记录

 select * from table_name;

  其中 * 表示表中的所有字段。

 

2、查询不重复的记录

  用关键字 distinct

 select distinct  字段名  from  表名;

 

3、条件查询

  用关键字 where

 select * from  表名  where  条件;

 where 后面的条件是一个字段的比较,可以使用 =、、、=、=、!= 等比较运算符;多个条件还可以使用 or、and 等逻辑运算。

 

4、排序和限制

  用关键字 order by desc(降序),asc(升序),limit(排序结果显示一部分)

 order by 后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的排序顺序。

  例如:把 emp 表中的记录按照工资 sal 的高低顺序排序。

 select * from emp order by sal; 

 select * from emp order by sal,deptno desc;(sal 升序,septno 降序)

  先按第一个字段排序,当第一个字段相同时,按照第二个字段排序。

 

 select······limit offset_start, row_count;

 offset_start 表示起始偏移量,默认值为 0。row_count 表示显示的行数。

  例如:select * from emp order by sal limit 1,3;

  显示前 3 条记录,起始偏移量为 1,从第二条记录开始显示。

 order by 和 limit 通常一起使用来控制记录的分页显示。

 

5、聚合

  很多情况下,用户需要一些汇总操作,例如统计整个公司的人数或者每个部门的人数。

  语法:

 select  字段 1,字段 2.。。函数名  from  表名  where where_condition1 group
by  字段 11,字段 12 with rollup having where_condition2; 

  函数名表示要做的聚合操作,就是聚合函数,常用的有 sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。

 group by 关键字表示要进行分类聚合的字段、

 having 关键字表示对分类后的结果在进行条件的过滤。

 having 和 where 的区别是 having 是对聚合后的结果进行条件的过滤,而 where 是在聚合前就对记录进行过滤,如果逻辑允许,我们可以用 where 先进行过滤,这样结果集变小了,将对聚合的效率大大的提高,最后在根据逻辑看是否用 having 进行再过滤。

select sum(sal), max(sal), min(sal) from emp;

 

6、表连接

  当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。

  从大类上分,表连接分为内连接和外连接,它们之间的最主要的区别是内连接仅选出两张表中互相匹配的记录,而外连接会会选出其他不匹配的记录。我们最常用的是内连接。

  例如:查询出所有雇员的名字和所在的部门名称,因为雇员名称和部门分别放在表 emp 和表 dept 中,因此,需要使用表连接来进行查询。

 select ename, deptname from emp, dept where emp.deptno=dept.deptno;

 (ename 是表 emp 中的字段,deptname 是 dept 表中的字段)

 

  外连接又分为左链接和右连接(关键字 left join 和  right join)

  左连接:包含所有的左边表中的记录甚至是右边表中没有和他匹配的记录。

  右连接:包含所有的右边表中的记录甚至是左边表中没有和他匹配的记录。

  例如:select ename, deptname from emp left
join dept on emp.deptno=dept.deptno;

 select ename, deptname from dept right join emp on emp.deptno=dept.deptno;

 ename 是表 emp 中的字段,deptname 是 dept 表中的字段。  就是包含表 emp 中的所有记录。  以上两条语句等价。

 

7、字查询

  在某些情况下,当进行查询的时候,需要的条件是另外一个 select 语句的结果,这个时候,就要用到子查询。用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists 等。

 

 select * from emp where deptno in (select deptno from dept);

 (表示的意思就是就表 emp 中的所有记录,除去 dept 表对应的部门不存在的删掉。)

 

  在某些情况下,子查询可以转化成表连接。例如,上面的语句可以写成:

 select emp.* from emp, dept where emp.deptno=dept.deptno;

 

8、记录联合

  我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来。这个时候,就需要用到 union 和 union all 关键字来实现这样的功能。union 和 union all 的区别:union all 是把结果集合并在一起,而 union 是将 union all 后的结果进行一次 distict,去除重复记录。

 select * from table1 union| union all select * from table2;

  例如:

 ① select deptno from emp union
all select deptno from dept;

 ② select deptno from emp union
select deptno from dept;

 ①中的记录将会有重复记录,②中没有重复记录。

关于 mysql 中怎么实现查询操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2485字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)