请用存储过程帮我写一个建表样例,需要添加表字段注释,并创建索引
时间: 2024-03-27 16:41:20 浏览: 22
好的,以下是一个建表样例的存储过程,其中包含了添加表字段注释和创建索引的操作:
```
CREATE PROCEDURE create_table_example()
BEGIN
DECLARE table_name VARCHAR(255);
DECLARE column_name VARCHAR(255);
DECLARE column_type VARCHAR(255);
DECLARE column_comment VARCHAR(255);
DECLARE index_name VARCHAR(255);
DECLARE index_columns VARCHAR(255);
-- 设置表名
SET table_name = 'example_table';
-- 创建表
CREATE TABLE IF NOT EXISTS `example_table` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`gender` varchar(10) DEFAULT NULL COMMENT '性别',
`phone` varchar(20) DEFAULT NULL COMMENT '电话号码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- 添加字段注释
SELECT column_name, column_type INTO column_name, column_type FROM information_schema.columns WHERE table_name = table_name AND table_schema = database();
IF column_name IS NOT NULL THEN
SET column_comment = '测试字段注释';
SET @sql = CONCAT('ALTER TABLE `', table_name, '` MODIFY COLUMN `', column_name, '` ', column_type, ' COMMENT \'', column_comment, '\'');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
-- 创建索引
SET index_name = 'idx_name';
SET index_columns = 'name';
SET @sql = CONCAT('CREATE INDEX `', index_name, '` ON `', table_name, '` (`', index_columns, '`)');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
```
你可以在调用该存储过程的时候,将表名、字段名、字段类型、字段注释、索引名和索引所包含的字段名传入,存储过程会按照你的要求自动完成建表、添加注释和创建索引的操作。