自定义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程序员看的前端系列教程(视频版)
MySQL从数据表中查询数据的最基本语句是SELECT。在SELECT语句中,可根据自己对数据的需求,使用不同的查询条件,其基本语法格式如下:
SELECT [DISTINCT] *丨字段名1,字段名2,字段名3,…
FROM 表名
[WHERE 条件表达式1]
[GROUP BY 字段名 [HAVING 条件表达式2]]
[ORDER BY 字段名[ASC丨DESC]
[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丨DESC
:ORDER BY
是可选参数用于将查询结果按照指定字段进行排序。排序方式由参数ASC
或DESC
控制;其中,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;
方式二
语法如下:
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;
现在,我们来查询student表中的学生性别。
代码如下:
SELECT gender FROM student;
结果如下:
从查询结果中,我们可以看出:查询结果有多条数据(行)。但是,学生性别无非两种:male和female。所以,我们需要利用DISTINCT关键字去掉重复的数据。
语法如下:
SELECT DISTINCT 字段名1 , 字段名2... FROM 表名;
在该语法中:字段名1表示要过滤重复记录的字段。
示例如下:
SELECT DISTINCT gender FROM student;
在使用DISTINCT 时需要注意:
在SELECT查询语句中DISTINCT关键字只能用在第一个所查列名之前。
错误示例:
SELECT gender , DISTINCT sname FROM student;
正确写法:
SELECT DISTINCT gender ,sname FROM student;
在SELECT查询语句中还可以使用加减乘除运算符。
示例如下:
-- 查询十年后各学生的年龄大小
SELECT sname,age+10 FROM student;