【数据库视频】--查询

sql server 中的查询方式有 联合查询、子查询、嵌套子查询、xml 查询、for XML查询、exists关键字查询、交查询INSERSECT 、差查询EXCEPT

联合查询

注意: *注意两个结果必须在其目标列表中有相同数目的表达式,且数据内容尽量保持一致

这个相同数目是什么意思呢?往下看,你就会知道了!

 如果我没有添加union,它就会出现两个表。

可是我添加了union,他又会报错,报的错就是 我的查询没有相同数目的表达式,为什么呢?因为上面的查询语句包括4列,而下面的只有1列,所以会出错。

又报错了!为什么???明明我已经用空值来代替,与上面查询了相同数目的列。

细看发现,上下查询的表不一样,上面的a表查询的都是text 类型,而下面的是int 类型。

换成一样的表之后,就可以了!

子查询

子查询也很好理解,就是在一个查询语句中又嵌套了一个查询。它有两种情况:

1.使用<> 来连接

2.使用 in 来连接

可是当我改成了in,他什么都没有查出来。这是怎么回事?

因为使用in关键字,返回的是一个数值列表,那么就不应该在查询分数这一列。 

所以,当我换成了查询学号列后,就可以啦!

嵌套子查询

上面我们已经了解过了子查询,那么嵌套子查询是什么我们也就知道了,就是在子查询中再查询。

 一开始的时候,我的嵌套只能查出序列,却怎么也不出结果,后来才知道是因为数据类型不对应,辅导员列我对应的是text 类型,而我查询的辅导员编号是integer类型,这样无法赋值,所以查不出结果。

XML查询

XML (extensible markup language)可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言

可扩展标记语言AccessOracleSQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,可扩展标记语言仅仅是存储数据。事实上它与其他数据表现形式最大的不同是:可扩展标记语言极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同。

https://baike.baidu.com/item/可扩展标记语言/2885849?fromtitle=xml&fromid=86251&fr=aladdin

创建                     插入                                                                                           查询

 for xml 

RAW 模式

AUTO模式

 这两种模式有什么区别呢?大家看出来了吗?

对!如果是raw模式的话,数据是以一整行的形式列出来,而auto模式,也就是默认模式的话,是有层次结构的。

path模式

 path模式的话,不仅以层次结构展开,而且会显示row标记

explicit 模式

在 EXPLICIT 模式中,SELECT 语句中的前两列必须分别命名为 Tag 和 Parent。Tag 和 Parent 是元数据列,它们的值用来确定查询返回的 XML 文档中元素的父子关系,也就是嵌套。

 exists 关键字

 exists 关键字用来判断该查询是否有这样的结果

交查询

我们要使用交查询,就肯定要查询两次,这是第一次查询。

交查询后,就只剩下了一个结果。

差查询

上面交查询是将两次查询相同的结果留下来,而差查询是将两次查询后不同的结果留下来。

好了,查询终于写完了!可以开始下一章了!

发布了32 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43729166/article/details/104027006