我在数据库中有一个名为“tickets”的现有表,其中包含以下列:
id (string, Primary Key, contains UUID like e6c49164-545a-43a1-845f-73c5163962f2)
date (biginteger, stores epoch)
status (string)
Run Code Online (Sandbox Code Playgroud)
我需要添加新的自动增量列ticket_id但要生成的值应该根据“日期”列值。
我试过这个:
ALTER TABLE "tickets" ADD COLUMN "ticket_id" SERIAL;
Run Code Online (Sandbox Code Playgroud)
问题是,它以某种奇怪的顺序生成“ticket_id”值,看起来它基于“id”列,它是表的主键。
是否可以生成根据“日期”排序的序列值?这很重要,因为“ticket_id”需要根据票的生成顺序显示。
如何在 SQLPlus 中撤销用户的所有权限?我已登录,sysdba并且我想撤销普通用户的所有权限。
我用谷歌搜索了这个查询
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
Run Code Online (Sandbox Code Playgroud)
但我不明白我应该为用户提供什么,等等。
我想将一列(定义,而不是数据)从一个表复制到另一个表。如果目标表中不存在该列,则添加该列,或者更好的是,如果存在,则相应地修改它。
试图谷歌,但一切似乎都是关于复制数据而不是定义,或者关于使用CREATE TABLE ... LIKE ....
CREATE TABLE table2 AS
SELECT field4, field7 -- only the columns you want
FROM table
WHERE FALSE; -- and no data
Run Code Online (Sandbox Code Playgroud)
但我需要将列复制到现有表中。所以我试过:
ALTER TABLE table2 AS
SELECT field4, field7 -- only the columns you want
FROM table
WHERE FALSE; -- and no data
Run Code Online (Sandbox Code Playgroud)
但显然它拒绝工作。
有这样的吗?
ALTER TABLE table1 ADD COLUMN column2 LIKE table2.column5
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在 MySQL 中实现这一点吗?
我在 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)
目标是避免相同玩家之间的比赛进入。
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?
您好,我正在尝试将表中的列从 varchar 转换为 json,并且该表已经有一些字符串数据。我尝试使用以下命令执行此操作。
Database=# alter table table_name alter column message type json using
message::json;
Run Code Online (Sandbox Code Playgroud)
但该命令失败并出现以下错误。
ERROR: invalid input syntax for type json
DETAIL: Token "This" is invalid.
CONTEXT: JSON data, line 1: This...
Run Code Online (Sandbox Code Playgroud)
注意:消息栏有一组带有空格的单词,如下所示。
"This is a message"
Run Code Online (Sandbox Code Playgroud)
我不确定出了什么问题。提前致谢..
ddl ×10
postgresql ×5
sql ×2
dml ×1
java ×1
json ×1
mysql ×1
oracle ×1
privileges ×1
psql ×1
spring-boot ×1
sql-revoke ×1
sql-update ×1
sqldatatypes ×1
sqlplus ×1