数据库操作系列-Mysql, Postgres常用sql语句总结

文章目录

    • 1.如果我想要写一句sql语句,实现 如果存在则更新,否则就插入新数据,如何解决?
      • MySQL数据库实现方案: ON DUPLICATE KEY UPDATE
        • 写法
      • Postgres数据库实现方案:
        • 方案1:
        • 方案2:
        • 关于更新:如何实现,当app_name数据存在,就更新details呢??
    • 2.模糊查询+不区分大小写
    • 3. 查询某个字段是否属于多个值中的一个,或者说,等于多个值中的一个就筛选出来
    • 4. 时间范围查询
    • 5. Postgres数据库如何使用dbever批量添加字段,设置类型
      • 1. 新建一张表
      • 2. 打开一个sql编辑器
      • 3. 编写sql语句,下面给大家一些参考句子
      • 4. 执行语句
      • 5. 建表成功
    • 6. 一些常用的Mysql简单指令
      • 丢弃指定的数据库,如果存在的话
      • 创建新的数据库
      • 进入数据库tangdoudou
      • 创建表
      • 向表中插入数据
      • 查询表中所有数据
      • 修改数据
      • 删除数据
      • 一些常用栗子:
        • 丢弃指定的数据库tangdoudou,如果存在
        • 创建一个新的数据库
        • 进入数据库tangdoudou
        • 创建保存学生数据的表(编号、姓名、性别、分数);
        • 往学生表中插入数据
        • 修改编号为2的学员成绩为100,姓名为lucy;
        • 删除编号为3的学员数据
        • 查询学生表内容
    • 待继续补充
      • 欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

1.如果我想要写一句sql语句,实现 如果存在则更新,否则就插入新数据,如何解决?

MySQL数据库实现方案: ON DUPLICATE KEY UPDATE

在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与
表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表
中记录的唯一索引或者主键不重复,则执行新记录插入操作。
简而言之:数据存在则更新,无则创建

写法


INSERT INTO 表名 
	(字段名1, 字段名2 ) 
VALUES 
	(字段值1, 字段值2) 
ON DUPLICATE KEY UPDATE 
	字段名1 = VALUES(字段名1), 
	字段名2 = VALUES(字段名2)

Postgres数据库实现方案:

注意事项:

  • ON CONFLICT 只在 PostgreSQL 9.5 以上可用。
  • 做判断的字段必须有索引约束。例如Unique唯一索引做约束

方案1:

假如我们有这个app表,现在把其中一列name设置为unique

ALTER TABLE public.applications ADD CONSTRAINT applications_un UNIQUE (name);

然后我们去写代码

这个语句: 当数据存在时,什么都不做(DO NOTING)


const insertApp = await client.query(`INSERT INTO applications 
              (app_name, details ) 
              VALUES 
              ('${appName}', '${appDetail}') 
              ON CONFLICT ON CONSTRAINT applications_un  
              DO NOTHING;
              `);

方案2:

下面的语句有一样的效果,区别在于使用的是 name 字段,而不是约束的名字


INSERT INTO customers (app_name, details)
VALUES
 (
 'AAA',
 'BBBBBB'
 ) 
ON CONFLICT (name) 
DO NOTHING;

关于更新:如何实现,当app_name数据存在,就更新details呢??


INSERT INTO customers (app_name, details)
VALUES
 (
 'AAA',
 'BBBBBB'
 ) 
ON CONFLICT (name) 
DO
 UPDATE
   SET email = 'CCCCCCCC';
upsert

使用相同变量,多次执行这段逻辑,我们会发现只创建了一条,所以是成功的~~~

2.模糊查询+不区分大小写

举个栗子:从users表里查询details信息和user_name信息包含字母’xiaojin’

select * from users where lower(details) like '%xiaojin%' or lower(user_name) like '%xiaojin%' 

3. 查询某个字段是否属于多个值中的一个,或者说,等于多个值中的一个就筛选出来

举个栗子: 从users表查询type类型为Admin 或者 Super Admin

select * from users where "type" in ('Admin', 'Super Admin') 

4. 时间范围查询

举个栗子: 我想查询users表created_at字段从2023-08-01 00:00:00.000 到2023-08-10 00:00:00.000范围内的数据

select * from users where created_at between '2023-08-01 00:00:00.000' and '2023-08-10 00:00:00.000'

5. Postgres数据库如何使用dbever批量添加字段,设置类型

1. 新建一张表


