DBsql-group

来源:互联网 发布:mysql join on关键词 编辑:程序博客网 时间:2024/06/10 16:34
Group by having :


Oracle sql语句顺序: 


a.            Select 显示字段或组函数 from 表名 


b.            [ Where 过滤条件]  (不能使用组函数 ,不能使用列别名) 


c.            [Group by 分组条件] (不能使用列别名,只可是字段名,不可是组函数) 


d.            [Having 分组的过滤条件] (可以使用组函数) 


e.            [ Order by 排序 ] (可以使用列别名,可以使用组函数) 


说明:其中的[ ]是可选项  


注意:group by分组不能用列的别名 


注意:只要写了group by子句,select后就只能用group by之后的字段或者是组的函数。Having子句可以过滤组函数结果或者分组的信息,并且写在group by子句后。 


使用group by子句时,必须满足下面的一些原则: 


l         在select子句的后面,只能有两种类型的表达式,一种是组函数,一种是出现在group by子句后面的列名。 


l         没有出现在group by子句后面的列名不能出现在select子句中非组函数表达式中,但是出现在group by子句后面的列名可以不出现在select子句中非组合函数表达式中。 


l         如果使用了where子句,那么所有参加分组计算的数据必须首先满足where子句指定的条件。 


l         在默认情况下,系统按照group by子句中指定的列升序排列,但是可以使用order by子句指定新的排列顺序。 


使用group by 常见的错误: 


l         如果在select语句中没有出现group by子句,那么不能在select子句中同时出现单个列名和组函数的混合现象。 


l         如果希望限制分组中的数据,那么可以使用having子句而不能使用where子句。即having中可以出现组函数而where不能出现组函数。 






注意1:在没有group by时,select后不能把普通字段和组函数同时使用 


注意2:where子句只能够过滤记录,放单行函数。Where后面跟随的条件是对所有数据的过滤的条件,在where子句中不能出现组函数。 


注意3:如果希望按照多个列分组,那么会在group by子句后面出现多个列名。这些列名称得顺序非常重要。因为不同的顺序有不同的结果。 






oracle varchar max 4000


long 限制过多 不推荐使用  2G  并非长数据类型而是


使用 clob blob  
clob  sqlserver 中为text 大长度的String ;
bolb  是存储位图的数据类型, 比如图片视频


MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G