SQL技术内幕三

Select

分析一个查询实例

Select empid,year(orderdate) as orderYear,count(*) as orderCount

From dbo.orderInfo

where custid=71

group by empid,Year(orderdate)

having count(*) >1

order by empid

以上语句在sql server内的执行顺序是 from--where--group by--having --select--order by

1.From

dbo为数据的架构,最好能显示的表明,因为如果不写数据库仍旧会自动解析,会额外有一些开支,写完能明确的表示用的哪个架构的哪个对象。

2.Where

指定一个谓词或逻辑表达式

注意sql 是三值逻辑,因此true跟非false并不是完全一样的,还有一种处于unknown的状态。

3.Group by

分组后会影响后面的having select等,以后的操作均以组为对象

因为聚合函数只为每个组返回一个值,所以一个元素不再group by中出现时,那么它只能作为聚合函数的输入如count(price),而不能作为输出

聚合函数都会忽略null但是count不会。

4.having

5.select 子句

在本例子中有两个函数year重复调用,但是sql内部会识别重复的函数,只会去调用一次

select 查询不会保证返回的数据为一个集合,不嫩保证唯一性,这个时候可以用distinct

使用星号*的几个坏处,a。只能按照表的默认列顺序返回,如果在客户端按照列索引取值,表修改时会造成问题。b. 内部需要解析列名,造成开销。

列名计算是不能使用别名,可以使用重复函数调用的方式。

6.order by

7.Top

可以select top(1) percent 选取前百分之一

8.Over子句,分组但能返回所有值

Select orderid,custid,val,sum(val) over() as totalvalue,sum(val) ove(partitionby custid) as custtotalvalue

from sales.ordervalues

9.row_number()  rank  dense_rank

10.谓词

In like between

11. case

时间: 2024-12-07 17:47:39

SQL技术内幕三的相关文章

SQL技术内幕一

范式:关系模型的规范化规则. Codd提出的三个数据库范式: 1. 第一范式 第一范式要求表中的每一行都是必须是唯一的.因为关系型数据库是基于集合论的,而集合的定义中,要求每一个元素都是唯一的(在关系数据库中可以用键来区别).因此所有的关系数据库表必然是满足第一范式的. 2.第二范式 第二范式要求必须满足第一范式,其次要求非键值属性和候选键值属性之间必须满足一定的条件.即所有非键值属性都完全依赖与整个候选键值所有属性. 如何理解名词参照http://www.cnblogs.com/lumnm/a

SQL技术内幕四

数据类型: sql server只接受两种数据类型 1. 普通字符 varchar char 用一个字节表示一个字符,表示英文 2.unicode   nchar nvarchar 用两个字节表示一个字符 char nchar都是固定长度的,不论其中字符的实际长度,适用于写入为主的系统,读取效率低 varchar nvarchar 是可变长度,读取速度会快但是更新会慢

SQL技术内幕二DDL

创建数据库: if db_id('DBTest') is nullcreate database DBTest 创建表 use eb_fy_data_test---use 切换所在数据库上下文 if object_id('UserTest','u') is not null drop TABLE UserTest CREATE TABLE UserTest {} 数据完整性 1.主键约束 alter table UserTest add constraint PK_UserTest Primar

SQL Server技术内幕笔记合集

SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnblogs.com/lyhabc/articles/3914213.html Microsoft SQL Server 2005技术内幕:T-SQL查询笔记http://www.cnblogs.com/lyhabc/articles/3912608.html Microsoft SQL Server 2

笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-10 可编程对象

关于批处理 下列语句不能在同一批处理中和其他语句同时编译:CREATE DEFAULT.CREATE FUNCTION.CREATE PROCEDURE.CREATE RULE.CREATE SCHEMA.CREATE TRIGGER及CREATE VIEW.例如,以下代码包含一个IF语句,之后在同一批处理中跟着一个CREATE VIEW语句,SQL Server将会报错: IF OBJECT_ID('Sales.MyView', 'V') IS NOT NULL DROP VIEW Sales

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视(Pivoting)就是把数据从行的状态旋转为列的状态的处理.其处理步骤为: 相信很多人在笔试或面试的时候被问到如何通过SQL实现行转列或列转行的问题,可能很多人当时懵逼了,没关系,下面我们通过例子来理解. (1)准备数据 --1.0准备数据 USE tempdb; IF OBJECT_ID('dbo

《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库的物理布局 数据库在物理上由数据文件和事务日志文件组成,每个数据库必须至少有一个数据文件和一个日志文件. (1)数据文件用于保存数据库对象数据.数据库必须至少有一个主文件组(Primary),而用户定义的文件组则是可选的.Primary文件组包括 主数据文件(.mdf),以及数据库的系统目录(cat

Mysql技术内幕——表&索引算法和锁

表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键.首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键.不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid(). 4.2.innodb逻辑存储结构 innodb的逻辑存储单元由大到小分别是

深入探索spring技术内幕(八): Spring +JDBC组合开发和事务控制

一. 配置数据源 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="