mysql 判断所有字段是否存在

mysql 判断所有字段是否存在,第1张

根据你的字面意思是添加字段,不是添加值,如果是这样你的设计肯定是有问题的,这条路你就不要走了,赶紧改实现方案吧。虽然能实现,但没有意义,所以这个实现方案我不就不写了。

那么一般我们设计的都是判断某表某记录字段的值是否存在。

比如:student表第一条记录(假设paramary key 为id,值为:1)是否有name值。

这样实现的话就比较容易。首选查出这条记录select * from student where id=1

然后判断这条记录是的name属性是否存在值,如果不存在就更新:update student set name='名字' where id=1

判断字段是否存在:

DROP

PROCEDURE

IF

EXISTS

schema_change

DELIMITER

//

CREATE

PROCEDURE

schema_change()

BEGIN

DECLARE

CurrentDatabase

VARCHAR()

SELECT

DATABASE()

INTO

CurrentDatabase

IF

NOT

EXISTS

(SELECT

*

FROM

information_schema.columns

WHERE

table_schema=CurrentDatabase

AND

table_name

=

'rtc_order'

AND

column_name

=

'IfUpSend')

THEN

ALTER

TABLE

rtc_order

ADD

COLUMN

`IfUpSend`

BIT

NOT

NULL

DEFAULT

COMMENT

'是否上传

是否上传'

END

IF

END//

DELIMITER

CALL

schema_change()

判断索引是否存在:

DROP

PROCEDURE

IF

EXISTS

schema_change

DELIMITER

//

CREATE

PROCEDURE

schema_change()

BEGIN

DECLARE

CurrentDatabase

VARCHAR()

SELECT

DATABASE()

INTO

CurrentDatabase

IF

NOT

EXISTS

(SELECT

*

FROM

information_schema.statistics

WHERE

table_schema=CurrentDatabase

AND

table_name

=

'rtc_phototype'

AND

index_name

=

'index_name')

THEN

ALTER

TABLE

`rtc_Phototype`

ADD

INDEX

index_name

(

`imgtype`

)

END

IF

END//

DELIMITER

CALL

schema_change()

从这两段可以看出很多东西,具体可以自己试验一下

关于小编给大家介绍的Mysql判断表字段或索引是否存在的内容就给大家介绍到这里,希望对大家有所帮助!

你可以从  INFORMATION_SCHEMA.COLUMNS  那里去判断, 某个表里面, 某个字段是否存在.

下面的 例子代码, 是检索 test 数据库下面的  test_main 表都有哪些列。

mysql> SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT

    -> FROM

    ->   INFORMATION_SCHEMA.COLUMNS

    -> WHERE

    ->   table_name = 'test_main'

    ->   AND table_schema = 'test'

    -> //

+-------------+-----------+-------------+----------------+

| COLUMN_NAME | DATA_TYPE | IS_NULLABLE | COLUMN_DEFAULT |

+-------------+-----------+-------------+----------------+

| id          | int       | NO          | 0              |

| value       | varchar   | YES         | NULL           |

+-------------+-----------+-------------+----------------+

2 rows in set (0.00 sec)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11890457.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存