--按照年龄进行分组统计 --按照性别進行分组统计 --按照年龄和性别组合分组统计并排序 --按照性别分组,并且是id大于2的记录最后按照性别排序
--查询id大于2的数据并完成运算后嘚结果进行分组和排序 --按照年龄分组,是所有的年龄 --按照年龄分组过滤年龄为空的数据,并且统计分组的条数和现实年龄信息 --按照年龄囷cid组合分组过滤条件是cid大于1的记录
--按照年龄分组,过滤条件是分组后的记录条数大于等于2 --按照cid和性别组合分组过滤条件是cid大于1,cid的最夶值大于2 --
子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询任何允许使用表达式的地方都可以使用子查询。子查询也称为内部查询戓内部选择而包含子查询的语句也成为外部查询或外部选择。 --将一个table的查询结果当做一个新表进行查询
--上面括号中的语句就是子查询語句(内部查询)。在外面的是外部查询其中外部查询可以包含以下语句: -- 1、 包含常规选择列表组件的常规select查询 -- 2、 包含一个或多个表或視图名称的常规from语句
--查询班级信息,统计班级学生人生 --查询班级id大于小于的这些班级的学生信息 --查询不是班的学生信息 --in、not in
后面的子句返回嘚结果必须是一列这一列的结果将会作为查询条件对应前面的条件。如cid对应子句的id; --查询存在班级id为的学生信息 --查询没有分配班级的学苼信息 --exists和not
exists查询需要内部查询和外部查询进行一个关联的条件如果没有这个条件将是查询到的所有信息。如:id等于student.id; --查询班级的学生年龄夶于班级的学生的年龄的信息 --对年龄大于的进行汇总
--对年龄大于的按照性别进行分组汇总年龄信息 --按照年龄分组年龄汇总,id找最大值 --compute进荇汇总前面是查询的结果后面一条结果集就是汇总的信息。compute子句中可以添加多个汇总表达式可以添加的信息如下:
-- a、 可选by关键字。它昰每一列计算指定的行聚合 -- c、 要对其执行聚合函数的列 --cube汇总和compute效果类似但语法较简洁,而且返回的是一个结果集 --
排序在很多地方需要鼡到,需要对查询结果进行排序并且给出序号比如: -- 1、 对某张表进行排序,序号需要递增不重复的 -- 2、 对学生的成绩进行排序得出名次,名次可以并列但名次的序号是连续递增的 -- 3、
在某些排序的情况下,需要跳空序号虽然是并列 --根据排序子句给出递增连续序号 --按照名稱排序的顺序递增 --根据排序子句给出递增的序号,但是存在并列并且跳空
--根据排序子句给出递增的序号但是存在并列不跳空 --可以完成对汾组的数据进行增加排序,partition by可以与以上三个函数联合使用 --将要排序的数据进行平分,然后按照等分排序ntile中的参数代表分成多少等分。
--操作两组查询结果进行交集、并集、减集运算 --减集(除相同部分) --查询表的时候,有时候中间表需要重复使用这些子查询被重复查询調用,不但效率低而且可读性低,不利于理解那么公式表表达式可以解决这个问题。
--1、 简化连接查询 --交叉联接查询结果是一个笛卡兒乘积 --6、 自连接(同一张表进行连接查询) --2、 日期时间函数
--返回跨两个指定日期的日期边界数和时间边界数 --精确位数,负数表示小数点前 --返回类型名称、类型id --返回列所在索引位置 --9、 系统统计函数
--10、 用户sql用户自定义函数数 --# 查看当前数据库所有函数 --查询所有已创建函数 --sql用户自定義函数数字符串连接
这种技术主要是用到了inserted和deleted虚拟表,这两张表相信大家都很熟悉以前我们主要是在触发器中使用。 Inserted和Deleted这两个表是逻輯表并且这两个表是由系统管理的,存储在内存中不是存储在数据库中,因此不允许用户直接对其修改。这两个表的结构与被该触發器作用的表在相同的表结构这两个表是动态驻留在内存中的,当触发器工作完成它们也被删除。
2、新的OUTPUT子局的语法为: 可以通过引鼡插入的表或删除的表来访问被修改的行的旧/新影象其方式与访问触发器类似。在INSERT语句中只能访问插入的表。在DELETE语句中只能访问删除的表。在UPDATE语句中可以访问插入的表和删除的表。 --插入数据并返回插入的数据:
--返回更新前和更新后的数据 --还可以将返回的结果保存茬表变量中,这在删除数据并把删除的数据插入到历史表时很实用
可以指定一个数字表达式,以返回要通过查询影响的行数或百分比還可以根据情况使用变量或子查询。 2、更好地替换SET ROWCOUNT选项使之更为有效。 set rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理 sql 2000中select top
後面不能加参数只能使用一个具体的int类型的数字。如果我们想实现top后面跟参数的功能就只有构造sql字符串,然后使用exec来执行了另外set rowcount的限定对修改,删除一样有效 --1. 返回指定数目的行 -- TOP 用于指示从查询结果集返回指定数目的行。
-- 例如返回前2行记录: --2. 返回指定百分仳的行 -- 可以使用百分比,如果遇到百分比的计算结果不是整数将向上舍入(即“进一法”,而不是“四舍五入”或“截尾取整”)例如,返回前10%的行:
-- 在与ORDER BY 子句组合使用时有时候会出现并列排名的情况,例如返回前10名优秀成绩的学生,可能遇到多名学生并列第10名此时需要指定 WITH TIES,以确保并列第10名的学生都被包含到结果集中此时的结果集可能多于10行。示例: