假设我在Postgresql中创建了一个表,并对列进行了注释:
create table t1 (
c1 varchar(10)
);
comment on column t1.c1 is 'foo';
Run Code Online (Sandbox Code Playgroud)
一段时间后,我决定添加另一列:
alter table t1 add column c2 varchar(20);
Run Code Online (Sandbox Code Playgroud)
我想查找第一列的注释内容,并与新列关联:
select comment_text from (what?) where table_name = 't1' and column_name = 'c1'
Run Code Online (Sandbox Code Playgroud)
(什么?)将成为一个系统表,但在浏览了pgAdmin并在网上搜索后我还没有学到它的名字.
理想情况下,我希望能够:
comment on column t1.c1 is (select ...);
Run Code Online (Sandbox Code Playgroud)
但我有一种感觉,那就是伸展的东西.谢谢你的任何想法.
更新:基于我在这里收到的建议,我最终编写了一个程序来自动完成传输注释的任务,这是更改Postgresql列数据类型的更大过程的一部分.您可以在我的博客上阅读相关内容.
我看过MySQL 5.1文档,但仍然无法弄清楚这一点 - 我注意到我输入MySQL的代码与系统输出代码之间存在差异.
代码示例01和02之间有什么区别,这意味着02 CONSTRAINT之前添加了FOREIGN KEY- 为什么,它有什么作用?
CODE_SAMPLE_01:
FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
Run Code Online (Sandbox Code Playgroud)
背景:
CREATE TABLE `TABLE_02` (
`TABLE_02_sID_PK` int(8) NOT NULL,
`TABLE_02_nID_FK__TABLE_01_sID_PK` int(8) NOT NULL,
`TABLE_02_cID` int(8) NOT NULL,
`TABLE_02_data01` varchar(128) default NULL,
`TABLE_02_data02` varchar(128) NOT NULL,
`create_timestamp` DATETIME DEFAULT NULL,
`update_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`TABLE_02_sID_PK`),
FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
INDEX `TABLE_02_nID_FK__TABLE_01_sID_PK` (`TABLE_02_nID_FK__TABLE_01_sID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
CODE_SAMPLE_02:
CONSTRAINT `table_02_ibfk_1` FOREIGN KEY (`TABLE_02_nID_FK__TABLE_01_sID_PK`) REFERENCES `table_01` (`TABLE_01_sID_PK`)
Run Code Online (Sandbox Code Playgroud)
背景:
CREATE TABLE …Run Code Online (Sandbox Code Playgroud) 我们正在使用PostgreSQL.我的要求是从我的数据库中删除未使用的序列.例如,如果我通过我的应用程序创建任何表,将创建一个序列,但是为了删除表,我们也不会删除序列.如果要创建同一个表,则会创建另一个序列.
示例:table : file; 自动创建idcoumn 序列:file_id_seq
当我删除表file并再次使用相同的名称创建它时,正在创建一个新序列(即file_id_seq1).我通过这种方式在应用程序数据库中积累了大量未使用的序列.
如何删除这些未使用的序列?
是否有一种生成模式差异的DDL的方法,就像TOAD中的Synch功能一样?
不确定如何使用“ updateSQL”选项?我正在使用diff选项比较架构。
我在 Postgres 数据库中有两个名为players& 的表matches,如下所示:
CREATE TABLE players (
name text NOT NULL,
id serial PRIMARY KEY
);
CREATE TABLE matches (
winner int REFERENCES players (id),
loser int REFERENCES players (id),
-- to prevent rematch btw players
CONSTRAINT unique_matches
PRIMARY KEY (winner, loser)
);
Run Code Online (Sandbox Code Playgroud)
如何确保仅将(winner, loser)或的唯一组合(loser, winner)用于matches主键,以便matches表不允许插入:
INSERT INTO matches VALUES (2, 1);
Run Code Online (Sandbox Code Playgroud)
如果它已经有一行包含VALUES (1, 2)像:
winner | loser
--------+-------
1 | 2
Run Code Online (Sandbox Code Playgroud)
目标是避免相同玩家之间的比赛进入。
如何使用SQL(select/stored procedure/etc)从SQL Server数据库生成所有表的DDL(带外键,索引等)脚本?除了数据,我需要一切.
我不能使用Sql Server Management Studio,因为我想在一个将在linux上运行的node.js脚本中使用它!
DDL 和 DML 基本上是:
- DDL = 数据定义语言
- DML = 数据操作语言
我一直将存储过程归类为 DDL,因为它们使用结构化查询语言。
但是最近我在争论存储过程应该是 DML 还是应该属于不同的分类,因为它们内部有 DDL 和 DML。
我在互联网上搜索,我没有找到任何可信赖的文档,其中存储过程被归类为 DDL,然后我不能再争论了......
因此,问题很简单:存储过程是 DDL 吗?或 DML?
已编辑 此问题已标记为已删除,我部分同意,但问题是其他问题只是解释了 DDL 与 DML,但有任何文档对存储过程应分类的位置进行分类。
在旧的 PostgreSQL 数据库中,我尝试删除发出命令的现有索引:
DROP INDEX testing.idx_testing_data_model_output_data_id;
Run Code Online (Sandbox Code Playgroud)
并查看错误:
ERROR: index "<index name>" does not exist
Run Code Online (Sandbox Code Playgroud)
但是我可以使用以下\d <table name>命令查看索引:
DROP INDEX testing.idx_testing_data_model_output_data_id;
Run Code Online (Sandbox Code Playgroud)
好的,当我尝试创建索引时,我收到以下错误:
ERROR: relation "<index name>" already exists
Run Code Online (Sandbox Code Playgroud)
似乎索引创建或索引删除没有成功完成。我该如何解决这个问题?
我正在尝试创建一个 Spring Boot 应用程序,我想在其中按需创建和使用数据库表,而无需为它们定义实体/存储库。
我有一个基本的 Business 实体和 BusinessType 实体来保留业务类型。我希望能够为具有自己的表的业务类型(比如 Coffeeshop)动态创建一个表(同时我可以在 BusinessType 表上保留表的名称并决定从那里查询哪个表)。
因此,如果不为 Coffeeshop 定义实体和/或创建 CrudRepository,我可以创建一个名为 Coffeeshop 的表,然后对其进行一些查询吗?
如果没有,我的选择是什么?在典型的 Spring Data JPA 应用程序中,您如何处理拥有基类型并允许系统具有更多具体类型(持久化并与基类型关联)的情况?
谢谢
在 AWS Athena 中,您可以编写
SHOW CREATE TABLE my_table_name;
并查看描述如何构建表架构的类似 SQL 的查询。 它适用于架构在 AWS Glue 中定义的表。 这对于在常规 RDBMS 中创建表、加载和探索数据视图非常有用。
以这种方式与 Athena 交互是手动的,我想自动化创建常规 RDBMS 表的过程,这些表与 Redshift Spectrum 中的表具有相同的架构。
我如何通过可以运行的查询来做到这一点psql?或者有另一种方法可以通过aws-cli?
ddl ×10
postgresql ×4
sql ×2
comments ×1
dml ×1
java ×1
liquibase ×1
mysql ×1
sequences ×1
spring-boot ×1
sql-server ×1