MySQL数据库实操教程(11)——简单查询

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


Android程序员C语言自学完备手册
讲给Android程序员看的前端系列教程(图文版)
讲给Android程序员看的前端系列教程(视频版)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

SELECT概述

MySQL从数据表中查询数据的最基本语句是SELECT。在SELECT语句中,可根据自己对数据的需求,使用不同的查询条件,其基本语法格式如下:

SELECT [DISTINCT] *丨字段名1,字段名2,字段名3,FROM 表名
[WHERE 条件表达式1]
[GROUP BY 字段名 [HAVING 条件表达式2]]
[ORDER BY 字段名[ASCDESC]
[LIMIT [OFFSET,] 记录数];

从上述语法格式可看出,一个SELECT语句由多个子句组成,其各子句的含义如下:

  • SELECT [DISTINCT] *丨字段名1,字段名2,字段名3,…字段名1,字段名2,字段名3,…表示从表中查询的指定字段;而*代表数据表中所有的行与列,二者为互斥关系任选 其一即可。DISTINCT是可选参数,用于剔除查询结果中重复的数据。

  • FROM 表名:表示从指定的表中查询数据。

  • WHERE 条件表达式1:是可选参数用于指定查询条件。

  • GROUP BY 字段名 [HAVING 条件表达式2]GROUP BY是是可选参数,用于将查询结果按照指定字段进行分组,HAVING也是可选参数,用于对分组后的结果进行过滤。

  • ORDER BY 字段名[ASC丨DESCORDER BY是可选参数用于将查询结果按照指定字段进行排序。排序方式由参数ASCDESC控制;其中,ASC表示按升序排列,DESC表示按降序排列。若不指定参数,默认为升序排列。

  • LIMIT [OFFSET] 记录数LIMIT是可选参数用于限制查询结果的数量。 LIMIT后面可以跟两个参数,第一个参数OFFSET表示偏移量,如果偏移量为0则从查询结果的第一条记录开始,偏移量为1则从查询结果中的第二条记录开始…以此类推。OFFSET为可选值,如果不指定其默认值为0。第二个参数记录数表示返回查询记录 的条数。

总的来说:SELECT语句比较复杂,所以我们将通过具体的案例对SELECT语句的各部分进行逐一讲解。接下来,我们从简单查询开始讲起。

简单查询概述

简单查询即不含where的select语句。在此,我们讲解简单查询中最常用的两种查询:查询所有字段和查询指定字段。

在此,先准备测试数据,代码如下:

-- 创建数据库
DROP DATABASE IF EXISTS mydb;
CREATE DATABASE mydb;
USE mydb;

-- 创建student表
CREATE TABLE student (
	sid CHAR(6),
	sname VARCHAR(50),
	age INT,
	gender VARCHAR(50) DEFAULT 'male'
);

-- 向student表插入数据
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1001', 'lili', 14, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1002', 'wang', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1003', 'tywd', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1004', 'hfgs', 17, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1005', 'qwer', 18, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1006', 'zxsd', 19, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1007', 'hjop', 16, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1008', 'tyop', 15, 'female');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1009', 'nhmk', 13, 'male');
INSERT INTO student (sid,sname,age,gender) VALUES ('S_1010', 'xdfv', 17, 'female');

查询所有字段

查询所有字段是指査询表中所有字段的数据,MySQL中有两种方式可以査询表中所有字段,现对这两种方式进行详细讲解。

方式一

语法如下:

SELECT * FROM 表名;

在该语法中*代表数据表中所有的行与列;这点与以后要学到的count(*)是一样的。所以,通过SELECT * FROM 表名;可查看表中的所有数据。

代码如下:

SELECT * FROM student;

结果如下:
MySQL数据库实操教程(11)——简单查询_第1张图片

方式二

语法如下:

SELECT 字段名1,字段名2,FROM 表名

在该语法中:字段名1,字段名2,…表示査询的字段名;此处需要列出表中所有的字段名。

代码如下:

SELECT sid,sname,age,gender FROM student;

查询指定字段

语法如下:

SELECT 字段名1,字段名2,FROM 表名

在该语法中:字段名1,字段名2,…表示査询的字段名;此处不需要列出表中所有的字段名;仅列出所需查询的字段。

代码如下:

SELECT sid,sname,age FROM student;

常数的查询

在SELECT中除了书写列名,还可以书写常数。

代码如下:

SELECT '2020-02-04',9527,sname FROM student;

结果如下:
MySQL数据库实操教程(11)——简单查询_第2张图片

从查询结果中删除重复数据(行)

现在,我们来查询student表中的学生性别。

代码如下:

SELECT gender FROM student;

结果如下:
MySQL数据库实操教程(11)——简单查询_第3张图片
从查询结果中,我们可以看出:查询结果有多条数据(行)。但是,学生性别无非两种:male和female。所以,我们需要利用DISTINCT关键字去掉重复的数据。

语法如下:

SELECT DISTINCT 字段名1 , 字段名2... FROM 表名;

在该语法中:字段名1表示要过滤重复记录的字段。

示例如下:

SELECT DISTINCT gender FROM student;

结果如下:
MySQL数据库实操教程(11)——简单查询_第4张图片

在使用DISTINCT 时需要注意:

在SELECT查询语句中DISTINCT关键字只能用在第一个所查列名之前。

错误示例:

SELECT gender , DISTINCT sname FROM student;

正确写法:

SELECT DISTINCT gender ,sname FROM student;

算术运算符

在SELECT查询语句中还可以使用加减乘除运算符。

示例如下:

-- 查询十年后各学生的年龄大小
SELECT sname,age+10 FROM student; 

结果如下:
MySQL数据库实操教程(11)——简单查询_第5张图片

你可能感兴趣的:(MySQL数据库实操教程,MySQL,SELECT,查询)