数据库视频——操作查询

连接

  • 基本连接
  • 内连接
  • 外连接
    • 左外连接
    • 右外链接
    • 全连接
  • 交叉连接
  • 自连接

 

 

基本连接

用户在进行基本链接操作时,可以遵循以下基本原则:

  • SELECT 子句列表中,每个目标列前都要加上基本名称
  • FROM子句应包括所有使用的基表
  • WHERE子句应定义一个同等连接
SELECT A.姓名, A.性别, A.出生日期, A.民族, B.班级号, B.家庭住址
FROM 学生信息 A, 班级信息 B
WHERE A.所属班级 = B.班级编号 

内连接

在内连接中,条件加在ON后 和 单独加在 WHERE后面效果相同

SELECT  A.班级名, A.班级人数, B.姓名, B.联系方式
FROM 班级信息 A inner join 辅导员信息 B
ON A.辅导员 = B.辅导员编号         '创建等值连接的条件
WHERE B.性别 = '女'               '可加入其他限定

外连接

内连接消除与另一个表的任何行不匹配的行

外连接会返回FROM子句中提到的至少一个表或视图中的所有行,只要这些行符合任何搜索条件

  • 左外连接
'单纯的左外连接
SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 班级信息 A LEFT OUTER join 辅导员信息 B
ON A.辅导员=B.辅导员编号

 

'当条件加在ON子句后面,如果不满足条件,会变空值
SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 班级信息 A LEFT join 辅导员信息 B
ON A.辅导员=B.辅导员编号 and A.班级人数>20

 

SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 班级信息 A LEFT join 辅导员信息 B
ON A.辅导员=B.辅导员编号 
where A.班级人数>20

 

(当条件加在WHERE 子句中时,不符合条件的内容不会显示)       

  注: *左外连接可以省略 outer

 

  • 右外链接

只是主从表进行互换,基本功能一致

SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 班级信息 A RIGHT OUTER join 辅导员信息 B
ON A.辅导员=B.辅导员编号

 

 

SELECT A.班级名,A.班级人数,B.姓名,B.联系方式
FROM 辅导员信息 B RIGHT OUTER join 班级信息 A
ON A.辅导员=B.辅导员编号

  • 全连接

全连接会显示所有匹配形式,信息情况

SELECT A.班级名,A.班级人数,B.姓名
FROM 辅导员信息 B CROSS JOIN 班级信息 A
WHERE A.辅导员=B.辅导员编号

 

'辅导员信息和班级信息调换,结果位置进行调换
SELECT A.班级名,A.班级人数,B.姓名
FROM 班级信息 A CROSS JOIN 辅导员信息 B
WHERE A.辅导员=B.辅导员编号

 

 

交叉连接

交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到 结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数

SELECT A.班级名,A.班级人数,B.姓名
FROM 班级信息 A CROSS JOIN 辅导员信息 B
'加入WHERE条件语句后,对结果进行筛选
SELECT A.班级名,A.班级人数,B.姓名
FROM 班级信息 A CROSS JOIN 辅导员信息 B
WHERE A.辅导员=B.辅导员编号

自连接

SELECT A.班级名,A.班级人数,B.班级名
FROM 班级信息 A, 班级信息 B
WHERE A.班级人数=B.班级人数
'进一步简化查询结果,精确查找
SELECT A.班级名,A.班级人数,B.班级名
FROM 班级信息 A, 班级信息 B
WHERE A.班级人数=B.班级人数 AND A.班级编号<>B.班级编号
'进一步精确查找
SELECT A.班级名,A.班级人数,B.班级名
FROM 班级信息 A, 班级信息 B
WHERE A.班级人数=B.班级人数 AND A.班级编号<>B.班级编号 AND A.班级名='艺术系2班'

 

 

查询

联合查询

SELECT A.成绩编号,A.分数,B.姓名
FROM 成绩信息 A,学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号='2' and A.考试编号='0801'
UNION
SELECT '',SUM(分数),'合计'
FROM 成绩信息 A,学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号='2' and A.考试编号='0801'
SELECT '',avg(分数),'合计'
FROM 成绩信息 A 学生信息 B
WHERE A.学生编号=B.学号 AND A.课程编号='2' and A.考试编号='0801'
ORDER BY 分数

使用子查询

SELECT  A.成绩编号, A.分数, B.姓名
FROM 成绩信息 A, 学生信息 B
WHERE A.学生编号 = B.学号 AND A.课程编号 = '2' AND A.考试编号 = '0801'
AND B.学号 IN (
SELECT 学号 FROM 班级信息 A, 学生信息 B
WHERE A.班级编号= B.所属班级 AND A.班级编号 = '20050101'
)

嵌套子查询

SELECT  A.成绩编号, A.分数, B.姓名
FROM 成绩信息 A, 学生信息 B
WHERE A.学生编号 = B.学号 AND A.课程编号 = '2' AND A.考试编号 = '0801'
AND B.学号 IN (
SELECT 学号 FROM 班级信息 A, 学生信息 B
WHERE A.班级编号= B.所属班级 AND A.辅导员 = 1
SELECT 辅导员编号 FROM 辅导员信息 where 姓名 = '王艳'
)

xml查询

声明 数据 xml

FOR XML 子句

将从数据库系统检索出的数据显示成xml的格式

EXISTS关键系查询

查看数据查询是否有结果

交查询INTERSECT

差查询EXCEPT

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值