MySQL 查询数据

MySQL 数据库使用SQL SELECT语句来查询数据。

你可以通过 mysql> 命令提示窗口中在数据库中查询数据

语法

以下为在MySQL数据库中查询数据通用的 SELECT 语法:

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

建一张表用于我们测试:

create table student
(
ids int auto_increment primary key,
name varchar(20),
chinese float,
english float,
math float
);

插入如下数据:

insert into student values(1,'李明',89,78,90); 
insert into student values(2,'乘风',67,89,56); 
insert into student values(3,'南宫流云',87,78,77); 
insert into student values(4,'南宫皓月',88,98,90); 
insert into student values(5,'南宫紫月',82,84,67); 
insert into student values(6,'萧炎',55,85,45); 
insert into student values(7,'林动',75,65,30);

1、指定查询列

mysql> select id,name,chinese from student;

2、去重查询

用distinct关键字, 如果结果中有完全相同的行,就去除重复行

mysql> select distinct math from student;

3、select语句中进行运算

查询学生总成绩

mysql> select id,name,(chinese+math+english) as 总成绩 from student;

查询所有姓南宫人的总成绩。

mysql> select id,name,(chinese+math+english) as 总成绩 from student
-> where name like '南宫%';

4、where查询过滤

在where子句中有很多经常使用的运算符,如下:

(1)查询所有英语成绩大于90的同学成绩:

mysql> select id,name,english as 英语 from student
-> where english > 90;

(2)查询所有总分大于200分的同学

注意:where子句后不能用别名 

因为数据库中先执行where子句,再执行select子句。

mysql> select id,name,(chinese+math+english) as 总成绩 from student
-> where (chinese+math+english) > 200;

(3)查询姓林并且id大于6的学生信息

mysql> select id,name from student
-> where name like '林%' and id >6;

(4)查询英语成绩大于语文成绩的同学

mysql> select id,name from student
-> where english > chinese;

(5)查询所有总分大于200并且数学成绩小于语文成绩的学生信息

mysql> select id,name from student
-> where (chinese+math+english) >200 and math < chinese;

(6)查询所有英语成绩在80到90分的同学 

方法一:

mysql> select id,name,english from student
-> where english >=80 and english <= 90;

方法二:

注意:between是闭区间

mysql> select id,name,english from student
-> where english between 80 and 90;

(7)查询数学成绩为89,90,91的同学信息 

or:

mysql> select id,name,math from student
-> where math=89 or math=90 or math=91;

in:

mysql> select id,name,math from student
-> where math in(89,90,91);

5、order by排序语句

asc升序(默认),desc降序 

order by 子句应该位于select语句的结尾 

eg:对数学成绩进行排序 

默认升序:

mysql> select id,name,math from student
-> order by math;

降序:

mysql> select id,name,math from student
-> order by math desc;

对总分进行从高到低输出

mysql> select (chinese+math+english) as 总成绩 from student
-> order by 总成绩 desc;

6、常用函数

(1)count() 
count(*)统计null值 count(列名)排除null值 

eg :统计当前student表中一共有多少学生

mysql> select count(*) as 人数 from student;

(2)sum() 

eg:统计一个班数学总成绩

mysql> select sum(math) as 数学总成绩 from student;

(3)平均值:avg()

求数学的平均值

mysql> select sum(math)/count(*) as 数学平均值 from student;

mysql> select avg(math) as 数学平均值 from student;

7、group by 子句的使用

假设有一个职工信息表, 

EMP:表名 ;部门:depton;sal:工资;job:工作 

我们设想: 

(1)显示每个部门的平均工资和最高工资 

select deptno,avg(sal),max(sal) from EMP group by deptno; 

(2)显示每个部门的每种岗位的平均工资和最低工资 

select avg(sal),min(sal),job, deptno from EMP group by deptno, job; 

补充:首先按照deptno分组,然后各组再按照job进行分组。 

(3)显示平均工资低于2000的部门和它的平均工资 

解题思路: 

1. 统计各个部门的平均工资 

select avg(sal) from EMP group by deptno 

2. having往往和group by配合使用,对group by结果进行过滤 

select avg(sal) as myavg from EMP group by deptno having myavg<2000;

MySQL的select详细介绍的更多相关文章

  1. MySQL Cluster 配置详细介绍

    在上篇文章已经详细说明了MySQL Cluster搭建与测试,现在来说说详细的配置参数.在MySQL Cluster 环境的配置文件 config.ini 里面,每一类节点都有两个(或以上)的相应配置 ...

  2. mysql分区功能详细介绍,以及实例

    一,什么是数据库分区 前段时间写过一篇关于mysql分表的 的文章,下面来说一下什么是数据库分区,以mysql为例.mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下 ...

  3. Spotlight on Mysql详细介绍

    Spotlight on Mysql详细介绍   by:授客 QQ:1033553122     1. 版本 2. 使用介绍 1) 主页 会话面板 MySQL面板 INNODB面板 存储面板 主机面板 ...

  4. 推荐收藏 —— MySQL视图详细介绍

    前言:  在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会 ...

  5. 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数

    超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...

  6. MySQL视图详细介绍

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  7. 一.Select 函数详细介绍【转】

    转自:http://www.cnblogs.com/hjslovewcl/archive/2011/03/16/2314330.html Select在Socket编程中还是比较重要的,可是对于初学S ...

  8. 多图文,详细介绍mysql各个集群方案

    目录 多图文,详细介绍mysql各个集群方案 一,mysql原厂出品 二,mysql第三方优化 三,依托硬件配合 四,其它 多图文,详细介绍mysql各个集群方案 集群的好处 高可用性:故障检测及迁移 ...

  9. 详细介绍Mysql各种存储引擎的特性以及如何选择存储引擎

    最近业务上有要求,要实现类似oracle 的dblink   linux版本 Server version: 5.6.28-0ubuntu0.14.04.1 (Ubuntu) 修改配置文件 /etc/ ...

随机推荐

  1. 使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  2. appium--连续滑动

    TouchAction 在之前说过了滑动swip,那种是两点之间的滑动,比如上滑,左滑等.但实际工作中会遇到一些复杂的场景,如九宫格的滑动等待,这时候就要使用TouchAction,TouchActi ...

  3. [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的数字

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  4. 带有连接池的Http客户端工具类HttpClientUtil

    一.背景 业务开发中,经常会遇到通过http/https向下游服务发送请求.每次都要重复造轮子写HttpClient的逻辑,而且性能.功能参差不齐.这里分享一个高性能的.带连接池的通用Http客户端工 ...

  5. nginx服务器图片防盗链的方法

    nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuche ...

  6. nginx反向代理配置去除前缀

    (转载)原文链接:https://blog.csdn.net/gongchenyu/article/details/85960027 使用nginx做反向代理的时候,可以简单的直接把请求原封不动的转发 ...

  7. SQLServer --------- 设置主键自增长

    设置主键自增长的两种方式 1.通过图形化的的操作方法进行设置 新建的时候进行设置 第二种是右击设计对已经建好的表进行设置  设置主键  设置自增长 标识增量标识每次自增加多少 标识种子标识从多少开始自 ...

  8. C#给企业微信中的成员发送消息

    先去企业微信门户网站获得密钥和应用ID 创建一个静态工具类 using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using ...

  9. Bootstrap3-导航条

    1. 定义导航条 <!-- 导航条 navbar --> <div class="navbar nav-bar-default"> <ul class ...

  10. MySQL中的存储过程、游标和存储函数

    MySQL中的存储过程首先来看两个问题: 1.什么是存储过程? 存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存 ...