Java 数据库 第五章 查询数据(DQL)

第五章 查询数据(DQL)
查询(DQL)是数据库中最为常用和复杂的一种SQL结构,学会编写查询SQL是程序员必须具备的能力。
要从数据库中查询数据,我们使用SQL的select语句。
标准结构:
select [distinct]{*|列名[别名],...}
from 表名
[where 过滤条件]
[order by 列1,列2...];
注:“[]”中的内容为可选项。


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


表前缀:select t_class.c_id from t_class;


投影操作:
列别名:使用别名可以使SQL语句和返回的数据更容易读懂、更容易理解,在多个表有同样的列名的时候,使用别名更容易区分。
在列名或表明用AS关键字来提供别名:select 列A AS A,列B AS Bfrom 表明 AS T;
当使用表的别名时,可以在同一SQL语句中的列名使用别名:select T.列A AS A, T.列B AS B from 表名 AS T;


计算列:
在数据库管理系统中,我们也可以执行返回计算列的select查询。但会计算列意味着数据不存在于数据库中,但是可以从数据库中的数据构造或者计算得来。


排除重复数据
数据库表的同列中,经常有相同值多次出现。有时我们需要确保返回唯一的数据行,这是我们需要使用distinct关键字来排除重复的行数据。
标准结构:
select distinct 列1 from 表名;
select distinct 性别 from t_class;
此语句结果只有2条数据,重复的数据不显示。


返回限定行数的查询
在MySQL中可以限制查询的行数,并制定从第几行开始到第几行结束。
标准结构:
select 列1,列2 from student limit 开始序号,返回的行数。
如果用1个参数,则表示从第一行开始返回指定行数的结果;如果用2个参数,则表示从指定行开始。
注意:limit序号是从0开始。limit只能用于MySQL中。


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


选择操作的条件:
“=”:用于检测值是否与另一个值相等;
“!=”,“^=”,“<>”:用于检测值是否不等于另一个值;
“>”:通过第一个操作数大于第二个操作数则为真;
“>=”:用于检测第一个操作数是否大于或者等于第二个操作数;
“<”:如果第一个操作数小于第二个操作数则为真;
“<=”:用于检测第一个操作数是否小于或者等于第二个操作数。


多条件选择操作
组合where条件:
and:并且
or:或者
标准结构:
select 列A,列B from 表 where 条件1(and或or)条件2;


执行范围测试(BETWEEN)
一个范围搜索,大于等于下限,并且小于等于上限。
标准结构:
select 列A,列B from 表 where 列C between 下限 and 上限;


定义集合关系(in或not in)
在指定的某几个值中进行搜索
标准结构:
select 列A,列B from 表 where 列C in (值集合);


模糊查询(like)
模糊查询是一种比较实用的过滤方式,利用通配符来实现模糊查询。
标准结构:
select 列A,列B from 表 where 列C like 模式;
通配符:
“_”通配符:表示任何单个字符;
“%”通配符:表示包含零个或多个任意字符。


处理空值数据
在数据库中判断某列是否为空不能用=null,而应该用is null或is not null。使用其他任何比较运算符来匹配null得到的结果都是false,比如null=null也是返回false。
标准结构:
select * from student where sex is null;


length()方法可以判断长度


排序操作
排序操作是指当查询的结果投影出来后以哪一列或几列的顺序进行排列。如果不指定则以数据库默认顺序排列。
标准结构
单列排序:
select 列A,列B,列C from 表 order by 列A;
其中,order by子句指定列A用于对数据排序,列A的值可以使字母、数字、时间等。
多列排序:
select 列A,列B,列C from 表 列A,列B,列C;


order by排序默认为升序排序,在语句最后加上desc表示降序排序,加上asc表示升序排序。


基本查询SQL的执行顺序
要学号查询SQL就必须掌握SQL的执行顺序,目前我们已经学写了select、from、where、order by这几个关键字的用法,他们组成了基本查询SQL的结果,下面是他们的执行顺序:
第一步:执行from;
第二步:where条件过滤;
第三步:执行select投影列;
第四步:执行order by排序。


总结
为从数据库中查询数据,必须使用SQLselect语句。
所有的select语句均使用select关键字开头。
select * from 表名 可以返回表中所有列。
如果表名或列名是一个SQL关键字或是数据库厂商的保留字,则需要将表名或列名用中括号或双引号括起来。
通过select语句,既可以返回单列数据,也可以返回多列数据。
使用别名,可以使SQL语句和返回的数据更易读。
在SQL语句中,可以对列执行一般的加减乘除数学计算。
在SQL语句中,可以使用特殊的连接符号将同为字符串的两个列连接起来。
在SQL语句中使用distinct关键字可以排除重复数据。
在SQL语句中使用where子句来过滤查询,过滤条件可以是多种形式。
为对数据排序,可以在SQL 语句中使用order by子句。当order by子句后只指定一个列名时,即按照单列排序。如果指定多个列名时,即按照多列排序。多列排序是根据后面列名的顺序确定优先级。
在order by子句中的列名上指定asc或desc关键字,使数据按照升序或降序排列。如果不指定该关键字,则默认以升序的方式排列。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值