数据库操作系列-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) 
DOUPDATESET 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;

待继续补充

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

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

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端js--扩展卡片

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"stylesheet" href"…

构建器/建造者/构建者模式(C++)

定义 将一个复杂对象的构建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。 应用场景 在软件系统中&#xff0c;有时候面临着“一个复杂对象”的创建工作&#xff0c;其通常由各个部分的子对象用一定的算法构成;由于需求的变化&#xff0c;这个复杂对象…

centos7 ‘xxx‘ is not in the sudoers file...

如题 执行命令输入密码后时报错&#xff1a; [sudo] password for admin &#xff08;我的账户&#xff09;原因&#xff0c;当前用户还没有加入到root的配置文件中。 解决 vim打开配置文件&#xff0c;如下&#xff1a; #切换到root用户 su #编辑配置文件 vim /etc/sudoe…

AMASS database

AMASS是一个由不同的光学标记运动捕捉数据集统一表示在一个公共框架和参数化下的大型人体运动数据库。它包含了超过40小时的运动数据&#xff0c;涵盖了300多个主体和11000多个运动。它使用了SMPL人体模型&#xff0c;它是一种基于混合形状和姿态空间的生成式人体模型&#xff…

【python】绘图代码模板

【python】绘图代码模板 pandas.DataFrame.plot( )画图函数Seaborn绘图 -数据可视化必备主题样式导入数据集可视化统计关系散点图抖动图箱线图小提琴图Pointplot群图 可视化数据集的分布绘制单变量分布柱状图直方图 绘制双变量分布Hex图KDE 图可视化数据集中的成对关系 好看的图…

机器学习中的人生启示:“没有免费的午餐”定理(NFL)的个人发展之道→探讨感觉和身边其他人有差距怎么办?

文章目录 1 引言2 探究NFL定理的含义3 将NFL定理应用于个人发展4 探索个人兴趣和天赋5 结论 1 引言 机器学习中的“没有免费的午餐”定理&#xff08;NFL&#xff09;是一条深具启示意义的原则。该定理表明&#xff0c;没有一种算法可以在所有问题上都表现最好。在机器学习领域…

FPGA开发:音乐播放器

FPGA开发板上的蜂鸣器可以用来播放音乐&#xff0c;只需要控制蜂鸣器信号的方波频率、占空比和持续时间即可。 1、简谱原理 简谱上的4/4表示该简谱以4分音符为一拍&#xff0c;每小节4拍&#xff0c;简谱上应该也会标注每分钟多少拍。音符时值对照表如下图所示&#xff0c;这表…

软件工程专业应该学什么?

昨天&#xff0c;我朋友的孩子报考了软件工程专业&#xff0c;问我软件工程到底学啥&#xff1f;所以我给他开列了一个书单。 现在高校开了一堆花名头的专业&#xff1a; 偏技术类&#xff1a;云计算、大数据、人工智能、物联网 偏应用类&#xff1a;电子商务、信息管理 但我个…

MySQL|查看事务加锁情况

文章目录 使用information_schema数据库中的表获取锁信息INNODB_TRXINNODB_LOCKSINNODB_LOCK_WAITS 使用SHOW ENGINE INNODB STATUS获取信息补充 使用information_schema数据库中的表获取锁信息 在information_schema数据库中&#xff0c;有几个与事务和锁紧密相关的表 INNOD…

3个命令定位CPU飙高

top 指令找出消耗CPU最厉害的那个进程的pid top -H -p 进程pid 找出耗用CPU资源最多的线程pid printf ‘0x%x\n’ 线程pid 将线程pid转换为16进制 结合jstack 找出哪个代码有问题 jstack 进程pid | grep 16进制的线程pid -A 多少行日志 jstack 进程pid | grep 16进制的线程…

Source Insight_突出显示对选定字符的引用

