SQL与过程化程序设计语言
SQL与过程化程序设计语言
SQL是一种典型的非过程化程序设计语言,这种语言的特点是:
只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这
些操作是如何
执行的,则未被指定。非过程化程序设计语言的优点
在于它的简单易学,因此已经成为关系数据库访问和操纵数据的标
准语言。
与之相对应的是过程化程序设计语言,我们平常熟悉的各种高
级程序设计语言都属于这一范畴。这种语言的特点是:一条语句的
执行是与其前后的
语句和控制结构(如条件语句、循环语句等)相
关的。与SQL相比,这些语言显得比较复杂,但优点是使用灵活,
数据操纵能力非常强大。
为了弥补SQL在过程化控制方面的不足,许多商用数据库系统,
都对标准SQL语言进行了扩充,增加了过程化控制部分,即所谓的
PL/SQL。
当然不同的数据库系统所做的扩充程度是很不同的。
这里仅以SQL99/PSM为例(SQL99为对象关系型数据库的最新语
言标
准),说明一个完整的PL/SQL应该具有哪些语言成分:
BEGIN...END语句 —— 复合语句
DECLARE语句 —— 变量声明语句(当然也包括游标、临时表、
异常条件等的声明)
CALL语句 —— 函数调用语句
RETURN语句 —— 函数返回语句
SET语句 —— 赋值语句
IF语句 —— 条件语句
CASE语句 —— 条件分支语句
LOOP语句 —— 循环语句1(相当于C中的WHILE(1))
REPEAT语句
—— 循环语句2(相当于C中的DO...WHILE语句)
WHILE语句 —— 循环语句3
ITERATE语句 ——
跳转语句1(相当于C中的CONTINUE语句)
LEAVE语句 —— 跳转语句2(相当于C中的BREAK语句)
FOR语句 —— 迭代语句(相当于BAT中的FOR),即对由一游
标表示的数据集中的每一元素执行一组给定的操作。
相关文档:
Sql Server 中一个非常强大的日期格式化函数
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GE ......
这几天负责一个家教门户网站的开发,基于cakephp框架。在培训机构表(schools)中存在一个字段subject用来存储另一个数据表
(subjects)中记录的id值,且存储形式为:'1,2,3,4,5'。但是在应用高级搜索过滤时页面select选项option的传值为
subjects的id值,需要判断查询表schools中subject字段存在此id,即查询显示此记录 ......
一.简单SQL查询:
1):统计每个部门员工的数目
select dept,count(*) from employee group by dept;
2):统计每个部门员工的数目大于一个的记录
select dept,count(*) from employee group by dept having count(*)>1;
3):统计工资超过1200的员工所在部门的名称
select e.first_name,salary,d.name
from s_emp ......
在SQL Server的性能调优中,有一个不可比拟的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择。
在SQL Server的性能调优中,有一个不可比拟的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择。记得在给一家 ......
RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,
其中PARTITION BY 为分组字段,ORDER BY 指定排序字段
over不能单独使用,要和分析函数:rank(),dense_rank(),row_n ......