【问题标题】:MySQL namespace in create table [duplicate]创建表中的MySQL命名空间[重复]
【发布时间】:2019-09-11 16:39:49
【问题描述】:

我可以给表创建语法上的命名空间吗?像下面的 com.sumeet.QRTZ_JOB_DETAILS

它不适用于以下语法

CREATE TABLE "com"."sumeet"."QRTZ_JOB_DETAILS"(
SCHED_NAME VARCHAR(120) NOT NULL,
JOB_NAME VARCHAR(200) NOT NULL,
JOB_GROUP VARCHAR(200) NOT NULL,
DESCRIPTION VARCHAR(250) NULL,
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
IS_DURABLE VARCHAR(1) NOT NULL,
IS_NONCONCURRENT VARCHAR(1) NOT NULL,
IS_UPDATE_DATA VARCHAR(1) NOT NULL,
REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
JOB_DATA BLOB NULL,
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP));

【问题讨论】:

  • 数据库名称是您的“命名空间”。您想在这里实现什么目标?
  • 使用"com.sumeet"."QRTZ_JOB_DETAILS"
  • 我不明白这个问题。你有一个表:qrtz._job_details,还有一个数据库:sumeet,那么 com 是什么?
  • 我想在表名@Strawberry 前添加命名空间
  • 如果您收到任何错误消息,您应该将其发布在您的问题中。那么我们至少会看到,你真的在​​使用 MySQL。

标签: mysql sql


【解决方案1】:

MySQL 中没有层次结构的概念。 IE。您的数据库没有文件夹、容器或命名空间。

MySQL 有 2 个概念:数据库(通常称为 Schema)和表。你需要将你的数据库命名为"com.sumeet"(这是允许的,但可以认为是混乱的*),你的表:QRTZ_JOB_DETAILS。各种软件(如 PHPMyAdmin)将查看相似之处,并将根据名称本身将数据库分组到文件夹中。例如,如果您使用下划线 "com_sumeet" phpmyadmin 实际上会将它们组合在一起:

注意:使用句点命名数据库可能比它的价值更麻烦,因为您的数据库调用现在需要引号才能正常运行。 (即"com.test".table vs com_test.table)句点是数据库和表之间的通用分隔符,因此需要引号来具体告诉 MySQL 什么是数据库,以及查询中的表是什么。

【讨论】:

  • 这是允许的,但我觉得这是个坏主意。
  • @Strawberry 我的更新怎么样?
  • 太棒了。惊人的。太棒了。
猜你喜欢
  • 2020-06-10
  • 2017-01-07
  • 1970-01-01
  • 2018-08-21
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多