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

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.kler.cn/a/349357.html

相关文章:

  • Linux:多线程中的生产消费模型
  • python官网下载安装
  • 【ICPC】The 2021 ICPC Asia Shanghai Regional Programming Contest G
  • Pandas 中 transform() 与 apply() 的联系与区别
  • 本地拉取Docker镜像打包导入远程服务器
  • k8s集群版本升级
  • vue3在setup中引入本地图片
  • 基于BERT的深度强化学习求解图上的组合优化问题(未完)
  • [LeetCode] 295. 数据流的中位数
  • 大厂面试真题-CPU飙升问题怎么定位
  • 交通路口智能监测平台实现
  • 呼兰:从程序员到脱口秀演员的双面人生
  • [Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制
  • 图的应用——关键路径
  • 深度优先搜索 - 岛屿最大面积
  • linux线程 | 同步与互斥(上)
  • Linux:信号保存与处理
  • 无人机与卫星光伏踏勘,谁会引领未来?
  • UE5蓝图学习笔记玩家碰撞触发死亡加一秒黑屏
  • 游​卡​三​面​​牧​原​三​面​​商​汤​一​面​​W​X​G​一​面