当前位置: 首页 > news >正文

mysql 实用命令

注:以下以dept表名为例。

一、如果表不存在就建立这个表

① create table if not exists tablename 这样的指令来建立,不需要先去查询表是否存在

CREATE TABLE IF NOT EXISTS dept(
`pkId` INT(11) AUTO_INCREMENT  NOT NULL,
`name` VARCHAR(50) NULL
) DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ;

②CREATE TABLE IF NOT EXISTS new_table_name LIKE old_table_name;根据模版建立,前提是old_table_name存在,new_table_name不存在创建,存在则不执行任何操作

③仅仅判断表是否存在,可以采用下面两个命令

SHOW TABLES LIKE '%表名%';

select  TABLE_NAME  from  INFORMATION_SCHEMA . TABLES  where TABLE_SCHEMA ='数据库名' and  TABLE_NAME ='表名' ;

二、表中记录判断是否存在记录

①不存在插入:MySQL 5.5以上版本引入了类似Oracle的虚拟表DUAL,使用场景:有主键,多列值,个别列值重复判断,避免插入前在select一遍

INSERT INTO dept(`name`)
SELECT '技术部'
FROM DUAL
WHERE NOT EXISTS(SELECT `pkId` FROM dept WHERE `name`='技术部')

②不存在插入,存在更新(下面语句功能类似业务层的数据存在修改不存在创建,根据情况使用,具体详细研究)

INSERT INTO dept (`pkId`,`name`) VALUES (1,'技术部'),(2,'设计部')  

ON DUPLICATE KEY UPDATE `pkId`=LAST_INSERT_ID(pkId), name=VALUES(name);  

INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令的
前提条件是这个表必须有一个唯一索引或主键。
1、REPLACE发现重复的先删除再插入,如果记录有多个字段,在插入的时候如果有的字段没有赋值,那么新插入的记录这些字段为空。
2、INSERT发现重复的是更新操作。在原有记录基础上,更新指定字段内容,其它字段内容保留。


http://www.mrgr.cn/news/50960.html

相关文章:

  • Rust默认使用UTF-8编码来解析源代码文件。如果在代码中包含无法用UTF-8编码表示的字符,编译器会报错!
  • 人类与人工智能的和谐关系
  • js 实现斐波那契数列
  • Java基础 03
  • 2024-10-15 学习人工智能的Day7
  • 农场家禽猪只检测数据集
  • 主流的安全测试工具知识点
  • pandas数据清洗总结
  • U9销售订单不能带出最新价格出来
  • 医学和生信web APP 平台- Appmatrix
  • Vue的生命周期
  • LeetCode146. LRU 缓存(2024秋季每日一题 37)
  • NVIC和EXIT寄存器工作
  • MediaGo:革新视频下载体验的开源神器
  • 深入解析CSS中的!important规则
  • C++ 的特性可以不用在主函数中调用
  • 【AI学习】Mamba学习(六):HiPPO论文中的离散化SSM的矩阵近似计算
  • OpenCV-人脸检测
  • 从零开始的LeetCode刷题日记:102.二叉树的层序遍历
  • RHCE第一天