数据库知识点总结(未完待续)
来源:互联网 发布:梦幻西游手游网页版mac 编辑:程序博客网 时间:2024/06/05 06:52
本文内容可以滞后,最新文章请访问:博客
1、SQL中的关键字讲解
1.1 distinct用法
作用于单列
select distinct name from A
作用于多列
select distinct name, id from A//实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。
COUNT统计
select count(distinct name) from A; --表中name去重后的数目, SQL Server支持,而Access不支持count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。select count(distinct name, id) from A;若想使用,请使用嵌套查询,如下:select count(*) from (select distinct xing, name from B) AS M;
distinct必须放在开头
select id, distinct name from A; --会提示错误,因为distinct必须放在开头
2、子查询
2.1子查询的定义
定义:子查询本质上是嵌套进其他SELECT,UPDATE,INSERT,DELETE语句的一个被限制的SELECT语句,在子查询中,只有下面几个子句可以使用
- SELECT子句(必须)
- FROM子句(必选)
- WHERE子句(可选)
- GROUP BY(可选)
- HAVING(可选)
- ORDER BY(只有在TOP关键字被使用时才可用)
子查询也可以嵌套在其他子查询中,这个嵌套最多可达32层。子查询也叫内部查询(Inner query)或者内部选择(Inner Select),而包含子查询的查询语句也叫做外部查询
2.2子查询的谓词
in 谓词(predicate)expr [NOT] IN ( subquery )
The Quantified Comparison Predicate (量化比较谓词) expr q SOME|ANY|ALL( subquery )
The EXISTS Predicate [NOT] EXISTS ( subquery )
The BETWEEN Predicate expr [NOT] BETWEEN expr1 AND expr2
The IS NULL Predicate column IS [NOT] NULL
The LIKE Predicate column [NOT] LIKE val1 [ ESCAPE val2 ]
§underscore ( _ ): any single character
§percent ( % ): any sequence of zero or morecharacters
2.3子查询的执行分析
原文链接:点击
子查询的简单描述 :
通常来讲,子查询按照子查询所返回数据的类型,可以分为三种,分别为:
- 返回一张数据表(Table)
- 返回一列值(Column)
- 返回单个值(Scalar)
2.3.1 子查询做数据源的使用
当子查询在外部查询的FROM子句之后使用时,子查询被当作一个数据源使用,即使这时子查询只返回一个单一值(Scalar)或是一列值(Column),在这里依然可以看作一个特殊的数据源,即一个二维数据表(Table).作为数据源使用的子查询很像一个View(视图),只是这个子查询只是临时存在,并不包含在数据库中。
SELECT P.ProductID, P.Name, P.ProductNumber, M.Name AS ProductModelNameFROM Production.Product AS P INNER JOIN(SELECT Name, ProductModelID FROM Production.ProductModel) AS M ON P.ProductModelID = M.ProductModelID
2.3.2 子查询作为选择条件的使用
作为选择条件的子查询也是子查询相对最复杂的应用.作为选择条件的子查询是那些只返回一列(Column)的子查询,如果作为选择条件使用,即使只返回单个值,也可以看作是只有一行的一列.select distinct cidfrom orderswhere aid IN (select aid --uncorrelated Subquery:(a05,a06)非相关的子查询,更快 from agents where city= ‘Duluth’ or city=‘Dallas’)
但是要强调的是,不要用IN和NOT IN关键字,这会引起很多潜在的问题,这篇文章对这个问题有着很好的阐述:http://wiki.lessthandot.com/index.php/Subquery_typo_with_using_in。这篇文章的观点是永远不要再用IN和NOT IN关键字,我的观点是存在即合理,我认为只有在IN里面是固定值的时候才可以用IN和NOT IN,比如: IN (25,33)
只有在上面这种情况下,使用IN和NOT IN关键字才是安全的,其他情况下,最好使用EXISTS,NOT EXISTS,JOIN关键字来进行替代. 除了IN之外,用于选择条件的关键字还有ANY和ALL,这两个关键字和其字面意思一样. 和”<”,”>”,”=”连接使用
在作为ANY和ALL关键字在子查询中使用时,所实现的效果如下
=ANY 和IN等价
<>ALL 和NOT IN等价
ANY 大于最小的(>MIN)
- 数据库知识点总结(未完待续)
- 关于数据库小知识点归纳(未完待续)
- 一些小知识点(五)未完待续。。。
- 【未完待续】内存数据库
- Ajax学习笔记总结(未完待续)
- DevExpress Ribbon 相关总结(未完待续)
- 蓝牙bug总结(未完待续)
- javascript特殊用法总结(未完待续...)
- 二叉树应用总结(未完待续)
- 设计模式总结(未完待续)
- 清北学堂总结(未完待续。。。。。。。)
- 《统计学习方法》学习总结(未完待续)
- 背包问题总结(未完待续)
- 深度压缩技术总结(未完待续.....)
- 线性回归学习总结(未完待续)
- DP总结..未完待续
- 笔试面试经常考察的知识点收集(未完待续)
- mysql数据库优化(未完....待续....)
- matlab画图函数汇总(三)
- js_expresion&operator
- DOS 命令大全
- 分治与递归之棋盘覆盖
- 电阻触摸屏驱动实例分析
- 数据库知识点总结(未完待续)
- 计算与推断思维 六、可视化
- html5 canvas 加载图片URL并转换成base64
- matlab 基本用法整理
- 启动rabbitmq,提示ERROR: node with name "rabbit" already running on "U57..."
- 动态进度条
- 各种降维方法在2维空间上的可视化
- Shell脚本常用
- 02-大话程序猿眼里的高并发架构