【问题标题】:Edit database structure field name and field restrictions in Java using Netbeans使用 Netbeans 在 Java 中编辑数据库结构字段名称和字段限制
【发布时间】:2013-02-18 06:33:37
【问题描述】:

我很抱歉这个愚蠢的问题。

我有一个这样的数据库结构:

CREATE TABLE "CLIENT" (
  "AFM" INTEGER not null primary key,
  "FIRSTNAME" VARCHAR(30),
  "LASTNAME" VARCHAR(30),
  "ADDRESS" VARCHAR(30),
  "PHONE" INTEGER,
  "MAIL" VARCHAR(60)
);

问题:

1) 当我按下 Netbeans 上的“运行 SQL”按钮时,会创建数据库。如果我编辑 e 字段,例如字段“邮件”到“电子邮件”,我再次按下相同的按钮,但由于数据库已经存在,我得到一个错误。如何编辑数据库中的字段名称?

2) 正如您在上面看到的,我希望字段“LASTNAME”由

提前谢谢你。

【问题讨论】:

  • 您使用的是哪个 DBMS? integer(10) 不是标准的 SQL 数据类型(也不能在 MySQL 中执行您想要的操作)。要限制整数类型的值,您需要使用检查约束。有关详细信息,请查看 DBMS 的手册。
  • 首先感谢您的回复。实际上,我已经安装了 Netbeans IDE,并开始与我的数据库建立 Java DB(嵌入式)连接。您可以让我使用哪个 DBMS?
  • JavaDB 只是一个重新命名的 Apache Derby。手册可以在这里找到:db.apache.org/derby/manuals/index.html
  • 顺便说一句:上面的语句没有创建“数据库”。它创建一个。 “数据库”是您创建的整个表的集合。

标签: database netbeans derby


【解决方案1】:

为了限制数值列的值,您需要使用检查约束:

CREATE TABLE CLIENT 
(
    AFM INTEGER not null primary key,
    FIRSTNAME VARCHAR(30),
    LASTNAME VARCHAR(30),
    ADDRESS VARCHAR(30),
    PHONE INTEGER,
    MAIL VARCHAR(60),
    constraint check_afm check (afm <= 10)
);

虽然我看不出你有什么理由限制主键列的值。

如果该表已经存在,您将收到错误消息。如果您的表中还没有数据(或者您不介意丢失它),您可以使用以下命令删除它:

drop table client;

运行上面的 CREATE TABLE。

否则(如果你想保留数据)你需要一个 alter table 语句:

alter table client 
  add constraint check_afm check (afm <= 10);

请注意,如果表中有任何行违反该检查约束,这将失败。

【讨论】:

  • 感谢您的回答。我想限制整数,例如,我希望 afm 字段的长度小于 10 位。例如,对于包含固定位数的身份证号码也是如此。
  • @Limas 小于 10 个 digits&lt; 10 不同。为确保限制为 10 digits,您需要使用 &lt;= 999999999
【解决方案2】:

1) 您不能创建一个表两次。如果表已经存在,您需要使用“alter table”来更改字段名。

2) 你得到哪个错误?作为旁注:Integer(n) 定义显示宽度(请参阅here)而不是值范围,以防您不知道这一事实。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多