2. 打开一个sql编辑器

3. 编写sql语句,下面给大家一些参考句子

ALTER TABLE public.users ADD id serial4 NOT NULL;

ALTER TABLE public.users ADD "user_name" varchar(255) NULL;

ALTER TABLE public.users ADD description varchar(255) NULL;

ALTER TABLE public.users ADD "type" varchar(255) NULL;

ALTER TABLE public.users ADD created_at timestamp(6) NULL;

ALTER TABLE public.users ADD updated_at timestamp(6) NULL;

ALTER TABLE public.users ADD created_by varchar(255) NULL;

ALTER TABLE public.users ADD updated_by varchar(255) NULL;


4. 执行语句

5. 建表成功


6. 一些常用的Mysql简单指令

丢弃指定的数据库,如果存在的话

DROP DATABASE IF EXISTS tangdoudou;

创建新的数据库

CREATE DATABASE tangdoudou;

进入数据库tangdoudou

    USE tangdoudou;

创建表

CREATE TABLE student (
  sid INT, # integer 整形

  name VARCHAR(8), # variable character可变字符

  sex  VARCHAR(1), # m->男 f->女

  score INT

);

向表中插入数据

INSERT INTO student VALUES('1','tom','F','95');

查询表中所有数据

SELECT * FROM student;

修改数据

UPDATE student SET name='lucy',score='100' WHERE sid='2';

删除数据

DELETE FROM student WHERE sid='3';

一些常用栗子:

丢弃指定的数据库tangdoudou,如果存在

DROP DATABASE IF EXISTS tangdoudou;

 

创建一个新的数据库

CREATE DATABASE tangdoudou;

DROP DATABASE IF EXISTS tangdoudou;

进入数据库tangdoudou

USE tangdoudou;

创建保存学生数据的表(编号、姓名、性别、分数);

DROP TABLE IF EXISTS student;

CREATE TABLE student (

  sid INT, # integer 整形

  name VARCHAR(8), # variable character可变字符

  sex  VARCHAR(1),# m->男 f->女

  score INT

);

往学生表中插入数据

INSERT INTO student VALUES('1','tom','m','85');

INSERT INTO student VALUES('2','kate','f','92');

INSERT INTO student VALUES('3','king','m','74');

修改编号为2的学员成绩为100,姓名为lucy;


UPDATE student SET name='lucy' WHERE sid='2';

UPDATE student SET score='100' WHERE sid='2';

删除编号为3的学员数据


DELETE FROM student WHERE sid='3';

查询学生表内容

SELECT * FROM student;

待继续补充

  • 今天就写到这里啦~小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/61565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生】K8S二进制搭建一

目录 一、环境部署1.1操作系统初始化 二、部署etcd集群2.1 准备签发证书环境在 master01 节点上操作在 node01与02 节点上操作 三、部署docker引擎四、部署 Master 组件4.1在 master01 节点上操 五、部署Worker Node组件 一、环境部署 集群IP组件k8s集群master01192.168.243.1…

【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT

1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网…

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop,您必须: 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境,必须安装 gnome-terminal:…

机器学习笔记 - YOLO-NAS 最高效的目标检测算法之一

一、YOLO-NAS概述 YOLO(You Only Look Once)是一种对象检测算法,它使用深度神经网络模型,特别是卷积神经网络,来实时检测和分类对象。该算法首次在 2016 年由 Joseph Redmon、Santosh Divvala、Ross Girshick 和 Ali Farhadi 发表的论文《You Only Look Once: Unified, Re…

Excel·VBA表格横向、纵向相互转换

如图:对图中区域 A1:M6 横向表格,转换成区域 A1:C20 纵向表格,即 B:M 列转换成每2列一组按行写入,并删除空行。同理,反向操作就是纵向表格转换成横向表格 目录 横向转纵向实现方法1转换结果 实现方法2转换结果 纵向转横…

ThreadLocal有内存泄漏问题吗

对于ThreadLocal的原理不了解或者连Java中的引用类型都不了解的可以看一下我的之前的一篇文章Java中的引用和ThreadLocal_鱼跃鹰飞的博客-CSDN博客 我这里也简单总结一下: 1. 每个Thread里都存储着一个成员变量,ThreadLocalMap 2. ThreadLocal本身不存储数据&…

Jenkins 自动化部署实例讲解,另附安装教程!

【2023】Jenkins入门与安装_jenkins最新版本_丶重明的博客-CSDN博客 也可以结合这个互补看 前言 你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相…

