Mysql-CRUD(增删查改)

CRUD : Create( 创建 ), Retrieve( 读取 ) Update( 更新 ) Delete (删除)

1.Create

语法:
INSERT [ INTO ] table_name
[( column [, column ] ...)]
VALUES (value_list) [, (value_list)] ...

 1.1 全列插入+单行数据

insert into book values('Java核心技术','Cay S.Horstman',56.43,'计算机技术');

 1.2 多行数据+指定列

insert into product(name,price,storage) values('学生书包',18.91,101),('铅笔',20.91,155);

以上插入了两行,指定name,price,storage三列插入数据。 

注意:当数据里有主键冲突或唯一键冲突时,可以使用on duplicate key来进行更新操作。

INSERT INTO product (name,price,storage ) VALUES ('学生书包',18.91,101 )
ON DUPLICATE KEY UPDATE price = 18.91 , name = '学生书包 ' ;
-- ON DUPLICATE KEY 当发生重复 key 的时候

1.3 替换

REPLACE INTO product (name,price,storage VALUES ('学生书包',18.91,101 );
  •  表中没有数据,数据被插入。
  • 表中有冲突数据,删除数据后重新插入。

1.4 插入查询结果 

语法: 

INSERT INTO table_name [(column [, column ...])] SELECT ...  

-- duplicate_table 的去重数据插入到 no_duplicate_table
INSERT INTO no_duplicate_table SELECT DISTINCT * FROM duplicate_table;

2.Retrieve 

语法:  

SELECT
[DISTINCT] {* | {column [, column] ...}
[FROM table_name]
[WHERE ...]
[ORDER BY column [ASC | DESC], ...]
LIMIT ...

2.1 全列查询 

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。

SELECT * FROM table_name;  

2.2 指定列查询 

-- 指定列的顺序不需要按定义表的顺序来

SELECT id, name, english FROM exam_result; 

2.3 为指定列起别名 

语法: 

SELECT column [AS] alias_name [...] FROM table_name;  

2.4 结果去重 

 distinct:对查询结果具有去重作用。

SELECT DISTINCT math FROM exam_result; 

 2.5 where条件

比较运算符:

运算符说明
>,>=,<,<=
大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>
等于, NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <>
不等于
BETWEEN a0 AND a1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN (option, ...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
NULL
IS NOT NULL
不是 NULL
LIKE
模糊匹配。 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符

逻辑运算符:

运算符说明
AND
多个条件必须都为 TRUE(1) ,结果才是 TRUE(1)
OR
任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT
条件为 TRUE(1) ,结果为 FALSE(0)

2.6 结果排序 

语法:  

-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...]
ORDER BY column [ASC|DESC], [...];

编写一个SQL查询,获取Employee表中第二高的薪水(Salary) 

select Salary as SecondHighestSalary
from Employee
order by Salary
desc
limit 1 
offset 1

2.7 筛选分页查询 

语法:

-- 起始下标为 0
-- 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;
-- s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;  

建议:对未知表进行查询时,最好加一条 LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死 

 3.Update

语法:
UPDATE table_name SET column = expr [, column = expr ...]
[WHERE ...] [ORDER BY ...] [LIMIT ...]

对查询到的结果进行列值更新 

update book set price=61 where name='Java核心技术'; 

4.Delete 

语法: 

DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...] 

delete from product where price>60 or storage<200; 

 4.1 删除整表数据

DELETE FROM table_name 

 注意:

  • 假如数据中有自增类型的数据,那么删除了整表的数据后,自增不会变为0,而是插入后继续增加。

4.2 截断表

语法:

TRUNCATE [TABLE] table_name  

1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是 TRUNCATE 在删除数据的时候,并不经过真正的事物,所以无法回滚
3. 会重置 AUTO_INCREMENT

 

5 聚合函数 

函数说明
COUNT([DISTINCT] expr)
返回查询到的数据的 数量
SUM([DISTINCT] expr)
返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)
返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)
返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)
返回查询到的数据的 最小值,不是数字没有意义

SELECT COUNT(*) FROM students;  --统计全班有多少学生

SELECT SUM(math) FROM exam_result;  --统计数学成绩总分
SELECT AVG(chinese + math + english) -- 平均总分 FROM exam_result;  --统计平均总分
SELECT MAX(english) FROM exam_result;  --返回英语最高分
SELECT MIN(math) FROM exam_result WHERE math > 70;  --返回数学大于70分的最低分

6.group by子句 

select中使用group by 子句可以对指定列进行分组查询 

select column1, column2, .. from table group by column;  

select deptno,avg(sal),max(sal) from EMP group by deptno; --显示每个部门的平均工资和最高工资 

 7.各个关键词执行顺序

SQL查询中各个关键字的执行先后顺序 from > on> join > where > group by > with > having > select > distinct > order by > limit

 

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

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

相关文章

java 访问sqlserver 和 此驱动程序不支持jre1.8错误

sqlserver数据如下&#xff1b; TestSQL.java&#xff1b; import java.sql.*;public class TestSQL {public static void main(String[] args) throws ClassNotFoundException, SQLException {String driverName "com.microsoft.sqlserver.jdbc.SQLServerDriver";…

nacos集群部署

GitHub - nacos-group/nacos-k8s: This project contains a Nacos Docker image meant to facilitate the deployment of Nacos on Kubernetes using StatefulSets. 需要修改两个文件 --- apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: project-guli…

vue-router的编程式导航有哪些方法?

Vue Router 提供了几种编程式导航的方法&#xff0c;主要包括以下几种&#xff1a; router.push(location, onComplete?, onAbort?)&#xff1a;跳转到新的 URL&#xff0c;类似于 <router-link> 的 to 属性。可以指定路径或者命名的路由。 router.replace(location, …

