SQL存储过程

本文详细介绍了MySQL数据库的DDL(Data Definition Language)和DML(Data Manipulation Language)操作,包括建表、新增字段、新增索引、修改字段及重命名、插入数据和更新已有数据的方法。通过示例代码展示了如何使用SQL语句进行这些操作,帮助读者理解数据库管理的基本操作。
摘要由CSDN通过智能技术生成

1.DDL

1.1 建表

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		CREATE TABLE IF NOT EXISTS table_name (
			'IID' decimal(12,0) NOT NULL COMMENT ''
		) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='';
	END;;
DELIMITER ;
CALL UPPRDE();

1.2 新增字段

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema= (select database())) and TABLE_NAME = 'table_name' AND COLUMN_NAME = 'c_name ' THEN
			ALTER TABLE table_name ADD c_name TINYINT(1);
		END IF;
	END;;
DELIMITER ;
CALL UPPRDE();

1.3 新增索引

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema= (select database())) and TABLE_NAME = 'table_name' AND COLUMN_NAME = 'c_name ' THEN
			ALTER TABLE table_name ADD index A_index(IID);
		END IF;
	END;;
DELIMITER ;
CALL UPPRDE();

1.4 修改字段

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		ALTER TABLE table_name MODIFY c_name TINYINT (1);
	END;;
DELIMITER ;
CALL UPPRDE();

1.5 修改字段(重命名)

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		ALTER TABLE table_name CHANGE c_name new_name TINYINT (1);
	END;;
DELIMITER ;
CALL UPPRDE();

2.DML

2.1 插入数据

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		INSERT IGNORE INTO table_name (IID, AAA) VALUES (1, 'AAA');   // 检查主键,存在忽略
		REPLACE INTO TableName (name, age) values('aa', '11'); // 检查主键,删除原有的,新增一条
		insert into test values('unique', '654321') on duplicate key update col1 = 'update_unique'; // 检查主键,对原有数据做替换
		SELECT IVALUE INTO table_name1 FROM table_name2 WHERE a = 'a';
	END;;
DELIMITER ;
CALL UPPRDE();

2.2 更新数据(数据已经存在)

DELIMITER ;;
	DROP PROCEDURE IF EXISTS UPPRDE;;
	BEGIN
		UPDATE table_name SET IVALUE = 'AAA' WHERE a = 'a';
	END;;
DELIMITER ;
CALL UPPRDE();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值