首页 > 数据库技术 > 详细

数据库数据查询

时间:2019-11-17 09:33:31      阅读:96      评论:0      收藏:0      [点我收藏+]

 

什么是查询呢?

查询是对已有表中的数据按照某种条件进行筛选,将满足条件的数据筛选出来形成一个新的记录集进行显示,也称为查询结果记录集,

这个记录集的结构与表的结构类似,由行和列组成,但它并不是真正存放在数据库中的表,  而是一种存放在计算机内存中的虚拟表。

若省略查询条件,则返回数据源中的所有记录行。

查询是查找和筛选功能的扩充,它不但能实现数据检索,而且可以在查询过程中进行计算、合并不同数据源的数据,甚至可以添加、更改或删除基本表中的数据。

 

查询的数据源

查询的数据源(也称为“记录源”,RecordSource)是存放在数据库中的基本表或已经创建好的视图,可以有一个或多个数据源。

若是多个数据源,则需指定这些数据源之间的关联关系,以保证查询结果的正确性

 

查询的结果

查询的结果只有在运行查询时才会产生,因此也称为动态结果记录集,这个结果集的显示可以通过前面我们所学过的视图来实现。

 

 

 

数据查询是数据库的核心操作。SELECT语句是SQL语言中功能最强大的语句。

技术分享图片

 

 

 

技术分享图片

SELECT子句:指定要显示的属性列

FROM子句:指定查询对象(基本表或视图)

WHERE子句:指定查询条件

GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。

HAVING短语:只有满足指定条件的组才予以输出

ORDER BY子句: 对查询结果表按指定列值的升序

 

单表查询

查询仅涉及一个表,是一种最简单的查询操作

1.选择表中的若干列(列查询)

2.选择表中的若干元组(行查询)

3.对查询结果排序

4.使用聚集函数

 

技术分享图片

 

 

 

列查询

1.查询指定列

例:查询全体学生的学号和姓名

select sno,sname
from student

2.查询全部列

例:查询全体学生的详细记录

select sno,sname,sgender,sage,sdept
from student

select *
from student

3.查询经过计算的值

SELECT子句的<目标列表达式>为表达式(算术表达式、字符串常量、函数、列别名)

例:查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名,并使用列别名改变查询结果的列标题

select sname as name,year(getdate())-year(cssj) as 年龄,Year of Birth: as Birth:,year(getdate())-sage as BirthDay,lower(sdept) department
from student

 

选择表中的若干元组

1.取消取值重复的行

在SELECT子句中使用DISTINCT短语

select /*(默认 ALL)*/ sno
from sc

select distinct sno,cgrade
from sc

注意DISTINCT短语的作用范围所有目标列

 

2.查询满足条件的元组

WHERE子句常用查询条件
查询条件 谓词
比较 =、>、<、>=、<=、!=、<>、!>、!<、NOT+其他比较运算符
确定范围 BETWEEN...AND...、NOT BETWEEN...AND...
确定集合 IN、NOT IN
字符匹配 LIKE、NOT LIKE
空值 IS NULL、NOT IS NULL
多重条件 AND、OR

 

 

 

 

 

 

(1)比较大小

(2)确定范围

(3)确定集合

例:查询系别为IS、MA、CS的学生信息

select *
from student
where sdept IN(IS,MA,CS)

 

(4)字符串匹配

技术分享图片  

 技术分享图片

 

 技术分享图片

 

匹配模板为固定字符串

例:查询学号为95001的学生的详细情况

select *
from student
where sno like 95001/*等价于where sno = ‘95001‘*/

 

匹配模板为含通配符的字符串

例:查询名字中第2个字为‘阳’字的学生的详细信息

select *
from student
where sname like _阳% 

 

使用换码字符将通配符转义为普通字符

例:查询以“DB_”开头,且倒数第三个字符为‘i‘的课程的详细情况

select *
from course
where cname like DB\_%i__ 
escape \

 

(5)涉及空表的查询

使用谓词IS NULL或IS NOT NULL ( “IS NULL”不能用“= NULL”代替 )

 

(6)多重条件查询

用逻辑运算符AND和OR来联结多个查询条件 ( AND的优先级高于OR,但可以用括号改变优先级 )

 

 

连接查询

连接查询是同时涉及多个表的查询

 

连接查询概念:

同时涉及多个表的查询称为连接查询

用来连接两个表的条件称为连接条件或连接谓词

连接谓词中的列名称为连接字段

注意:连接条件中的各字段类型必须是可比的,但字段名不必是相同的

 

连接查询的执行过程

首先在表1中找到第一个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第一个元组与该元组拼接起来,形成结果表中一个元组。

表2全部查找完后,再找表1中第二个元组,然后再从头开始扫描表2,逐一查找满足连接条件的元组,找到后就将表1中的第二个元组与该元组拼接起来,形成结果表中一个元组。

重复上述操作,直到表1中的全部元组都处理完毕。

 

连接操作说明

SQL的连接操作是通过关联表间的行的匹配而产生的结果。

参与连接的表可以有多个,但连接操作在两个表之间进行,即两两连接。

 

连接查询的主要内容

SQL中连接查询的主要类型

广义笛卡尔积

等值连接查询

非等值连接查询

 

 

 

 

SQL连接的类型

 

 

 

 

 

 

数据库数据查询

原文:https://www.cnblogs.com/jiamian/p/11875123.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!