[ATC复盘] abc329 20231118

[ATC复盘] abc329 20231118 总结A - Spread1. 题目描述2. 思路分析3. 代码实现 B - Next1. 题目描述2. 思路分析-3. 代码实现 C - Count xxx1. 题目描述2. 思路分析3. 代码实现 D - Election Quick Report2. 思路分析3. 代码实现 E - Stamp2. 思路分析3. 代码实现 F - Colored…

git基本操作(配图超详细讲解)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 创建git本地仓库 配置仓库 认识工作区&#xff0c;暂存区&#xff0c;版本库 修改文件 版本回退 撤销修改 删除文件 创建git本地仓库 要提前说的是&#xff0c;仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂…

内网穿透的应用-通过内网穿透快速搭建公网可访问的Spring Boot接口调试环境

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

acme在同一台服务器上设置多个Ali_key实现自动ssl申请和续期

在同一台服务器上设置多个Ali_key&#xff0c;您可以按照以下步骤进行操作&#xff1a; 首先&#xff0c;确保您已经安装了acme.sh工具。如果没有安装&#xff0c;请先安装acme.sh&#xff0c;您可以使用以下命令安装acme.sh&#xff1a; curl https://get.acme.sh | sh安装完…

windows nodejs 15.0.0下载安装

下载 Node v15.0.0 (Current) | Node.js (nodejs.org) 下载地址 https://nodejs.org/dist/v15.0.0/node-v15.0.0-x64.msi 安装 双击运行 等待安装完成 确认安装成功 管理员运行cmd 查看版本号

AIGC: 关于ChatGPT这个智能工具带来的几点思考

ChatGPT的出现 2022年11月底&#xff0c;ChatGPT 上线&#xff0c;引爆 AI 圈 和 科技圈&#xff0c;2023年春节后, 人人都开始关注并讨论这项新技术它是 OpenAI 研发的智能聊天工具, 基于GPT语言模型&#xff0c;模拟人类的对话方式默认只能用文字进行交互&#xff0c;理解多…

数据结构初阶leetcodeOJ题(二)

目录 第一题 思路&#xff1a; 第二题 思路 第三题 描述 示例1 思路 总结&#xff1a;这种类似的题&#xff0c;都是用快慢指针&#xff0c;相差一定的距离然后输出慢指针。 第一题 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val…

工程化实战 - 前端AST(进阶)

###脚手架 *快速自动化搭建启动工具 目标: ####第一步:处理依赖 npm i path npm i chalk4.1.0 npm i fs-extra npm i inquirer8.2.2 npm i commander npm i axios npm i download-git-repo //ora easy-table figlet ####第二步:处理工程入口 ####3.加入命令交互 交互好帮手…

【计算机网络】TCP协议

文章目录 TCP协议TCP的结构TCP的特点 TCP如何保证可靠传输确认应答&#xff08;可靠机制&#xff09;超时重传&#xff08;可靠机制&#xff09;连接管理&#xff08;可靠机制&#xff09;滑动窗口&#xff08;效率机制&#xff09;流量控制&#xff08;可靠机制&#xff09;拥…

window系统vscode 编译wvp前端代码

下载代码 wvp-GB28181-pro: WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台&#xff0c;负责实现核心信令与设备管理后台部分&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联&#xff0c;支持rtsp/rtmp等…

zsh和ohmyzsh安装指南+插件推荐

文章目录 1. 安装指南2. 插件配置指南3. 参考信息 1. 安装指南 1. 安装 zsh sudo apt install zsh2. 安装 Oh My Zsh 国内访问GitHub sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"这将安装 Oh My Zsh 和所…

Xrdp+Cpolar实现远程访问Linux Kali桌面

XrdpCpolar实现远程访问Linux Kali桌面 文章目录 XrdpCpolar实现远程访问Linux Kali桌面前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于…

工作记录-------双 11场景下库存更新 SQL 优化

背景&#xff1a;双 11 期间&#xff0c;系统的行为是要尽可能多地卖出商品&#xff0c;尽可能多地收订单&#xff0c;又不能超过库存。 在这种高并发、大流量场景下&#xff0c;整个系统的瓶颈点必然在数据库上&#xff0c;本篇文章就库存更新这一场景下讨论如何优化事务 SQL。…

力扣面试经典150题详细解析

刷题的初心 众所周知&#xff0c;算法题对于面试大厂是必不可缺的一环&#xff0c;而且对于提高逻辑思维能力有着不小的提升。所以&#xff0c;对于程序员来讲&#xff0c;无论刚入行&#xff0c;还是从业多年&#xff0c;保持一个清醒的头脑&#xff0c;具备一个良好的设计思…

SIMD单指令多数据(并行计算)

单指令多数据&#xff08;SIMD&#xff09;是一种并行计算的技术&#xff0c;允许一个指令同时对多个数据元素进行操作。这对于向量计算和多媒体应用非常有用&#xff0c;因为它们经常涉及到对大块数据执行相同的操作。 在 SIMD 中&#xff0c;数据通常被组织成“向量”&#…

从傅里叶变换,到短时傅里叶变换,再到小波分析(CWT),看这一篇就够了(附MATLAB傻瓜式实现代码)

本专栏中讲了很多时频域分析的知识&#xff0c;不过似乎还没有讲过时频域分析是怎样引出的。 所以本篇将回归本源&#xff0c;讲一讲从傅里叶变换→短时傅里叶变换→小波分析的过程。 为了让大家更直观得理解算法原理和推导过程&#xff0c;这篇文章将主要使用图片案例。 一…