时间:2022-11-08 22:30:01 | 来源:信息时代
时间:2022-11-08 22:30:01 来源:信息时代
SQL数据语句 : 可能对SQL数据进行读写操作的语句。SQL数据是由SQL模式描述的数据,即SQL环境中在SQL实现的控制之下的数据。SQL数据语句又可进一步划分,其中可能对SQL数据产生持久影响的那些语句,称为SQL数据变化语句,其功能相当于一般概念中的数据操纵功能;除SQL数据变化语句之外的其他语句,SQL标准中没有规定其具体名称,其功能包括数据查询、游标的声明、打开、获取、关闭等操作。
SQL数据变化语句在早期的SQL标准中包括插入语句、更新语句和删除语句。在SQL2003中又新增了归并语句。
插入语句用于向表中插入数据,根据插入数据源的不同,可以分为三种: 插入一个或多个指定元组值; 插入一个子查询的返回结果; 插入该表列的缺省值。如:
INSERT INTO STUDENT VALUES
('20050201','陈东','男','计算机',18);
该语句将一个指定元组(学号:20050201;姓名:陈东; 性别: 男;所在系: 计算机,年龄: 18岁)插入到STUDENT表中。
更新语句用于更新表中的行。可以通过游标定位来更新某一指定行,也可通过搜索条件来更新所有满足条件的行。由于两种方式的语法差别较大,在SQL标准中更新语句又被分为“更新语句:定位”和“更新语句: 搜索”两个语句来说明。如:
UPDATE STUDENT SET SAGE=20
WHERE SNO='20050201';
该语句将表STUDENT中学号为20050201的学生的年龄改为20岁。
删除语句用于删除表中的行。同样也可以通过游标定位来删除某一指定行,或者通过搜索条件来删除所有满足条件的行。在SQL标准中它们被分为“删除语句: 定位”和“删除语句: 搜索”两个语句。如:
DELETE FROM STUDENT
WHERE SNO='20050201';
该语句删除表STUDENT中学号为20050201的学生记录。
归并语句可根据一张表或子查询与另一张表的连接条件对后者进行查询,连接条件匹配的进行更新操作,无法匹配的执行插入操作。例如: 假设BONUSES表中存放的是有销售业绩的员工编号及其分红。现在管理人员决定让所有员工都得到分红,方案为: 没有销售业绩的员工得到工资的1%的分红,而那些有销售业绩的员工得到的分红为原有分红加上工资的1%。可以用下列MERGE语句来完成上述修改:
MERGE INTO BONUSES D
USING(
SELECT EMPLOYEE_ID,SALARY,
DEPARTMENT ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID=80)S
ON(D.EMPLOYEE_ID=S. EMPLOYEE_ID)
WHEN MATCHED THEN
UPDATE SET
D.BONUS=D.BONUS+S.SALARY*0.01
WHEN NOT MATCHED THEN
INSERT VALUES
(S.EMPLOYEE_ID,S.SALARY*0.01);
数据变化语句可能引起目标表上的触发器的执行。触发器是SQL99中为支持主动数据库而新增的一种模式对象,它指定目标表上发生指定操作时应执行的相应动作。这个操作可以是插入、删除或修改操作,相应的动作则是一条或多条SQL过程语句。当触发事件发生(例如向表中插入数据)时,目标表上如有相应的触发器,就会在指定的时机被触发,执行相应的触发动作。触发器的执行被看作是引起它执行的语句的一部分,如果语句执行失败,则不仅这条语句对数据库产生的影响被撤销,由该语句引发的所有触发器对数据库产生的影响也被撤销。
数据查询是数据库系统的核心操作。SQL标准提供多种方式下的数据查询能力,既可作为可独立使用的单行选择语句,也可与游标绑定使用,或者作为子查询嵌套在其他语句中。查询的基本语法形式为:
SELECT〈选择清单〉
FROM〈表引用清单〉
[WHERE〈搜索条件〉]
[GROUP BY〈分组元素清单〉]
[HAVING〈条件表达式〉]
上述语法的含义为,根据WHERE子句的〈搜索条件〉,从FROM子句的〈表引用清单〉指定的基表或视图中找出满足条件的元组,再按SELECT子句中的〈选择清单〉选出元组中的属性值形成结果表。如果指定了GROUP子句,则将结果按〈分组元素清单〉中指定的属性列的值进行分组,属性列值相等的值为一组。如果指定了HAVING子句,则只有满足其〈条件表达式〉的组才被返回。如:
SELECT SDEPT
FROM STUDENT
WHERE SSEX='男'
GROUP BY SDEPT
HAVING COUNT(*)>100;
该语句查询男生人数超过100人的系。
与数据查询相关的SQL数据语句还包括一系列游标操作语句。游标是对SQL数据进行操作的一种机制,通过它可以每次对表的一行进行操作。游标的提出是为了解决SQL语言与宿主语言之间的阻抗不匹配问题,当需要对包括多行的表进行处理,而宿主程序只能一次处理一行数据时,就必须使用游标来获取或更改SQL数据。SQL标准中的游标又分为静态游标和动态游标,与之相关的内容详见嵌入式SQL和动态SQL。