数据库-SQL语言(数据查询)(一)

本文介绍了SQL中的单表查询操作,包括选择表中的若干列、选择元组、使用`ORDER BY`子句排序、应用聚集函数以及结合`GROUP BY`子句进行分组。通过实例详细解析了`SELECT`语句的各种用法,帮助读者掌握基础的数据库查询技巧。
摘要由CSDN通过智能技术生成

目录

数据查询

单表查询

1)、选择表中的若干列

2)、选择表中的若干元组

3)、order by 子句

4)、聚集函数

5)、group by 子句


 

数据查询

数据查询是数据库的核心操作。SQL 提供了 select 语句进行数据查询,该语句具有灵活的使用方式和丰富的功能。其一般格式为:

select [all | distinct] <目标列表达式>[,<目标列表达式>]
from <表名或视图名> [,<表名或视图名>···] | (<select语句>)[ as ]<别名>
[where <条件表达式>]
[group by <列名1> [having <条件表达式>]]
[order by <列名2> [ asc | desc]] ;

整个 select 语句的含义是,根据 where 子句的条件表达式从 from 子句指定的基本表、视图或派生表中找出满足条件的元组,再按 select 子句中的目标表达式选出元组中的属性值形成结果表。如果有 group by 子句,则结果按 <列名1> 的值进行分组,该属性值相等的元组为一个组。通常会在每组中作用聚集函数。如果 group by 子句带 having 短语,则只有满足指定条件的组才予以输出。如果有 order by 子句,则结果还要按 <列名2> 的值的升序或降序排序。

select 语句既可以完成简单的单表查询,也可以完成复杂的连接查询和嵌套查询。下面的例子均以前面创建的学生-课程数据库为例来说明 select 语句的各种用法。

单表查询

单表查询就是指仅涉及一个表的查询

1)、选择表中的若干列

查询指定列:

很多情况下,用户仅对表中的一部分属性感兴趣,这时可以通过在 select 子句的 <目标列表达式>中指定要查询的属性列,例:

//查询全体学生的学号与姓名
select Sno,Sname
from Student ;

//查询全体学生的姓名、学号、所在系
select Sname,Sno,Sdept
from Student ;

查询全部列:

、方法有两种,见例子:

select *
from Student ;
//这种方法查询出来的结果列的显示顺序与其在基表中的顺序的相同

//等价于下面,可调控列的显示顺序
select Sno,Sname,Ssex,Sage,Sdept
from Student ;

查询经过计算的值:

select 子句的 <目标列表达式> 不仅可以是表中的属性列,也可以是表达式。见下面例子:

select Sname,2019-Sage
from Student ;
//查询结果中第二列不是列名,而是一个表达式,是用设置的年份(如2019年)减去学生年龄,得到的就是学生出生年月

<目标列表达式> 不仅可以是算术表达式,还可以是字符串常量、函数等。

//查询全体学生的姓名、出生年份好所在的院系,要求用小写字母表示系名,并为出生年份指定别名
select Sname,2019-Sage birthday,lower(Sdept) 系别
from Student;

 

2)、选择表中的若干元组

消除取值重复的行:

两个本来并不完全相同的元组在投影到指定的某些列上后,可能会变成相同的行。可以用 distinct 消除它们,如果没有指定 distinct 关键词,则默认为 all ,即保留结果表中取值重复的行。表现形式为:

select distinct Sno 
from SC ;

//默认情况下
select Sno
from SC ;
//等价于
select all Sno
from SC ;

查询满足条件的值:

查询满足指定条件的元组可以通过 where 子句实现,常用的查询条件如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值