标签:信息 大于 图片 cdc dql 运算 表名 HERE ice
数据库单表查询 - 简单筛选查询本文关键字:数据库、数据查询语言、DQL
之前我们已经了解了SQL语言的分类,可以划分为:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DCL(数据控制语言)、TPL(事务处理语言)、CCL(指针控制语言),本文将介绍DQL。
单表查询指的是所需要查询的数据都包含在一个表中,我们只需要对一张表进行操作就可以完成查询,属于比较简单的查询。本文使用的测试数据表结构如下:
在进行查询时,需要用到的主要关键字包括:SELECT、FROM、WHERE。
在使用表名和列名时,为了防止和关键字冲突,可以使用反引号,语法结构如下:
SELECT `列名`,`列名`,... FROM `表名` WHERE 查询条件;
全字段查询代表直接查询出表中所有的列,我们可以直接用*
号代表,会按照定义数据表时指定的字段顺序,顺次罗列出数据表的所有列,我们也可以手动写出每个列的名称来进行顺序的调整。
SELECT * FROM student;
部分列查询指的是只需要显示表中的某几列,此时需要罗列出每个列的名称,用逗号隔开,所声明的列的名称必须与表中已经定义的列名相同。
SELECT S_no,S_name,S_sex FROM Student;
如果在进行数据查询时,我们想要自定义结果表所显示的列名(表头),可以使用AS关键字(多数情况下可省略)。同时,别称还能方便的代替表名或某些表达式(避免重复计算)。
SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别` FROM Student;
如果说SELECT后面的字段个数影响了查询结果的列,那么数据筛选(或称条件查询)就会影响到查询结果的行,有很多不符合条件的数据会被过滤掉。
在进行数据筛选时,会直接用某个列的列名来做为参照,该列下的每个数据都会和给定的条件进行比较,如果满足就会被取出,在进行比较时一定要注意数据类型的匹配。
最简单的运算符其实就是和是否相等,是否大于或小于相关的符号:
SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别`
FROM Student
WHERE S_sex = ‘男‘;
SELECT S_no AS `学号`,S_name AS `姓名`,S_sex AS `性别`
FROM Student
WHERE S_sex <> ‘男‘;
SELECT * FROM Choice
WHERE Score > 80;
SELECT * FROM Choice
WHERE Score > 80;
SELECT * FROM Course
WHERE Course_score <= 5;
SELECT * FROM Course
WHERE Course_score >= 3;
如果我们需要查找的数据在某一个区间内,并且两边都是闭区间,这个时候可以使用BETWEEN
xxx AND
xxx。
SELECT * FROM Course
WHERE Course_score BETWEEN 5 AND 8;
在数据库中存在一个特殊的数据类型,用于标记未存入任何数据,用NULL表示。需要注意的是空字符串并不等同于NULL。
SELECT * FROM Choice
WHERE Score IS NULL;
SELECT * FROM Choice
WHERE Score IS NOT NULL;
在有些时候我们只模糊记得数据的部分信息,或在商城中需要做根据部分名称来查询商品的功能,这个时候据需要使用LIKE
关键字。使用LIKE时,需要和通配符一同使用,经常与LIKE搭配的通配符如下:
SELECT * FROM Teacher
WHERE T_name LIKE ‘王%‘;
SELECT * FROM Teacher
WHERE T_name LIKE ‘%一%‘;
在进行数据查询时,如果某一列存在重复的数据,而我们只需要知道都有哪些数据出现过,这个时候就可以使用去重,将重复的数据过滤掉。需要注意的是:去重查询相当于是一种查询模式,与具体的列无关。默认查询时,在SELECT关键字省略了ALL
,意为全量数据查询模式,在使用DISTINCT
时要紧跟SELECT关键字。
如果只查询一列的数据,得到的就是这一列去重后的结果:
SELECT DISTINCT Course_no
FROM Choice;
如果查询的列有多个,将会显示这两个列的唯一组合,也就是说如果单独看某一列数据,很有可能会有重复数据,但这些列的数据的组合一定是唯一的。
SELECT DISTINCT Course_no,S_no
FROM Choice;
如果想要表达某个值可能是一组值中的一个,这样的逻辑,可以使用关键字IN
。在IN之后使用一对括号,其中罗列多个值,如果列中的数据在这些值中出现,则代表匹配。
SELECT S_no,Class_no,S_name,S_sex
FROM Student
WHERE Class_no IN (‘js0001‘,‘js0002‘);
在WHERE中可以使用AND连接两个条件,代表同时成立。
在WHERE中可以使用OR连接两个条件,代表成立其一即取出数据。
在WHERE中可以使用NOT(条件)来表达反向的逻辑。
标签:信息 大于 图片 cdc dql 运算 表名 HERE ice
原文地址:https://blog.51cto.com/10984944/2507477