Transact-SQL基础教程:SQL Server 2008中的日期数据操作

需积分: 0 0 下载量 14 浏览量 更新于2024-08-15 收藏 1.93MB PPT 举报
"SQL Server 2008基础教程——第5章 使用日期数据" 本章主要探讨了在SQL Server 2008中如何利用Transact-SQL(T-SQL)语言来处理日期数据,同时介绍了T-SQL的基础知识及其在数据库管理中的应用。T-SQL是微软对国际标准化组织(ISO)制定的SQL标准的实现,适用于在SQL Server环境中进行各种数据库操作。 首先,章节概述提到,T-SQL语言使得用户能够便捷地执行数据库对象的操作、查询业务数据等任务。它涵盖了数据定义、操纵、控制以及事务管理等多个方面,提供了一整套功能强大的工具。 本章要点主要包括以下几个部分: 1. T-SQL与SQL的关系:T-SQL是SQL的一个扩展,符合ISO标准,专为SQL Server设计。 2. T-SQL的特点和执行方式:T-SQL提供了丰富的语法和功能,支持批处理、动态SQL等特性。 3. 数据定义语言(DDL):用于创建、修改和删除数据库结构,如表、视图、索引等。 4. 数据操纵语言(DML):涉及数据的插入、更新、删除等操作。 5. 数据控制语言(DCL):用于权限管理和访问控制,如GRANT、REVOKE等命令。 6. 事务管理语言:处理数据库事务,确保数据一致性。 7. 附加语言元素:包括流程控制语句(如IF...ELSE, WHILE)、异常处理等。 接下来,章节详细讲解了各个部分的内容: 5.1 概述:回顾了关系模型的发展,由埃德加·考特提出的理论为SQL的诞生奠定了基础。1986年的X3.135-1986标准标志着SQL成为正式的国家标准,并在1987年得到ISO认可。 后续章节可能涉及: 5.2 T-SQL的执行方式:介绍如何在SQL Server中执行T-SQL语句,包括交互式和批处理模式。 5.3 数据定义语言(DDL):详细讲解CREATE、ALTER和DROP等命令的使用。 5.4 数据操纵语言(DML):阐述INSERT、UPDATE、DELETE等操作的具体语法和应用场景。 5.5 数据控制语言(DCL):介绍如何控制用户对数据库的访问权限。 5.6 事务管理语言:讲解BEGIN TRANSACTION、COMMIT、ROLLBACK等语句的用法,确保数据一致性。 5.7 附加的语言元素:涵盖循环、条件判断、错误处理等复杂逻辑的实现。 5.8 数据类型:介绍SQL Server中各种日期和时间数据类型,如DATE、TIME、DATETIME等,以及如何进行操作。 5.9 内置函数:列出和解释了处理日期数据的内置函数,如GETDATE、DATEADD、DATEDIFF等。 5.10 本章小结:总结本章重点内容,为读者巩固所学知识。 通过学习这一章,读者将能够熟练掌握在SQL Server 2008中处理日期数据的方法,以及T-SQL的基本语法和操作技巧,为日常数据库管理和开发奠定坚实基础。

编译报错 CREATE OR REPLACE PROCEDURE get_dev_cs IS sql_tem VARCHAR2(4000); v_dt NUMBER; BEGIN ----om_subscriber_yyyymm sql_tem := 'truncate table ycyd.Subscriber_cs'; EXECUTE IMMEDIATE sql_tem; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.Subscriber_cs SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num FROM jour1.om_subscriber_' || v_dt.db || ' a WHERE a.action = 0 AND a.is_usim = 1'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; ----om_order_yyyymm sql_tem := 'truncate table ycyd.order_cs'; EXECUTE IMMEDIATE sql_tem; COMMIT; FOR v_dt IN (SELECT to_number(substr(table_name, '15')) db FROM sys.all_tables a WHERE a.owner = upper('jour1') AND a.table_name LIKE upper('om_subscriber_202___') AND substr(table_name, '15') > 202205) LOOP -- 循环往b里添加数据 sql_tem := ' INSERT INTO ycyd.order_cs SELECT order_id, dev_id FROM JOUR1.om_order_' || v_dt.db || ' b'; -- 执行sql EXECUTE IMMEDIATE sql_tem; END LOOP; COMMIT; ---dev sql_tem := 'truncate table ycyd.yd_order_dev_3056'; EXECUTE IMMEDIATE sql_tem; -- 添加数据 sql_tem := ' INSERT INTO ycyd.yd_order_dev_3056 SELECT a.order_id, a.done_date, a.cust_id, a.subscriber_ins_id, a.access_num, c.dev_id, c.dev_name, d.code, c.dev_busi_code, c.corp_org, c.company_name, c.department_code, c.department_name, c.remarks FROM ycyd.Subscriber_cs a LEFT JOIN ycyd.order_cs b ON a.order_id = b.order_id LEFT JOIN params1.sec_developer c ON b.dev_id = c.dev_id LEFT JOIN (SELECT DISTINCT oo.code,s.bill_id FROM params1.sec_operator oo, params1.sec_staff s WHERE s.staff_id = oo.staff_id AND oo.state = 1 AND oo.staff_id NOT in ('123402933','123395474','123404209')) d ON c.dev_phone = d.bill_id WHERE c.corp_org = 3056'; -- 执行sql EXECUTE IMMEDIATE sql_tem; COMMIT; END get_dev_cs;

2023-07-14 上传