数据查询入门
什么是数据查询
数据库的查询是对数据表中现有的数据进行逐行筛选的工作,它按照要求从符合查询条件的记录中把指定的字段值提取出来,形成一个结果呈现给用户。
简单查询
select 命令在SQL语句中使用频率是最高的。在select语句中包含大量的子句,用于完成不同的查询功能,如排序(OPDER BY)、条件(WHERE)、分组(GROUP BY)等
基本语句
select命令的最基本的语法如下
select select_list
from table_name
[WHEREsearch_condition]
[ORDER BY order_expression[ASC|DESC]]
[LIMIT [offset] rowcount]
语法说明
select_list :用户要查询的字段列表,“**” 代表所有字段
table_name : 用户要查询信息的表(表或视图)。
where : 查询的筛选条件开始关键字。
search_condition: 查询条件的内容。
order_expression: 按照那些字段进行排序
asc: 表明是升序
Desc: 将结果按照降序排序
limit: 限制每次查询出来的数据字数
基本应用
select 全麦查询
用户有时需要查看当前表内的所有内容,分析表的信息内容是,可以采用下面的方式查看学生表中所有的数据
示例:
select* from StudentInfo
select 选择列查询
select id,studemtNmae,age from StuddentInfo
查询中的别名
当直接使用select查询后,由于在设计数据库是使用的是都是英文的字段名,而且有的字段名不是很好理解,对用户来说不够直观。
使用AS关键字为字段定义别名
语法:
select 字段名1 AS 别名,字段名2 AS 别名 .... FROM 表名
使用空格为字段定义别名
语法
select 字段名1 别名,字段名2 别名 ... FROM 表名
条件查询
使用where子句限制查询结果
全表查询虽然能够将所有的数据查询出来,但是这样操作也有一定的弊端,如果表的数据量非常大,则会消耗掉大量的内存和系统资源,而且一般的全表查询结果,对于用户来说作用不是很大,有时候只需要查看某些闲着条件内的数据,因此需要按照条件进行数据的查询。
单条件查询
单条件查询是指在where语句后面只有一个条件,
例如,要查询年龄在21岁以上的学生信息
select id,StudentName,Age from StudentInfo where Age >21;
多条件符合查询
有时候条件可能不仅仅是一条,可能是多个条件的组合。在这种情况下就需要使用到上一张中的逻辑运算符来组合多个条件,逻辑运算符有:“NOT” 、“AND”、“OR”。
示例:
select id,StudentName,Age,Gender from StudentInfo where Age =20 AND Gender='女';
使用Distinct 消除重复行
在查询某列数据的时候,可能返回的结果中存在重复的值,而用户对于重复的值可能只需要知道一个即可。
例如要查询学生表中登记的学生都有那些班级的,只需要知道这些班级编号即可。因为一个办理一定存在多名同学,所以使用之前的查询方式,返回的班级编号结果一定有很多重重复的行,这些重复的行值只需要消除成1个,select 语句中的 Distinct关键字就是用来解决这个问题的
示例:
select DISTINCT classID FROM studentinfo
使用LIMIT限定查询返回行
当表中的数据量比较多的时候,用户只需要看到前面的几行就能达到查询的目的,这时用LIMIT 关键字可以限制返回的查询结构的行数.LIMIT限定查询一般和数据查询排序结合使用,对比排序后的数据取前面一定量的结果。
语法
LIMIT[位置偏移量] 行数
位置偏移量: 用于只是MYSQL从哪一行开始显示,是一个可选参数,如果不指定该参数,将会从结果集的第一条记录开始(从零开始计数);
行数:只是返回的记录条数
例如:现在我们要显示studentInfo表的前四条记录,命令如下:
select id,studentName,Gender,Age from studentInfo LIMIT 4;
注意:
LIMIT 语句时MYSQL 特有的功能。Oracle 、SQL Server 限定查询返回行使用的时其他语句。
处理Null值
MySQL中经常有些字段值为Null。Null是一种 比较特殊的情况,如果直接通过sql语句查询Null是查询不到的结果都是0条,用字段名=Null和字段名 !=Null 判断结果是错误的。
所以MySQL提供了一个专门针对Null查询的关键字就是 isNull 和 is not Null.
使用Order by 进行查询排序
表中数据是按照添加的物理顺序存放的,但是在查询的时候,我们会需要按照某个规则来对结果进行顺序的排序然后在显示,这是就需要用到Select命令中的排列子句来帮忙实现了。
单列排序
单列排序是指按照表中的某一列进行排序,即ORDER BY 子句后面只有一个列名。比如我们向根据学生的年龄从小往大或从大往小 来排列查询的结果。
示例:
select id,studentName,Gender,Age from studentInfo ORDER BY Age ASC -- 升序的方式进行查询
select id,studentName,Gender,Age from studentInfo ORDER BY Age DESC -- 降序的方式进行查询
注意:
(1) :在数据库中默认是以升序进行排序的,所以ASC可以略去不写
(2) :在数据中,Null值比所有的值都要小
多列排序
多列排序时,order by 子句后面跟多个字段,字段之间用逗号隔开,每个字段后面都可以跟ASC或DESC 。多列偶爱徐的基本运算过程时:数据库引擎会按照第一个字段以及升、降序规则排序查询结果,如果查询结果里在这个字段上有重复值,则对这些存在重复的数据行按照第二个排列字段及其升、降序规则进行排序,以此类推
案例
select id,studentName,Gender,Age from studentInfo ORDER BY Age DESC,Gender ASC