1、突出显示对选定字符的引用 在Source Insight中&#xff0c;当我们选中一个函数或者变量的时候&#xff0c;关于它的所有引用地方都高亮显示&#xff0c;想要实现效果如下。 2、配置方法 (1)点击"Options"→“File Type options...” (2)勾选“Highlight referenc…

Python - 【socket】 客户端client重连处理简单示例Demo(一)

一. 前言 在Python中&#xff0c;使用socket进行网络通信时&#xff0c;如果连接断开&#xff0c;可以通过以下步骤实现重连处理 二. 示例代码 1. 定义一个函数&#xff0c;用于建立socket连接 import socketdef connect_socket(host, port):while True:try:# 建立socket连…

CMake:检测python解释器和python库

CMake:检测python解释器和python库 导言检测python解释器CMakeLists.txt输出附录 检测python库项目结构CMakeLists.txt相关源码附录 导言 python是一种非常流行的语言。许多项目用python编写的工具&#xff0c;从而将主程序和库打包在一起&#xff0c;或者在配置或构建过程中使…

当服务器域名出现解析错误的问题该怎么办?

​  域名解析是互联网用户接收他们正在寻找的域的地址的过程。更准确地说&#xff0c;域名解析是人们在浏览器中输入时使用的域名与网站IP地址之间的转换过程。您需要站点的 IP 地址才能知道它所在的位置并加载它。但&#xff0c;在这个过程中&#xff0c;可能会出现多种因素…

小白解密ChatGPT大模型训练;Meta开源生成式AI工具AudioCraft

&#x1f989; AI新闻 &#x1f680; Meta开源生成式AI工具AudioCraft&#xff0c;帮助用户创作音乐和音频 摘要&#xff1a;美国公司Meta开源了一款名为AudioCraft的生成式AI工具&#xff0c;可以通过文本提示生成音乐和音频。该工具包含三个核心组件&#xff1a;MusicGen用…

Win32 EditControl多行文本框自动换行,并在添加新行时自动将光标移到末尾

【文本框属性设置】 设为多行文本框&#xff1a;MultilineTrue 允许按回车键换行&#xff1a;Want ReturnTrue 自动换行&#xff1a;Auto HScrollFalse 在最后一行按回车键&#xff0c;自动向上滚动&#xff1a;Auto VScrollTrue 显示垂直滚动条&#xff1a;Vertical ScrollTru…

maven的下载与安装

文章目录 1 官网下载地址2 设置环境变量3 设置仓库地址4 添加阿里云的中央镜像 1 官网下载地址 https://maven.apache.org/ 下载 2 设置环境变量 MAVEN_HOME PATH mvn -v验证 3 设置仓库地址 仓库地址 4 添加阿里云的中央镜像 阿里云中央镜像

【探索Linux】—— 步步学习强大的命令行工具 P.1(Linux简介)

目录 前言 一、Linux简介 二、linux的不同发行版本 三、Linux的开源性质 四、Linux的特点 五、Linux代码演示&#xff08;仅供参考&#xff09; 总结 前言 前面我们讲了C语言的基础知识&#xff0c;也了解了一些数据结构&#xff0c;并且讲了有关C的一些知识&#xff…

Redis

Redis进阶 讨论问题&#xff1a; 数据存放的位置有哪些&#xff08;磁盘&#xff0c;内存&#xff0c;数据库&#xff09; 为什么做缓存&#xff1f; 速度&#xff1a;内存 >10 倍固态硬盘 > 10 倍机械硬盘 一、SpringBoot操作Redis 1、 添加redis依赖 spring Boo…

Java源码规则引擎:jvs-rules 8月新增功能介绍

JVS-rules是JAVA语言下开发的规则引擎&#xff0c;是jvs企业级数字化解决方案中的重要配置化工具&#xff0c;核心解决业务判断的配置化&#xff0c;常见的使用场景&#xff1a;金融信贷风控判断、商品优惠折扣计算、对员工考核评分等各种变化的规则判断情景。 8月是收获的季节…