选择那些不能为空的列名。

18 浏览
0 Comments

选择那些不能为空的列名。

我想修改已设置为“非空”的列的属性。

能否获取列名并执行“ALTER TABLE...”命令将其修改为“可为空”,以便列的值变为可选?

0
0 Comments

从information_schema.columns可以找到所有需要更改的列和它们的属性。

select concat(
'Alter table ',
table_name,
' modify column ',
column_name,' ',
column_type,
';'
)
from information_schema.`COLUMNS` where table_schema = 'sandbox' and is_nullable = 'no'

将会生成一系列的alter语句。

你应该将sandbox更改为你感兴趣的模式。

注意:我没有进行全面的测试,请小心使用。

问题的出现原因是需要找到所有不能为null的列名,以便进行修改。通过查询information_schema.columns视图,我们可以获取到所有列的信息,包括表名、列名、数据类型等。根据条件table_schema = 'sandbox' and is_nullable = 'no',我们可以筛选出sandbox模式下所有不能为null的列。然后通过concat函数生成相应的alter语句,用于修改这些列的属性。

解决方法是运行上述的SQL查询语句,并将sandbox替换为所需的模式名。执行查询后,将会生成一系列的alter语句,用于修改不能为null的列的属性。需要注意的是,由于作者未进行全面的测试,使用时需谨慎。

0
0 Comments

问题出现的原因是用户想要知道哪些列名不能为null,但是在给出的内容中没有直接提到这一点。解决方法是删除并重新创建约束。

用户首先需要删除约束,可以通过以下步骤实现:

1. 使用ALTER TABLE your_table DROP CONSTRAINT ACTIVEPROG_FKEY1;语句删除约束。

接下来,用户需要重新创建约束,可以按照以下步骤进行:

1. 使用ALTER TABLE your_table add CONSTRAINT ACTIVEPROG_FKEY1 FOREIGN KEY(ActiveProgCode) REFERENCES PROGRAM(ActiveProgCode) ON DELETE CASCADE;语句重新创建约束。

如果用户想要了解要修改的列名,可以再次参考上述步骤。

参考资料:

- [How to Alter Constraint](https://stackoverflow.com/questions/13244889)

0
0 Comments

在MySQL中,我们可以通过查询`INFORMATION_SCHEMA.COLUMNS`来获取表的列信息。通过以下SQL语句,我们可以选择出那些不能为NULL的列名:

select TABLE_NAME, COLUMN_NAME
from information_schema.COLUMNS
where TABLE_SCHEMA='yourdb' and is_nullable='NO'

这个问题出现的原因是我们需要找到那些不能为NULL的列。在MySQL中,每个列都有一个属性`is_nullable`来表示是否允许为NULL。如果`is_nullable`的值为'NO',说明该列不能为NULL,反之则可以为NULL。

为了解决这个问题,我们可以使用MySQL的`INFORMATION_SCHEMA`来查询表的列信息。`INFORMATION_SCHEMA.COLUMNS`是一个系统数据库,它包含了关于数据库中的表和列的元数据信息。通过查询该表,我们可以获取到表的列名以及每个列的属性信息。

在上述的SQL语句中,我们通过选择`TABLE_NAME`和`COLUMN_NAME`列,从`INFORMATION_SCHEMA.COLUMNS`表中筛选出我们需要的信息。`TABLE_SCHEMA`用于指定数据库的名称,可以根据实际情况替换成相应的数据库名称。`is_nullable`用于判断列是否可以为NULL,如果值为'NO',则表示该列不能为NULL。

通过运行上述的SQL语句,我们就可以获取到那些不能为NULL的列名。这样我们就可以根据需要对这些列进行操作,确保数据的完整性和准确性。

0