SQL基础入门-数据库的数据查询-select语句(二)

数据库的创建及表的创建、数据录入参考本博客其他文章

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>的值的升序或降序排序;

连接

连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接为此,其一般格式为:

[<表名 1>.] <列名 1> <比较运算符> [<表名 2>.] <列名 2> 
其中比较运算符主要有:=><>=<=!=(<>)等 
此外连接谓词还可以使用下面的形式: 
[<表名 1>.] <列名 1> BETWEEN [<表名 2>.] <列名 2> AND [<表名 2>.] <列名 3>

一、等值与非等值连接查询

当连接运算符为 = 时,称为等值连接;
使用其他运算符,称为非等值连接。

连接谓词中的列名称为连接字段。连接条件中的各个连接字段类型必须是可比的,但名字不必相同。

eg:查询每个学生及其选修课程的情况

学生情况存放在 student 表中,学生选课情况存放在 sc 表中,所以本查询实际上 涉及到 student 和 sc 两个表。这两个表之间的联系是通过公共属性 Sno 来实现的

在查询设计器中输入:

USE S_T 
GO 
SELECT student.*,sc.* 
FROM student,sc 
WHERE student.Sno=sc.Sno; 

查询结果为:
在这里插入图片描述
一条 SQL 语句可以同时完成选择和连接查询,这时,WHERE 子句是由连接谓词和选择谓词组成的复合条件

eg:查询选修 2 号课程且成绩在 80 分以上的所有学生的学号和姓名

在查询设计器中输入:

USE S_T 
GO
SELECT student.Sno,Sname 
FROM student,sc 
WHERE student.Sno=sc.Sno AND sc.Cno='2' AND sc.Grade>80; 

查询结果为:
在这里插入图片描述
ps:也可以先从 sc 中挑选出 Cno=’2’并且 Grade>80 的元组形成一个关系,再和 student 中满足 连接条件的元组连接,得到最终的结果关系

二、自然连接

若在等值连接中把目标列中的重复属性去掉则为自然连接

eg:查询每个学生及其选修课程的情况

在查询设计器中输入:

USE S_T 
GO 
SELECT student.Sno,Sname,Ssex,Sage
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值