查询基础
首先,举一个例子:
查询火车票的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 条件] #统计结果作为条件
[order by order_list[asc | desc]] #对查询结果进行排序