Tag: ddl

如何生成一个Oracle模式的完整DDL(可编写脚本)?

任何人都可以告诉我如何可以在Oracle架构内为所有表,视图,索引,包,程序,函数,触发器,types,序列,同义词,授权等生成DDL? 理想情况下,我想复制行,但这不重要。 我想在某种计划的工作上做这个,而不是每次都手动完成,这样就排除了在SQL Developer中使用向导。 理想情况下,因为我将在几个有相互授权和同义词的模式上运行这​​个,所以我想有一种方法来在输出中进行查找/replace,以使模式名称与我的新模式名称匹配成为。 谢谢!

MySQL的术语“约束”与“外键”的区别?

我在这里查看MySQL文档,并试图理清FOREIGN KEY和CONSTRAINT之间的区别。 我以为FK 是一个约束,但是文档似乎像他们是独立的东西一样谈论他们。 创buildFK的语法是(部分)… [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, …) REFERENCES tbl_name (index_col_name,…) 所以“CONSTRAINT”子句是可选的。 你为什么要包括它或不包括它? 如果你离开它MySQL是否创build一个外键,但不是一个约束? 还是说它更像是一个“CONSTRAINT”只不过是你FK的一个名字,所以如果你不指定它,你会得到一个匿名的FK? 任何澄清将不胜感激。 谢谢, 阮经天

如何从sqlite(3.6.21)表中删除约束?

我有下面的表格: CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER CONSTRAINT parent_id REFERENCES parent(id), description TEXT); 我如何删除约束?

testing列存在,添加列和更新列

我正在尝试编写一个SQL Server数据库更新脚本。 我想testing表中是否存在列,如果不存在,则添加具有默认值的列,最后根据同一表中不同列的当前值更新该列。 我希望这个脚本可以多次运行,第一次更新表,并在随后的运行脚本应该被忽略。 我的脚本目前看起来如下所示: IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'PurchaseOrder' AND COLUMN_NAME = 'IsDownloadable') BEGIN ALTER TABLE [dbo].[PurchaseOrder] ADD [IsDownloadable] bit NOT NULL DEFAULT 0 UPDATE [dbo].[PurchaseOrder] SET [IsDownloadable] = 1 WHERE [Ref] IS NOT NULL END SQL Server返回错误“无效的列名”IsDownloadable'“,即我需要提交DDL才能更新列。 我尝试了各种排列,但是我无法快速完成。

如何使用低特权的PL-SQL获得Oracle中的列数据types?

我对Oracle数据库中的几个表有“只读”访问权限。 我需要获取某些列的模式信息。 我想使用类似于MS SQL的sp_help东西。 我在这个查询中列出了我感兴趣的表格: SELECT * FROM ALL_TABLES 当我运行这个查询时,Oracle告诉我“在模式中没有find表”,是的,参数是正确的。 SELECT DBMS_METADATA.GET_DDL('TABLE', 'ITEM_COMMIT_AGG', 'INTAMPS') AS DDL FROM DUAL; 使用我的Oracle通用转换器9000后,我猜测这是行不通的,因为我没有足够的权限。 鉴于我的约束我怎样才能得到一个列的数据types和数据长度我已经阅读访问与PL-SQL语句?

在存储过程中截断表

当我在Oracle shell中运行以下代码时,它工作正常 truncate table table_name 但是当我尝试把它放在一个存储过程 CREATE OR REPLACE PROCEDURE test IS BEGIN truncate table table_name; END test; / 它失败了 ERROR line 3, col 14, ending_line 3, ending_col 18, Found 'table', Expecting: @ ROW or ( or . or ; := 为什么? 谢谢,Klas Mellbourn

SQL列定义:默认值和非空冗余?

我已经多次看到以下在create / alter DDL语句中定义列的语法: ALTER TABLE tbl ADD COLUMN col VARCHAR(20) NOT NULL DEFAULT "MyDefault" 问题是:既然指定了一个默认值,是否有必要指定列不应该接受NULL? 换句话说,不是DEFAULT呈现NOT NULL多余?

模拟CREATE DATABASE如果不存在PostgreSQL?

我想创build一个不存在的数据库通过JDBC。 不像MySQL,PostgreSQL不支持create if not exists语法。 什么是完成这个最好的方法? 应用程序不知道数据库是否存在。 它应该检查,如果数据库存在,应该使用它。 所以连接到所需的数据库是有道理的,如果由于数据库不存在而导致连接失败,它应该创build新的数据库(通过连接到默认的postgres数据库)。 我检查了Postgres返回的错误代码,但是我找不到任何相同的代码。 另一种方法是连接到postgres数据库,并检查是否存在所需的数据库并采取相应的措施。 第二个是有点繁琐的工作。 有什么办法可以在Postgres中实现这个function吗?

MySQL更改语法删除列,如果它存在

如果该列存在于4.0.18版本中,那么在MySQL表中删除列的语法是什么?

只能有一个自动列

我如何纠正错误从MySQL'你只能有一个自动增量列'。 CREATE TABLE book ( id INT AUTO_INCREMENT NOT NULL, accepted_terms BIT(1) NOT NULL, accepted_privacy BIT(1) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;