美文网首页
常用mysql判断操作

常用mysql判断操作

作者: 猫猫_tomluo | 来源:发表于2017-09-15 05:30 被阅读436次

MYSQL判断不存在时创建表或创建数据库

Create Database If Not Exists test Character Set UTF8;

mysql判断检查表存不存在

select count(1) from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_SCHEMA`='test' and `TABLE_NAME`='a' ;
drop table if exists a;
CREATE TABLE if not exists `a` (
  `id` varchar(32) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL,
 `pwd` varchar(10) DEFAULT NULL,
  `birthday` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE
IF NOT EXISTS `test`.`b` (
    `ID` BIGINT (8) UNSIGNED PRIMARY KEY Auto_Increment,
    `Name` text,
    `Birthday` DateTime
);
truncate TABLE test.a;--清空表中的数据
SHOW TABLES LIKE '%a%'; 

mysql判断字段存不存在

SELECT count(1) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'a' AND column_name = 'name';
SELECT count(1) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test' AND table_name='A' AND COLUMN_NAME='name';
-- 存储过程中判断
IF EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test' AND table_name='A' AND COLUMN_NAME='name') THEN
     ALTER TABLE A drop column `name`;
END IF;
IF NOT EXISTS(SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='test' AND table_name='A' AND COLUMN_NAME='name') THEN
     ALTER TABLE A ADD `name` VARCHAR(10) NOT NULL;
END IF;

mysql判断索引存在时删除索引的方法

mysql的drop index语句不支持if exists条件,在sql中先删除索引,再创建索引,如果对于新建的数据库,库中没有该索引,就会报错,导致后面的sql不再执行。
因此需要使用存储过程来判断索引是否存在,如果存在则删除。

DROP PROCEDURE IF EXISTS del_idx;  
CREATE PROCEDURE del_idx (
    IN p_tablename VARCHAR (200),
    IN p_idxname VARCHAR (200)
)
BEGIN

DECLARE str VARCHAR (250);


SET @str = concat(
    ' drop index ',
    p_idxname,
    ' on ',
    p_tablename
);

SELECT
    count(*) INTO @cnt
FROM
    information_schema.statistics
WHERE
    table_name = p_tablename
AND index_name = p_idxname;


IF @cnt > 0 THEN
    PREPARE stmt
FROM
    @str;

EXECUTE stmt;


END
IF;
END;

call del_idx('a','idx_name_birthday');  
ALTER TABLE a ADD INDEX idx_name_birthday (name, birthday);
select count(1) from information_schema.statistics where table_name='a' and index_name='idx_name_birthday';

插入表记录前对记录进行检查

INSERT INTO test.a (id, `name`, pwd) 
SELECT REPLACE(UUID(),'-','') as id, 'IBM', '123' FROM dual 
WHERE not exists (select 1 from test.a where `name` = 'IBM');

相关文章

  • 常用mysql判断操作

    MYSQL判断不存在时创建表或创建数据库 Create Database If Not Exists test C...

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • MySQL安装

    运行以下命令安装MySQL: 启动和关闭mysql服务器: 进入mysql shell界面: MySQL常用操作 ...

  • Mysql常用操作笔记

    Mysql常用操作笔记 登录 mysql -u用户 -p密码 mysql -hIP地址 -u用户 -u密码 退出 ...

  • Go操作MySQL

    MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作MySQL 连接 Go语...

  • Mysql 常用操作

    数据库连接 数据库退出 创建数据库 删除数据库 选择表 数据类型 创建数据表 删除数据表 插入数据 查询数据 WH...

  • mysql常用操作

    1.where中字段包含条件 2.字符串截取

  • MySql常用操作

    1、查看数据库状态 及启动停止 /etc/init.d/mysqld status /etc/init.d/mys...

  • mysql 常用操作

    导出数据: 导入数据: 查看外键约束: 全部的表: 去除约束: 添加约束: 主键: 约束不能更改,只能先移除再创建...

  • Mysql常用操作

    1. 查看数据库:show databases; 2. 创建数据库:create database kuname;...

网友评论

      本文标题:常用mysql判断操作

      本文链接:https://www.haomeiwen.com/subject/acojsxtx.html