【章节6】数据库中数据的查询操作

来源:互联网 发布:逆袭网络剧什么时候播 编辑:程序博客网 时间:2024/06/08 16:40

查询基础

首先,举一个例子:

查询火车票的app并没有火车票的信息,信息是存储在远程设备上的;但我们却可以查询到远程的数据库,这就是客户端用服务程序应用程序交互的过程:

(1)客户端首先向服务器发出查询请求(日期,出发点);

(2)服务器会将查询结果(结果集-table)发送给客户端

(3)客户端程序对结果集进行解析,然后显示在界面上。

客户端与服务器交互的图形化解释如下:


简单的查询语句

1.查询表的全部行和列

select * from 表名
示例-查询USERS表中的所有信息:

select * from users

2.查询表的部分列

select 列1,列2 from表名
示例-从玩家表中查询玩家QQ和昵称:

select USER_QQ,USER_NAME from USERS

3.别名的使用:as关键字/空格

select 列1 别名1,列2 别名2 from 表名
示例-从玩家表中查询玩家QQ和昵称,并显示为'玩家QQ'和‘玩家昵称’

select USER_QQ as '玩家QQ',USER_NAME as '玩家昵称' from USERS

4.distinct关键词

作用:从查询结果集中消除重复行
select distinct 列  from 表名

示例-显示参与了游戏的玩家QQ,要求参与多个游戏的玩家不重复显示QQ号
        参与了游戏的玩家→分数表中有成绩的

select distinct USER_QQ from SCORES

5.limit关键字

作用指定查询结果的显示范围
两个参数加到查询结果后面----[起始位置的索引(从0开始)],长度
示例-显示USERS中的第3至第5条数据

select * from users limit 2,3

条件查询语句

1.普通条件查询where

示例1-查询QQ号为12301的玩家信息:      

select * from USERS where USER_QQ = 12301
示例2-查询分数大于2000分的数据:
select * from SCORES where SCORE > 2000     

比较运算符

逻辑运算符:and or not

示例3-查询游戏编号为1且分数大于3000分的数据:
select * from SCORES where GNO = 1 and SCORE > 3000
示例4-查询游戏编号为1和2的分数信息
select * from SCORES where GNO = 1 or GNO = 2

2.模糊查询   between...and

*between...and:大于等于前面的数,小于等于后面的数

用在数值

示例1-查询分数在2500(含)到3000(含)的分数信息:

select * from SCORES where SCORE between 2500 and 3000
示例2-查询分数不在2500(含)到3000(含)的分数信息:
select * from SCORES where SCORE not between 2500 and 3000

用在日期-注意非数值的值加上' '

通配符

表示一组范围内的任意数据;为使通配符起作用,前面加like


示例1-查询所有姓孙的玩家信息:

select * from USERS where USER_NAME like ‘孙%’ 
注意:但是where USER_NAME = ‘孙%’         #%无法起到通配符作用
示例2-查询所有非姓孙的玩家信息:

select * from USERS where USER_NAME not like ‘孙%’ 

3.查询空值的运算符is

*查询空值不能使用=和like,而是is
示例1-查询生日为NULL的玩家信息:

select * from USERS where USER_BIRTHDAY is null
示例2-查询生日不为NULL的玩家信息:(isn't)
select * from USERS where USER_BIRTHDAY is not null

对查询结果排序

1.对指定列进行排序    order by

单列排序要素:
    排序依据:按xx排序
    排序方式:升序/降序

语法
select 列 from 表名 order by 列名_排序依据 [asc|desc]
示例1(查询分数表中编号为1的所有分数信息,并按照分数升序排序):

select * from SCORES where GNO = 1 order by score
示例2(查询分数表中编号为1的所有分数信息,并按照分数降序排序):
select * from SCORES where GNO = 1 order by score desc

2.多列排序  

多列排序要素
    排序依据:按xx排序
    排序方式:升序/降序
    优先级

示例3(查询分数表所有信息,并按照游戏编号的升序和分数的降序进行排序)

select * from SCORES order by GNO,SCORE desc

总述select语句

select 列名 from 表名     #要显示table的哪几个col的结果[where 条件]        #查询条件[group by xx]        #将查询结果进行分组,统计[having 条件]        #统计结果作为条件