您的位置:首页 > 其它

第五章 简单的数据查询

2016-01-12 21:27 726 查看
查询基本结构
•概念
–查询(DQL)是数据库中最为常用和复杂的一种SQL结构,学会编写查询SQL是程序员必须具备的能力。
–要从数据库中查询数据,我们要使用SQL的SELECT语句。标准SELECT查询由SELECT子句、FROM子句、WHERE子句、ORDER BY子句组成。
–标准结构

SELECT [DISTINCT] {*
| 列名
[别名],
…}FROM
表名[WHERE
过滤条件][ORDER
BY 列1,列2…]

•查询操作的分类
–投影操作
•指定查询结果中能显示哪些列
–选择操作
•指定哪些行出现在结果中
–排序操作
•指定查询的结果以什么样的顺序显示

投影操作

•概念
–投影操作是查询语句里必须有的子句,关键字则为SELECT。它将选择对表中哪些列进行操作,这些列将出现在结果中。
•标准结构

SELECT 列1,列2 FROM
表名

•列表名的几种书写方法:
如果我们选择某个表中的多个列,那么列名之间用逗号分隔开;
如果是单个列,只需要列出该列的列名即可;
如果选择所有的列,可以简单地用“*”号带代替列名列表。

•表前缀

SELECT t_student.姓名
FROM t_student

•列别名
–使用别名,可以使SQL语句和返回的数据更容易读懂、更容易理解。在多个表有同样的列名的时候,使用别名更容易区分。
–在列名或表名用AS关键字来提供别名,语法如下:

SELECT 列A AS A,
列BAS B,
列C AS C
FROM 表名
AS T

–当使用表的别名时,可以在同一SQL语句中的列名使用别名,例如:

SELECT T.列AAS A, T.列B
AS B, T.列C AS C
FROM 表AS
T

•计算列
–在数据库管理系统中,我们也可以执行返回计算列的SELECT查询。返回计算列意味着数据不存在于数据库中,但是可以从数据库中的数据构造或者计算得来。
–举例
•将每个学生年龄加上10岁显示

SELECT 年龄+10 FROMt_student

•投影列也可以用字符串连接,MySQL中字符串连接用CONCAT函数,如

SELECT CONCAT(姓名,’-’,年龄)
FROM t_student

•排除重复数据
–数据库表的同列中,经常有相同值多次出现。有时,我们需要确保返回唯一的数据行。这时我们需要使用DISTINCT关键字来排除重复的行数据。
–标准结构

SELECT DISTINCT 列1 FROM
表名

SELECT DISTINCT 性别 FROM
t_student

结果只有2条数据,重复的数据不显示。

•返回限定行数的查询
–在MySQL中可以限制查询的行数,并制定从第几行开始到第几行结束。
–标准结构

SELECT 列1,列2 FROM
t_student LIMIT
开始序号 ,
返回的行数

–如果用1个参数,则表示从第一行开始返回指定行数的结果。
–如果用2个参数,则表示从指定行开始返回指定行数的结果。

注意:LIMIT序号是从0开始。LIMIT只能用于MySQL中。

选择操作:

•单条件选择操作
–WHERE子句应用搜索条件于SELECT查询获得的数据,搜索条件可以采用不同的形式,但是条件的值都是布尔值。在此情况下,我们只对“列C = 值”为真的行感兴趣。如果条件为真,行就被返回;如果为假或者UNKNOWN(因为NULL值的存在),则被忽略。
–标准结构

SELECT 列1,
列2
FROM 表
WHERE
列3
= 值
–举例
•查询姓名为张三同学的所有信息

SELECT *
FROM t_student WHERE
姓名=‘张三’

比较运算符:

运算符

含义

=

用于检测值是否于另一个值相等

!=

用于检测值是否不等于另一个值

^=

与!=类似

<>

与!=类似

>

如果第一个操作数大于第二个操作数则为真

>=

用于检测第一个操作数是否大于或者等于第二个操作数

<

如果第一个操作数小于第二个操作数则为真

<=

用于检测第一个操作数是否小于或者等于第二个操作数

•多条件选择操作
–组合WHERE 条件
•AND:并且
•OR:或者
–标准结构

SELECT
列A,列B
FROM 表
WHERE 条件1 (and
或者 or)条件2

–举例
•查询年龄在18岁以下或25岁以上的同学信息。

SELECT * FROM t_student WHERE
年龄<18OR
年龄>25

查询年龄在18-25岁之间的女生信息。

SELECT * FROM t_student WHERE
年龄>=18AND
年龄<=25AND
性别='女'

•执行范围测试(BETWEEN)
–一个范围搜索,大于等于下限,并且小于等于上限。
–标准结构

SELECT
列A,列B
FROM 表 WHERE
列C BETWEEN
下限 AND 上限

–举例
•查询年龄在18到25岁之间的学生信息

SELECT * FROM t_student WHERE
年龄 BETWEEN18 AND 20

•定义集合关系(IN或NOT IN)
–在指定的某几个值中进行搜索
–标准结构

SELECT
列A,列B
FROM 表
WHERE 列C IN (值集合)

–举例
•查询年龄在18、20、22岁三个年龄段的学生信息

SELECT * FROM t_student WHERE
年龄 IN(18,20,22)

•模糊查询(LIKE)
–模糊查询是一种比较实用的过滤方式,利用通配符来实现模糊查询。
–标准结构

SELECT 列A,
列B FROM
表 WHERE
列C LIKE
模式

–通配符
•“_”通配符
–表示任何单个字符
•“%”通配符
–表示包含零个或多个任意字符

•模糊查询(LIKE)
–举例
•查询名字为两个字的学生信息

SELECT * FROM t_student WHERE
姓名 LIKE'__'

•查询姓张的学生信息

SELECT * FROM t_student WHERE
姓名 LIKE ‘张%'

•处理空值数据
–在数据库中判断某列是否为空不能用=NULL,而应该用IS NULL或IS NOTNULL。使用其他任何比较运算符来匹配NULL得到的都是FALSE的结果,比如NULL=NULL也是返回FALSE。
–举例

SELECT * FROM t_student WHERE
性别 IS NULL

排序操作:

•概念
–排序操作是指当查询的结果投影出来后以哪一列或及列的顺序进行排列。如果不指定则以数据库默认顺序排列。
•标准结构
–单列排序

SELECT 列A,
列B,列C
FROM 表
ORDER BY列A

•其中,ORDER BY子句指定列A用于对数据排序,列A的值可以是字母、数字、时间等。
–多列排序

SELECT 列A,
列B,列C
FROM 表
ORDER BY列A,
列B,
列C...

在ORDERBY子句后指定多个列名时,是根据后面列名的顺序确定优先级。

基本查询SQL的执行顺序

•要学好查询SQL就必须掌握SQL的执行顺序,目前我们已经学习了SELECT、FROMWHERE、ORDER BY这几个关键字的用法,他们组成了基本查询SQL的结果,下面是他们的执行顺序。
•第一步:执行FROM
•第二步:WHERE条件过滤
•第三步:执行SELECT投影列
第四步:执行ORDER BY 排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: