Mysql笔记--1--数据库的基本操作

文章目录

  • 1. mysql存储过程与条件语句
  • 2. mysql删除数据库
  • 3. SQL 判断 某个表的主键是否存在
  • 4. 查询主键 存在与否 如果存在count值为1 不存在count值为0
  • 5. 判断主键是否存在
  • 6. [Mysql怎么删除某表中的一条数据](https://www.cnblogs.com/isme-zjh/p/13768412.html)

1. mysql存储过程与条件语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BW8ygFa4-1648110218860)(C:\Users\mengx\AppData\Roaming\Typora\typora-user-images\image-20211023014402325.png)]

2. mysql删除数据库

drop database database_name

3. SQL 判断 某个表的主键是否存在

(2009-09-26 17:14:52)

[Mysql笔记--1--数据库的基本操作_第1张图片转载](javascript:

假设有个表名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)

作用:显示当前时间,没什么实际意义

4. 查询主键 存在与否 如果存在count值为1 不存在count值为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);

5. 判断主键是否存在

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';

6. Mysql怎么删除某表中的一条数据

delete from 表名 where 条件 (如果想要删除表中的一条数据的话 后面的条件需要是能唯一确定一条记录的条件!)

HERE table_schema=‘singin’;


# 6. [Mysql怎么删除某表中的一条数据](https://www.cnblogs.com/isme-zjh/p/13768412.html)

 delete from 表名 where 条件  (如果想要删除表中的一条数据的话 后面的条件需要是能唯一确定一条记录的条件!)

你可能感兴趣的:(笔记,mysql,学习)