sqlserver 数据库学习笔记

所属分类: 数据库 / MsSql 阅读数: 472
收藏 0 赞 0 分享
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,对所有行汇总
更多精彩内容其他人还在看

SQL 提权 常用命令

SQL 提权 常用命令,大家可以考虑下将sqlserver的服务运行权限设置为普通用户,即可防止下面的提权。
收藏 0 赞 0 分享

数据转换冲突及转换过程中大对象的处理

数据转换冲突及转换过程中大对象的处理方法,大家可以参考下。
收藏 0 赞 0 分享

SQLServer 数据库开发顶级技巧

无论你的专业水平如何,从其他IT专家那里学习新的技巧与最佳实践常常都是有益的。本文包含了我遇到过的SQL Server开发的高级技巧。希望其中的一些技巧能够对您的数据库开发及管理工作有所帮助。
收藏 0 赞 0 分享

远程连接SQLSERVER 2000服务器方法

需求如下:需要远程连接外地的SQL Server 2000服务器。
收藏 0 赞 0 分享

SQLserver2000 企业版 出现"进程51发生了严重的异常"错误的处理方法

SQL2000 企业版 出现“进程51发生了严重的异常”错误的解决方法,利用了微软官方的工具。
收藏 0 赞 0 分享

SQLServer 触发器 数据库进行数据备份

首先,你需要建立测试数据表,一个用于插入数据:test3,另外一个作为备份:test3_bak
收藏 0 赞 0 分享

SQLServer 数据库备份过程中经常遇到的九种情况

SQLServer 数据库备份过程中经常遇到各种问题,大家可以参照下面的问题,来分析下,快速的解决问题。
收藏 0 赞 0 分享

SQL 截取字符串应用代码

字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。
收藏 0 赞 0 分享

除MSSQL数据库text字段中恶意脚本的删方法

删除MSSQL数据库text字段的替换处理示例--全表替换,看到有人提问,所以整理了一个好久以前的处理方法,以供大家参考
收藏 0 赞 0 分享

sql 普通行列转换

说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。
收藏 0 赞 0 分享
查看更多