[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BW8ygFa4-1648110218860)(C:\Users\mengx\AppData\Roaming\Typora\typora-user-images\image-20211023014402325.png)]
drop database database_name
(2009-09-26 17:14:52)
假设有个表名DiagnocticCode,以前设计时没有设置其中一个列DGC_DiagnosticCode的主键,由于功能需要要增加主键
IF NOT EXISTS (select * from sysobjects where parent_obj=object_id(N'DiagnosticCode') and name='pk_diagcode' and xtype='PK')
BEGIN
ALTER TABLE DiagnosticCode Add Constraint pk_diagcode Primary Key (DGC_DiagnosticCode)
END
GO
mysql创建存储过程
[【存储过程】MySQL存储过程/存储过程与自定义函数的区别][https://www.cnblogs.com/qlqwjy/p/7920012.html]
[](javascript:void(0)
delimiter //
CREATE PROCEDURE showTime()
BEGIN
SELECT now();
END//
delimiter ;
CALL showTime;
[](javascript:void(0)
作用:显示当前时间,没什么实际意义
select count(*) PrimaryNum from INFORMATION_SCHEMA.KEY_COLUMN_USAGE t where t.TABLE_NAME ='test'
如果结果 >= 1,则表示有主键。
2删除存在的主键
alter table test drop primary key;
3.创建主键
alter table test add primary key(id);
[mysql while,loop,repeat循环,符合条件跳出循环][mysql while,loop,repeat循环,符合条件跳出循环 - 东云168 - 博客园 (cnblogs.com)]
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_test_while`$$
CREATE PROCEDURE `sp_test_while`(
IN p_number INT, #要循环的次数
IN p_startid INT #循环的其实值
)
BEGIN
DECLARE v_val INT DEFAULT 0;
SET v_val=p_startid;
outer_label: BEGIN #设置一个标记
WHILE v_val<=p_number DO
SET v_val=v_val+1;
IF(v_val=100)THEN
LEAVE outer_label; #满足条件,终止循环,跳转到end outer_label标记
END IF;
END WHILE;
SELECT '我是while外,outer_label内的SQL'; #由于这句SQL在outer_label代码块内,所以level后,这句SQL将不会执行;
#只要是在outer_label代码块内 任意位置 Leave outer_label,那么Leave后的代码将不再执行
END outer_label;
SELECT CONCAT('test',v_val) AS tname;
END$$
DELIMITER ;
CALL sp_test_while(1000,0);
loop 循环
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_testloop`$$
CREATE PROCEDURE `sp_testloop`(
IN p_number INT, #要循环的次数
IN p_startid INT #循环的其实值
)
BEGIN
DECLARE v_val INT DEFAULT 0;
SET v_val=p_startid;
loop_label: LOOP #循环开始
SET v_val=v_val+1;
IF(v_val>p_number)THEN
LEAVE loop_label; #终止循环
END IF;
END LOOP;
SELECT CONCAT('testloop_',v_val) AS tname;
END$$
delimiter ;
CALL sp_testloop(1000,0);
repeat 循环
DELIMITER $$
DROP PROCEDURE IF EXISTS `sp_test_repeat`$$
CREATE PROCEDURE `sp_test_repeat`(
IN p_number INT, #要循环的次数
IN p_startid INT #循环的其实值
)
BEGIN
DECLARE v_val INT DEFAULT 0;
SET v_val=p_startid;
REPEAT #repeat循环开始
SET v_val=v_val+1;
until v_val>p_number #终止循环的条件,注意这里不能使用';'分号,否则报错
END repeat; #循环结束
SELECT CONCAT('test',v_val) AS tname;
END$$
DELIMITER ;
CALL sp_test_repeat(1000,0);
GO
IF NOT EXISTS(select 1 from sysobjects where xtype= 'PK' and parent_obj = object_id('cb_Contract'))
BEGIN
alter table cb_Contract alter column ContractGUID UNIQUEIDENTIFIER NOT NULL;
END
GO
IF NOT EXISTS(select 1 from sysobjects where xtype= 'PK' and parent_obj = object_id('cb_Contract'))
BEGIN
alter table cb_Contract add primary key (ContractGUID);
END
GO
每个被GO分隔的语句都是一个单独的事务,一个语句执行失败不会影响其它语句执行。
Mysql删除数据库中所有表
获取所有表名并实现语句拼接
SELECT CONCAT('DROP TABLE ', table_name,';') FROM information_schema.`TABLES` WHERE table_schema='singin';
delete from 表名 where 条件 (如果想要删除表中的一条数据的话 后面的条件需要是能唯一确定一条记录的条件!)
HERE table_schema=‘singin’;
# 6. [Mysql怎么删除某表中的一条数据](https://www.cnblogs.com/isme-zjh/p/13768412.html)
delete from 表名 where 条件 (如果想要删除表中的一条数据的话 后面的条件需要是能唯一确定一条记录的条件!)