请问DB2如何查询表、存储过程等的DDL脚本

请问DB2如何查询表、存储过程等的DDL脚本,第1张

难道只有在命令行用db2look?目前只找到查询存储过程的SQL,还没找到获取表、视图DDL脚本的方法。select routinename,text from sysibmsysroutines;

DML(data manipulation language)数据 *** 纵语言:

就是我们最经常用到的 SELECT、UPDATE、INSERT、DELETE。 主要用来对数据库的数据进行一些 *** 作。

比如:

SELECT 列名称 FROM 表名称

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

INSERT INTO table_name (列1, 列2,) VALUES (值1, 值2,)

DELETE FROM 表名称 WHERE 列名称 = 值

DDL(data definition language)数据库定义语言:

其实就是我们在创建表的时候用到的一些sql,比如说:CREATE、ALTER、DROP等。DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。

比如:

CREATE TABLE 表名称

(

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

)ALTER TABLE table_nameALTER COLUMN column_name datatypeDROP TABLE 表名称DROP DATABASE 数据库名称

扩展资料:

DCL(Data Control Language)——数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库 *** 纵事务发生的时间及效果,对数据库实行监视等。

数据库控制功能,用来设置或更改数据库用户或角色权限的语句,包括grant,deny,revoke等语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL 详细解释。

(1)COMMIT - save work done 提交

(2)SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点

(3)ROLLBACK - restore database to original since the last COMMIT 回滚

(4)SET TRANSACTION - Change transaction options like what rollback segment to use 设置当前事务的特性,它对后面的事务没有影响

DDL运用场景(DDL Scene)

(一) 首先我们来看一个简单的例子:创建数据库DDL_DB和一个名为DatabaseLog的表,现在创建一个DDL触发器:禁止用户修改和删除表,并进行提醒。执行下面的SQL脚本进行测试。

--Script1:

--创建测试数据库

USE MASTER

GO

CREATE DATABASE DDL_DB

--创建DDL触发器记录表

USE DDL_DB

GO

CREATE TABLE [dbo][DatabaseLog](

   [DatabaseLogID] [int] IDENTITY(1,1) NOT NULL,

   [PostTime] [datetime] NOT NULL,

   [ServerName] [sysname] NOT NULL,

   [LoginName] [sysname] NOT NULL,

   [DatabaseUser] [sysname] NOT NULL,

   [DatabaseName] [sysname] NOT NULL,

   [Schema] [sysname] NULL,

   [Object] [sysname] NULL,

   [TSQL] [nvarchar](max) NOT NULL,

   [Event] [sysname] NOT NULL,

   [XmlEvent] [xml] NOT NULL,

CONSTRAINT [PK_DatabaseLog_DatabaseLogID] PRIMARY KEY NONCLUSTERED

(

   [DatabaseLogID] ASC

) ON [PRIMARY]

) ON [PRIMARY]

--Script2:

--创建DDL触发器:禁止修改或者删除数据表

CREATE TRIGGER DDL_TableTrigger

ON DATABASE

FOR DROP_TABLE, ALTER_TABLE

AS

  PRINT '对不起,您不能对数据表进行 *** 作,请联系DBA'

  ROLLBACK ;

--测试删除表

USE DDL_DB

GO

DROP TABLE [DatabaseLog]

(Figure1:创建数据库级别的DDL)

(Figure2:返回的提示信息

(Figure3:SSMS返回的提示信息)

创建数据库级别的DDL之后会出现在数据库触发器列表中,如Figure1;当执行删除表的Drop等DDL命令的时候,就会出现Figure2的提示信息;如果是在SSMS中删除表则会出现Figure3的提示信息。

(二) 在上面的基础上再进行扩展,创建一个DDL触发器:禁止用户删除数据库,并进行提醒。

--Script3:

--禁止SQL Server服务器里删除数据库

CREATE TRIGGER DDL_DataBaseTrigger

ON ALL SERVER

FOR DROP_DATABASE

AS

   PRINT '对不起,您不能删除数据库,请联系DBA'

   ROLLBACK;

--测试删除数据库

USE MASTER

GO

DROP DATABASE [DDL_DB]

(Figure4:创建服务器级别的DDL)

(Figure5:返回的提示信息)

(Figure6:SSMS返回的提示信息)

创建服务器级别的DDL之后会出现在服务器对象-触发器的列表中,如Figure4;当执行删除数据库的Drop等DDL命令的时候,就会出现Figure5的提示信息;如果是在SSMS中删除数据库则会出现Figure6的提示信息。

(三) 很多时候在程序开发阶段是不会禁用对数据库的修改的,这些时候我们更希望是记录数据库的修改信息,方便对信息进行跟踪检查。使用 EVENTDATA 函数,可以捕获有关激发 DDL 触发器的事件的信息,此函数返回 xml 值。

前面已经创建了数据表DatabaseLog,创建下面的DDL_DatabaseLog触发器,每当数据库发生DDL事件,DDL触发器就会把相关的DDL信息插入到DatabaseLog表,信息包括 *** 作的时间, *** 作人, *** 作的SQL等。

执行Script5测试脚本,返回Figure7的信息,查询DatabaseLog表,返回的记录有2条,一条是创建表信息,一条是删除表信息,如Figure8、Figure9所示。

此题答案为DDL。

数据库模式定义语言DDL(Data

Definition

Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、 *** 作方法定义等。

DML

=

Data

Manipulation

Language,数据 *** 纵语言,命令使用户能够查询数据库以及 *** 作已有数据库中的数据的计算机语言。具体是指是UPDATE更新、INSERT插入、DELETE删除。

DML(Data

Manipulation

Language)数据 *** 纵语言,SQL的分类之一,此外还有DDL(Data

Definition

Language)数据定义语言和DCL(Data

Control

Language)数据控制语言。DML包括:INSERT、UPDATE、DELETE。注意,select语句属于DQL(Data

Query

Language)。1

select  from all_jobs;

select  from user_jobs;

select  from dba_jobs;

看你的权限了,DBA就能查到所有jobs的信息

以上就是关于请问DB2如何查询表、存储过程等的DDL脚本全部的内容,包括:请问DB2如何查询表、存储过程等的DDL脚本、DDL与DML问题、如何获取 sqlserver table ddl等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9852140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存