sqlserver 数据库学习笔记

来源:asp之家 时间:2011-12-01 08:15:06 

1,exists和in的理解
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
投稿

猜你喜欢

  • Access中的模糊查询

    2007-11-18 14:57:00
  • python读取TXT每行,并存到LIST中的方法

    2023-08-09 06:09:20
  • Python集合之set和frozenset的使用详解

    2021-06-26 22:41:20
  • MySQL密码忘了怎么办?MySQL重置root密码方法

    2024-01-23 02:18:30
  • 使用PyInstaller将python转成可执行文件exe笔记

    2021-11-08 04:12:51
  • php is_numberic函数造成的SQL注入漏洞

    2023-07-18 00:32:25
  • 浅谈golang的http cookie用法

    2024-02-12 06:14:59
  • Pycharm插件(Grep Console)自定义规则输出颜色日志的方法

    2023-04-21 19:20:50
  • Thinkphp 框架基础之源码获取、环境要求与目录结构分析

    2023-06-19 07:20:01
  • Python高级特性之闭包与装饰器实例详解

    2021-09-19 03:17:25
  • ASP(JScript)构建SQL语句“类”

    2008-04-30 07:12:00
  • 用FrontPage200八步快速建站

    2008-09-17 10:52:00
  • python docx 中文字体设置的操作方法

    2021-01-12 22:33:44
  • Python功能键的读取方法

    2023-09-26 23:12:24
  • 150行Python代码实现带界面的数独游戏

    2023-08-30 13:03:47
  • 关于Torch torchvision Python版本对应关系说明

    2021-06-17 09:13:52
  • 深入解析Go语言编程中slice切片结构

    2024-04-25 15:01:23
  • Python pip替换为阿里源的方法步骤

    2023-07-19 15:39:23
  • Flask使用SQLAlchemy实现持久化数据

    2023-02-23 07:47:19
  • python实现对求解最长回文子串的动态规划算法

    2023-11-09 10:18:49
  • asp之家 网络编程 m.aspxhome.com