当前位置:首页 » 编程语言 » sql的层次汇总
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql的层次汇总

发布时间: 2023-06-08 19:23:51

‘壹’ 《数据库原理》知识点之sql概述

3.1.1 SQL发展历程

考核要求:达到“识记”

层次知识点:SQL的发展历程

SQL:结构式查询语闭颤言,虽然名为查询语言,实际上具有定义、查询、更新和控制等多种功能。

3.1.2 SQL数据慧态核库的体系结构

考核要求:达到“领会”

层次知识点:三级结构的理解

SQL数据库的体系结构也是三级结构,但术语与传统关系模型术语不同,在SQL中,关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称“行”,属性称“列”。

SQL数据库体系的结构要点如下:

(1)一个SQL数据库是表的汇集。

(2)一个SQL表由行集构成,行是列的序列,每列对应一个数据项。

(3)表或者是基本表,或者是视图。基本表是实际存储在数据库中的表,视图由是由若干基本表或其他视图构成的表的定义。

(4)一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。存储文件与物理文件对应。

(5)用户可以用SQL语句对表进行操作,包括视图和基本表。

(6)SQL的用户可以是应用程序,也可以是终端用户。

3.1.3 SQL的组成

考核要求:达到“识记”

层次知识点:四个组成部分

SQL由四部分组成:

(1)数据定义:SQL DDL.定义SQL模式,基本表、视图和索引。

(2)数据操纵:SQL DML.包括数据查询和数据更新(增、删、改)。

(3)数据控制:包括对基本表和视图的授权、完整性规则的描述,事务控制等前掘。

(4)嵌入式SQL的使用规定。

‘贰’ SQL 根据分级码实现分级汇总

按分类级别的话,用group by进行分组,如果汇总的话,用sum求和,用count计数。
sql:select count(1),sum(sorce) from tablename group by class_No;
解释:以上是假设等级字段为class_No,之后求出每个等级的总条数和对应的“sorce”和。

‘叁’ SQL92的SQL92标准有4个层次

入门级(Entry level)。
这是大多数开发商符合的级别。这一级只是对前一个标准SQL89稍做修改。所有数据库开发商都不会有更高的级别,实际上,美国国家标准和技术协会NIST(National Institute of Standards and Technology,这是一家专门检验SQL合规性的机构)除了验证入门级外,甚至不做其他的验证。Oracle 7.0于1993年通过了NIST的SQL92入门级合规性验证,那时我也是小组中的一个成员。如果一个数据库符合入门级,它的特性集则是Oracle 7.0的一个功能子集。
过渡级
这一级在特性集方面大致介于入门级和中间级之间。

中间级
这一级增加了许多特性,包括(以下所列并不完整):
动态SQL
级联DELETE以保证引用完整性
DATE和TIME数据类型

变长字符串
CASE表达式
数据类型之间的CAST函数
完备级
增加了以下特性(同样,这个列表也不完整):
连接管理
BIT串数据类型
可延迟的完整性约束
FROM子句中的导出表
CHECK子句中的子查询
临时表
入门级标准不包括诸如外联结(outer join)、新的内联结(inner join)语法等特性。过渡级则指定了外联结语法和内联结语法。中间级增加了更多的特性,当然,完备级就是SQL92全部。有关SQL92的大多数书都没有区别这些级别,这就会带来混淆。这些书只是说明了一个完整实现SQL92的理论数据库会是什么样子。所以无论你拿起哪一本书,都无法将书中所学直接应用到任何SQL92数据库上。关键是,SQL92最多只达到入门级,如果你使用了中间级或更高级里的特性,就存在无法“移植”应用的风险。

‘肆’ sql 按分类级别汇总

很明显 A,B,C,D都是两位字符串递增

--一级:
selecta.*,b.分类名称from商品表a,分类表bwherecharIndex(b.分类编码,a.分类编码,1)=1
andb.分类等级=1
--二级:
selecta.*,b.分类名称from商品表a,分类表bwherecharIndex(b.分类编码,a.分类编码,1)=1
andb.分类等级=2
--三级、四级只需改等级=3,4即可

‘伍’ 就SQL如何将不同行的数据分类汇总到列

将不同行的数据分类汇总到列语句如下:

1)insert into table1 select * from table2

2) select into table 1 select *from table2

这两种写法有什么区别呐,首先insert into这种写法必须有table1列,select则是在access中必须不能存在table1,否则在ado接口中会出现报错的现象。

进行数据库的操作,这里使用的是ado+access进行的数据库的操作,目前来看,ado这种方式还算是比较简单。

‘陆’ SQL条件分类汇总

只会点SQL 语句,写下来看看!代码如下:
1:
select 用户号,sum(收入) as 家庭收入,社区名 from shequbiao
group by 用户号,社区名
2:
先创建一个带参数的存储过程:
create procere 存储过程名
@id char(4)

as

update shequbiao set 社区名=(select 社区名 from shequbiao where 用户类型='户主'and 用户号=@id )
where 用户号=@id

然后执行:
exec 存储过程名 参数

3:
select 用户号 , sum(收入) as 家庭总收入,count(*)as 家庭总人数 ,用户名=(select 用户名 from shequbiao aa where 用户类型='户主'and aa.用户号=bb.用户号)
from shequbiao bb
group by 用户号
order by sum(收入) desc

‘柒’ SQL查询结果分类汇总

SELECT A.*, COUNT(A.货号) AS 货号汇总, (A.规格汇总/ COUNT(A.货号)) AS 比例 FROM
(
select GoodsNO as 货号,GoodsName as 品名,SpecName as 规格,SUM(SellCount) as 规格汇总 from V_SSTTradeGoodsList where DateDiff(dd,Tradetime,getdate())<=30
GROUP BY GoodsNO,GoodsName,SpecName
)A