Mysql 判断表或字段是否存在新增/修改表结构可重复执行sql

DROP PROCEDURE
IF EXISTS proc_tempPro;

CREATE PROCEDURE proc_tempPro ()
BEGIN

START TRANSACTION;

        -- 学生表
        DROP TABLE IF EXISTS student;
        CREATE TABLE student (
        id bigint(20) NOT NULL AUTO_INCREMENT ,
        name varchar(40) DEFAULT NULL ,
        xb varchar(40) DEFAULT NULL ,
        age int(3) DEFAULT NULL ,
        birthday datetime DEFAULT NULL ,
        className varchar(80) DEFAULT NULL ,
        PRIMARY KEY (id)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

        -- 学生表新增班级字段
        SELECT
                count(*) INTO @count
        FROM
                information_schema. COLUMNS
        WHERE
                table_schema = DATABASE ()
        AND column_name = 'className'
        AND table_name = 'student';

        IF (@count < 1) THEN
                ALTER TABLE student ADD className VARCHAR(40);
        ELSE 
                ALTER TABLE student MODIFY COLUMN className VARCHAR(20);
                
        END IF;
        

END;

CALL proc_tempPro;

DROP PROCEDURE
IF EXISTS proc_tempPro;