作者:许瑜钊
模板 日期-标识-数据库名称.sql
关注点:
1.插入重复 直接在原insert 语句后面加 ignore关键字,该方式必须表有主键或者唯一索引
2.新增字段、新加索引,新建存储过程,查系统表,需要特别注意的是,新建存储过程这的脚本需要重定义分隔符,因为存储过程的创建是多条语句的,而mysql默认的分隔符是分号,如果不重新定义分隔符,会出现语法问题,另外,创建完存储过程需要恢复分隔符
3.存储过程创建,执行完就删除,以避免冗余
1.新建字段
新增字段
-- 创建一个存储过程判断字段是否存在
drop
PROCEDURE
if EXISTS add_column;
DELIMITER ;;
create
PROCEDURE
add_column()
BEGIN
-- TABLE_SCHEMA 数据库名
-- table_name 表名
-- COLUMN_NAME 列名
if
not
EXISTS(
select
1
FROM
information_schema.COLUMNS
WHERE
TABLE_SCHEMA=
'cims_db'
AND
table_name=
'on_shelf'
AND
COLUMN_NAME=
'status_type'
)
then
-- 要执行的字段新增
ALTER
TABLE
`cims_db`.`on_shelf`
ADD
COLUMN
`status_type`
VARCHAR
(50)
DEFAULT
'0'
NULL
COMMENT
'状态类型'
AFTER
`status`;
ELSE
select
'exist'
;
end
if;
end
;;
DELIMITER ;
CALL add_column();
-- 结束存储过程创建
-- 简化版
-- 表名,列名,数据类型,备注
-- 注意:表名不可待数据库前缀
call add_column_proc(
'brand'
,
'test1'
,
'varchar(10)'
,
'测试'
);
|
2.新建索引
新建索引
DROP
PROCEDURE
IF EXISTS index_add;
DELIMITER ;;
CREATE
PROCEDURE
index_add()
BEGIN
DECLARE
CurrentDatabase
VARCHAR
(100);
SELECT
DATABASE
()
INTO
CurrentDatabase;
IF
NOT
EXISTS (
SELECT
*
FROM
information_schema.
statistics
WHERE
table_schema=CurrentDatabase
AND
table_name =
'oms_orderdetail'
AND
index_name =
'index_sku_code_query'
)
THEN
ALTER
TABLE
`order_db`.`oms_orderdetail`
ADD
INDEX
`index_sku_code_query` (`sku_code`);
else
select
'exist'
;
END
IF;
END
;;
DELIMITER ;
|