SQL基础语法
select、update、delete、insert into
各SQL命令经常与其他SQL关键字组成条件,从而形成一组具有针性的有效的SQL语句。如select经常与where联用,起到限制目标范围的作用
如果数据对象的数据类型为非数值的,则必须加上单引号‘。如果给定的值与对应字段的数据类型不一致,在执行时SQL会报错
在SQL命令中,|、‘等具体有特殊用途,一般不可用于具体的数据中。否则会造成SQL语句执行出错
基础语法——Select
作用:查询数据
是被用的最多最频繁也是最复杂的一个命令。
可以实现根据一定的条件查询数据
可以实现将几个相同数据类型查询结果形成一个结果集
可以实现将查询的结果产生一张数据表
可以实现从另一个数据库中查询数据等等
基础语法——Select
查询指字段
Select 字段1,字段2,字段3….. From 表名 [where 条件]
查询所有字段– *表示该表中的所有字段
Select * From 表名 [where 条件]
如查询科目表:
Select Fdc,Faccountid from t_account where fnumber=‘1001’
结构查询结果形成一个新的表,语法为:
Select 字段 into 新表名 from 表名 [where 条件]
基础语法——Select
结构查询结果形成一个新的表,并且在新表中增加一个种子列字段
Select identity(字段类型,起始值,递增值) 字段名,字段 into 新表名 from 表名 [where 条件]
如:产生temp_002 表中的数据
Select identity(int,1,1) Fid, Faccountid,Fnumber,Fname,Fdc into temp_001 from t_account
Select * into #t_balance_temp from t_balance—这也是备份个数据的常用方法
在当前数据库中从另一个数据库中查询数据,设另外一个数据库实体为XXX
Select * from xxx..t_account–需要注意的是,XXX后是两个小数点而不是一个
Select * from AIS20040422090158..t_item
多张个关联起来查询特定的数据
如:查询出当前期间的卡片的最后一次变动内码、原值、卡片内码、当期折旧
declare @Fyear int ,@Fperiod int–定义类型为整数型的变量值
select @Fyear=fvalue from t_systemprofile where Fcategory='fa' and fkey='currentyear' –将查询的变量赋给@Fyear
select @Fperiod=fvalue from t_systemprofile where Fcategory='fa' and fkey='currentperiod' –将查询的变量赋给@Fperiod
select c.falterid,b.FOrgVal,a.fassetid,a.fdepr from t_fabalance a join t_fabalcard b on a.fbalid=b.fbalid left join t_facard c on c.fassetnumber=b.fassetnumber left join t_faalter d on d.fassetid=a.fassetid and d.falterid=c.falterid where a.fyear=@Fyear and a.fperiod=@Fperiod and c.falterid=(select max(falterid) from t_faalter where fassetid=a.fassetid)
注意:当多个表关联时为方便操作一般都会用到别名
结合函数进行分组计算
select Fyear,fperiod,sum(fdepr) Fdepr from t_fabalance group by Fyear,fperiod–按Fyear,fperiod字段进行分组计算
order by Fyear,fperiod–按Fyear,fperiod字段排序
order by 要放在语句的最后,它的作用是按指定字段进行排序
group by :是按指定字段进行分组求后,分组的字段必须包括select后的字段名
统计聚合数据
可以继续统计数据为每个分组显示一个分类统计。SQL的ROLLUP操作符可以为每个分组显示一个额外的分类统计。这个分类统计是使用聚合函数计算每个分组中的所有记录得到的结果。下面的语句为每个分组计算OrderTotal:
SELECT Customer, OrderNumber, Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP BY Customer,OrderNumber WITH ROLLUP
统计每个列
CUBE:返回每个分组中重复值的个数,是最综合的统计,统计每个可能的列组合
结果和ROLLUP相同,但是对每位客户的每一列CUBE包含一个额外的记录,它不仅完成聚合和ROLLUP的功能,还可以计算定义分组的其它列
下面的语句显示每个分组的统计和额外每位客户的统计:
SELECT Customer, OrderNumber, Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP BY Customer, OrderNumber WITH CUBE
联合:通过Union或union all将两个或更多查询的结果组合为单个结果集
union是将相同结果联合起来,去掉重复记录
union all则是将所有记录联合起来,包括重复值
以上内容,来自于金蝶资料库