Android的Handler消息通信详解

目录 背景 1. Handler基本使用 2. Handler的Looper源码分析 3. Handler的Message以及消息池、MessageQueue 4. Handler的Native实现 4.1 MessageQueue 4.2 Native结构体和类 4.2.1 Message结构体 4.2.2 消息处理类 4.2.3 回调类 4.2.5 ALooper类 5. 总结&…

【千题百解】华为机试题:求最小公倍数

“所有命运馈赠的礼物,都已在暗中标好了价格” 👨🏻‍💻作者:鳄鱼儿 🍀个人简介 👨🏻‍🎓计算机专业硕士研究生 🦨阿里云社区专家博主 🌙CSDN博客专家 & Java领域优质创作者 题目 解题 Java实现 注意a和b相乘时可能超过int最大值。 import java.uti

python调用pytorch的clip模型时报错

使用python调用pytorch中的clip模型时报错:AttributeError: partially initialized module ‘clip’ has no attribute ‘load’ (most likely due to a circular import) 目录 现象解决方案一、查看项目中是否有为clip名的文件二、查看clip是否安装成功 现象 clip…

命令模式(Command)

命令模式是一种行为设计模式,可将一个请求封装为一个对象,用不同的请求将方法参数化,从而实现延迟请求执行或将其放入队列中或记录请求日志,以及支持可撤销操作。其别名为动作(Action)模式或事务(Transaction)模式。 Command is …

Spring Cloud Eureka 和 zookeeper 的区别

CAP理论 在了解eureka和zookeeper区别之前,我们先来了解一下这个知识,cap理论。 1998年的加州大学的计算机科学家 Eric Brewer 提出,分布式有三个指标。Consistency,Availability,Partition tolerance。简称即为CAP。…

初识性能测试

✏️作者:银河罐头 📋系列专栏:JavaEE 🌲“种一棵树最好的时间是十年前,其次是现在” 目录 什么是性能测试?为什么要做性能测试?性能测试常见术语及性能测试衡量指标并发用户数响应时间/平均响应…

华为Mate30报名鸿蒙 HarmonyOS 4.0.0.108 系统更新

华为 Mate 30 系列于 2019 年 11 月 1 日上市,包括 Mate 30 4G / 5G、Mate 30 Pro 4G / 5G、保时捷设计版 Mate30 共五款机型。华为 Mate 30 系列 5G 版搭载麒麟 990 5G 处理器,同时支持 SA 及 NSA 5G 双模,适配三大运营商的 5G / 4G / 3G / …

Mac显示隐藏文件夹

1、设置隐藏文件可见 defaults write com.apple.finder AppleShowAllFiles TRUE 2、killall Finder killall Finder

opencv的Mask操作,选择图片中感兴趣的区域

最近做目标检测任务的时候,需要对固定区域的内容进行检测,要用到opencv的mask操作,选择图片固定的区域 代码 import cv2 import numpy as npimg cv2.imread(data/images/smoking.png)# 弹出一个框 让你选择ROI | x,y是左上角的坐标 x,y,w,…

岩土工程仪器多通道振弦传感器信号转换器应用于隧道安全监测

岩土工程仪器多通道振弦传感器信号转换器应用于隧道安全监测 多通道振弦传感器信号转换器VTI104_DIN 是轨道安装式振弦传感器信号转换器,可将振弦、温度传感器信号转换为 RS485 数字信号和模拟信号输出,方便的接入已有监测系统。 传感器状态 专用指示灯方…

8.15锁的优化

1.锁升级(锁膨胀) 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 偏向锁:不是真的加锁,而是做了一个标记,如果有别的线程来竞争才会真的加锁,如果没有别的线程竞争就不会加锁. 轻量级锁:一个线程占领锁资源后,另一个线程通过自旋的方式反复确认锁是否被是否(这个过程比较…

10 种网页抓取而不会被阻止的方法

一、说明 在数据爬取中,你的scraper又被挡住了吗?这很令人沮丧。但我们冷静下来,看看业内别人的说法,并将与您分享十种简单的解决方案来获取您想要的数据。 以下是尝试在不被阻止的情况下成功进行网络抓取的简短概述:…

Netty使用和常用组件辨析

Netty 使用和常用组件 简述 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId <version>4.1.42.Final </version> <scope>compile</scope> </dependency> Netty 的优势 1 、 AP…