sqlserver 数据库学习笔记

时间:2024-01-14 21:54:33 

1,exists和in的理解(参考https://www.jb51.net/article/28922.htm)

exists:如果子查询中包括某一行,那么就为TRUE

in:如果操作数为TRUE等于表达式列表中的一个,那么就为TRUE

exists总是搞得不太明白

select 。。。from。。。where 。。。

where就相当于一个判断条件,只有where后面的表达式运算结果为TRUE,前面的才能select出来

EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False

1: SELECT c.CustomerId, CompanyName 2: FROM Customers c 3: WHERE EXISTS( 4: SELECT OrderID FROM Orders o 5: WHERE o.CustomerID = cu.CustomerID)
像这样的EXISTS子查询中的SELECT什么根本不重要,因为子查询只是检查这个表中有没有满足WHERE后条件的行, 有就返回TRUE,没有就FALSE,所以很多EXISTS后都是SELECT的*

一行行的去判定,EXISTS返回的是TRUE,就是存在,则把这行的相关信息输出

1: select distinct 姓名 from xs 2: where not exists ( 3: select * from kc 4: where not exists ( 5: select * from xs_kc 6: where 学号=xs.学号 and 课程号=kc.课程号 )
分析下上面的查询语句:

把最外层的xs表里的记录一行一行的同中层一行一的笛卡尔乘积后拿到里面去检验

在最里层,如果xs_kc表里的某行有拿来检验的这行的学号,同时有中层拿来检验的课程号

就返回TRUE,说明这个这个学生选了这门课

中层如果某门课程没有收到返回的TRUE信息,说明这个名字和课程的搭配在xs_kc表中没有,或者说中层select出来的是没有被这个学生选择的课程信息,如果有这样的课程,就向最外层返回个TRUE

最外层在返回信息上加了not,即最外层找的是这样的一种学生:

他选择了所有的课程

最外层一行行的去检测,如果他满足这个条件,就输出他的姓名且只输出一次

我这是一层层的分析,还有么有什么别的办法?

2,select。。。into @。。。

和select @。。。 = 。。。应该是相同的吧

3,用AS为列重命名似乎比=更好点,和赋值区分开

4,用compute汇总的时候,如果是根据某列汇总的,先要order by此列,然后在compute相应信息,最后by此列

group或者compute的时候,如果by了某列,select里都要出现相同的列

区别是group的聚合函数在select行中(称为选择列表),而compute的聚合函数在compute行中,同时compute可以不带by,对所有行汇总

标签:sqlserver,数据库,学习笔记
0
投稿

猜你喜欢

  • 解读pandas.DataFrame.corrwith

    2023-10-17 13:22:09
  • Python爬虫基础之requestes模块

    2022-04-24 20:20:15
  • mysql unix准换时间格式查找指定日期数据代码

    2024-01-16 00:35:24
  • PHP composer更新指定依赖包过程详细讲解

    2023-05-27 18:05:34
  • 再谈javascript图片预加载技术

    2011-03-11 19:57:00
  • python json load json 数据后出现乱序的解决方案

    2021-01-25 02:49:02
  • pyqt5利用pyqtDesigner实现登录界面

    2023-09-04 15:19:36
  • SpringBoot使用flyway初始化数据库

    2024-01-28 13:43:38
  • JavaScript获取时区实现过程解析

    2023-08-22 20:58:34
  • Mysql常见bug及解决方案超详细讲解

    2024-01-15 17:20:56
  • 在python list中筛选包含字符的字段方式

    2023-12-17 17:02:06
  • python通过elixir包操作mysql数据库实例代码

    2024-01-26 04:12:16
  • SQL Server中调用C#类中的方法实例(使用.NET程序集)

    2024-01-23 17:24:56
  • Python实现在Linux系统下更改当前进程运行用户

    2023-03-27 02:53:33
  • Python基于OpenCV实现人脸检测并保存

    2023-10-07 00:43:37
  • 微信小程序 swiper 组件遇到的问题及解决方法

    2024-04-18 09:40:47
  • Mysql5.7定时备份的实现

    2024-01-22 13:08:27
  • 解析JavaScript中的标签语句

    2024-05-13 10:35:07
  • C#调用python脚本的方法步骤(2种)

    2021-11-12 02:44:09
  • python读取json数据还原表格批量转换成html

    2023-11-19 05:46:20
  • asp之家 网络编程 m.aspxhome.com