Mysql数据库(中)——增删改查的学习(全面,详细)
上一篇主要对查询操作进行了详细的总结,本篇主要对增删改操作以及一些常用的函数进行总结,包括流程控制等;以下的代码可以直接复制到数据库可视化软件中,便于理解和练习;
常用的操作:
#函数:
SELECT BIN(10),HEX(10),OCT(10);
#if(a,b,c)如果a为true返回吧,否则返回c
SELECT last_name,salary,if(salary>6000,'高工资','低工资') 'grades'
FROM employees;
SELECT last_name,commission_pct,if(commission_pct IS NOT NULL,commission_pct,0) 'commission_pct'
FROM employees;
SELECT last_name,salary,case when salary>=15000 then '很牛'
when salary>=10000 then '牛'
when salary>=8000 then '可以'
ELSE '草根' END 'details'
FROM employees;
#case when then when then when then else end:
#练习:查询部门号为10,20,30的员工信息,若部门号为10,则打印其工资的1.1倍,20号部门,工资的1.2倍,30号部门,1.3倍,其他1.4倍;
SELECT employee_id,department_id,last_name,salary,case department_id when 10 then salary*1.1
when 20 then salary*1.2
when 30 then salary*1.3
ELSE salary*1.4 END 'details'
FROM employees
WHERE department_id IN (10,20,30);
#常见的聚合函数:AVG,SUM,MAX,MIN,COUNT:其中max和min适合数值类型、字符串类型和日期类型的字段;
SELECT AVG(salary),SUM(salary)
FROM employees;
SELECT MAX(salary),last_name,employee_id
FROM employees;
#count查询对应属性有值的数据个数;不包含null的;
SELECT COUNT(salary),COUNT(employee_id),COUNT(department_id)
FROM employees;
#想知道表中有多少条记录:!
SELECT COUNT(*)
FROM employees;
#group by分组进行操作:
#例如查询每个部门的平均工资:
SELECT department_id,AVG(salary),SUM(salary)
FROM employees
GROUP BY department_id;
#练习:查询各个department_id,job_id的平均工资
SELECT job_id,department_id,AVG(salary)
FROM employees
GROUP BY job_id,department_id;
#对于group by的使用,select后面所要查询的东西,必须放在group by后面,group by后面的不一定非要写到select后面;如下:
SELECT job_id,department_id,AVG(salary)
FROM employees
GROUP BY department_id;#去掉了job_id,然后仔细想按照department_id分组,每一个部门是一条数据,job_id不会单独列出来,因此这样写是错误的;
#注意,如果使用了聚合函数,那么需要将where换成having;
SELECT department_id,MAX(salary)
FROM employees
GROUP BY department_id
HAVING MAX(salary)>10000;
#创建和管理表:创建方式:
CREATE DATABASE test1;
CREATE DATABASE if NOT EXISTS test2;
SHOW DATABASES;
#展示数据库表:
USE atguigudb;
SHOW TABLES;
#修改数据库结构:alter
#删除数据库:
DROP DATABASE if EXISTS test2;
SHOW DATABASES;
#创建表:
#方式一:
USE atguigudb
CREATE TABLE if NOT EXISTS myempl(
id INT,
emp_name VARCHAR(15),
hire_name DATE
);
SHOW TABLES;
#方式二:基于已有的表来创建:可以使用学过的select语句来进行创建,并且数据也是有的;
CREATE TABLE myempl2
AS
SELECT employee_id,last_name,salary
FROM employees;
DESC myempl2;
SELECT *FROM myempl2;
#修改表:
#添加一个字段:
ALTER TABLE myempl
ADD salary DOUBLE(10,2);
DESC myempl;
#可以自定义位置:
ALTER TABLE myempl
ADD phone_number VARCHAR(20) FIRST;
ALTER TABLE myempl
ADD mail VARCHAR(45) AFTER emp_name;
#修改一个字段:修改属性长度:
ALTER TABLE myempl
MODIFY emp_name VARCHAR(25);
#添加默认值:
ALTER TABLE myempl
MODIFY emp_name VARCHAR(25) DEFAULT 'aaa';
#改属性名:
ALTER TABLE myempl
CHANGE salary month_salary DOUBLE(10,2);
#删除一个字段:
ALTER TABLE myempl
DROP COLUMN mail;
#重命名表:
RENAME TABLE myempl
TO myempll;
SHOW TABLES;
#删除表
DROP TABLE myempl2;
#commit 和rollback;
#commit:提交数据,一旦执行commit,则数据永久的保存在了数据库中,意味着数据不可回滚;
#rollback:回滚数据,一旦执行则可以实现数据的回滚,回滚到最近的一次commit之后;
/*DDL和DML的说明:
DDL的操作一旦执行,不可以回滚;因为DDL执行完之后,接着会自动执行一次提交,这个set autocommit=false;不能影响DDL的提交;
DML的操作默认情况下执行后,也不可以回滚,但是如果在执行DML之前,执行了set autocommit=false;则该DML操作可以回滚;
*/
#演示delete from
COMMIT;
SELECT *FROM myempl2;
SET autocommit=FALSE;
DELETE FROM myempl2;#此时再看,表中已经没有了数据;
#此时rollback一下:
ROLLBACK;
SELECT *FROM myempl2;
#但是如果将上面SET autocommit=FALSE;去掉,就无法回滚,数据已经清除了;
/*对于truncate table 表名;这个会将表数据清空,但是不可回滚;
delete from 表名;这个操作也会将表清空,但是设置autocommit为false后,就可以回滚了;*/
#添加数据:
SHOW TABLES;
SELECT *FROM myempll;
ALTER TABLE myempll
CHANGE hire_name hire_data DATE;
ALTER TABLE myempll
CHANGE month_salary salary DOUBLE(10,2);
ALTER TABLE myempll
DROP COLUMN phone_number;
ALTER TABLE myempll
CHANGE emp_name NAME VARCHAR(25);
#方式一:一条一条添加数据:
INSERT INTO myempll VALUES(1,'TOM','2001-12-21',3400);#一定要按照属性顺序添加数据
INSERT INTO myempll(id,hire_data,salary,`name`)VALUES(2,'2002-12-19',4000,'Jerry');
INSERT INTO myempll(id,salary,`name`)VALUES(3,5000,'张三'),(4,6000,'李四');
#方式二:将查询的结果插入表中:
USE atguigudb;
INSERT INTO myempll(id,`name`,hire_data,salary)
SELECT employee_id,last_name,hire_date,salary
FROM employees
WHERE department_id IN(60,70);
SELECT*FROM myempll;
#修改数据:update
UPDATE myempll
SET hire_data='2002-12-07'
WHERE id=3;
#同时更改多个属性:
UPDATE myempll
SET hire_data='2002-1-09',salary=9000
WHERE id=4;
#删除数据:
DELETE FROM myempll
WHERE id=1;
#数据类型:
/*decimal要比double更精确一些,double类型会出现精度损失,但是decimal不会出现精度损失;
日期类型:DATE类型,‘XXXX-XX-XX’年月日类型;
TIME类型,‘HH-MM-SS’时分秒类型,此处小时可以大于24;
DATETIME类型:年月日时分秒;
相关文章:
Mysql数据库(中)——增删改查的学习(全面,详细)
上一篇主要对查询操作进行了详细的总结,本篇主要对增删改操作以及一些常用的函数进行总结,包括流程控制等;以下的代码可以直接复制到数据库可视化软件中,便于理解和练习; 常用的操作: #函数: S…...

test dbtest-03-对比 Liquibase、flyway、dbDeploy、dbsetup
详细对比 Liquibase、flyway、dbDeploy、dbsetup,给出对比表格 下面是一个简要的对比表格,涵盖了 Liquibase、Flyway、dbDeploy 和 DbSetup 这四个数据库变更管理工具的一些主要特点。 特点/工具LiquibaseFlywaydbDeployDbSetup开发语言Java࿰…...
力导向图与矩阵排序
Graph-layout force directed(力导向图布局)是一种用于可视化网络图的布局算法。它基于物理模型,模拟了图中节点之间的相互排斥和连接弹性,以生成具有良好可读性和美观性的图形布局。 在力导向图布局中,每个节点被视为…...

word 常用功能记录
word手册 多行文字对齐标题调整文字间距打钩方框插入三线表插入参考文献自动生成目录 多行文字对齐 标题调整文字间距 打钩方框 插入三线表 插入一个最基本的表格把整个表格设置为无框线设置上框线【实线1.5磅】设置下框线【实线1.5磅】选中第一行,设置下框线【实线…...

C#线程基础(线程启动和停止)
目录 一、关于线程 二、示例 三、生成效果 一、关于线程 在使用多线程前要先引用命名空间System.Threading,引用命名空间后就可以在需要的地方方便地创建并使用线程。 创建线程对象的构造方法中使用了ThreadStart()委托,当线程开始执行时,…...
如何利用ChatGPT来提高编程效率
如何利用ChatGPT来提高编程效率 在当今这个信息爆炸和技术快速发展的时代,程序员们面临着巨大的压力,既要保证代码的质量,又要提高工作效率。幸运的是,人工智能(AI)正在改变我们编写和维护代码的方式,而OpenAI的ChatGPT是其中的佼佼者。本文将讨论如何利用ChatGPT以及结合…...

java智慧工地源码,互联网+建筑工地,实现对工程项目内人员、车辆、安全、设备、材料等的智能化管理
智慧工地全套源码,微服务JavaSpring Cloud UniApp MySql;支持多端展示(大屏端、PC端、手机端、平板端)演示自主版权。 智慧工地概念: 智慧工地就是互联网建筑工地,是将互联网的理念和技术引入建筑工地&…...
创建并使用自己的C++模块(Windows10+MSVC)
module是C20种新引入的特性,关于module的介绍和好处,网上已有大量的文章,此处也不再赘述,本文仅记录在个人的环境上创建一个简单的module并使用这个module。 环境同上一篇文章( windows10,MSVC C工具链&am…...

Spring Boot 2.7.11 集成 GraphQL
GraphQL介绍 GraphQL(Graph Query Language)是一种用于API的查询语言和运行时环境,由Facebook于2012年创建并在2015年公开发布。与传统的RESTful API相比,GraphQL提供了更灵活、高效和强大的数据查询和操作方式。 以下是GraphQL…...

软件工程期末总结
软件工程期末总结 软件危机出现的原因软件生命周期软件生命周期的概念生命周期的各个阶段 软件开发模型极限编程 可行性研究与项目开发计划需求分析结构化分析的方法结构化分析的图形工具软件设计的原则用户界面设计结构化软件设计面向对象面向对象建模 软件危机出现的原因 忽视…...

MidTool图文创作-GPT-4与DALL·E 3的结合
GPT-4与DALLE 3的结合 GPT-4是由OpenAI开发的最新一代语言预测模型,它在前代模型的基础上进行了大幅度的改进,不仅在文本生成的连贯性、准确性上有了显著提升,还在理解复杂语境和执行多步骤指令方面表现出了更高的能力。而DALLE 3则是一个创…...
Python将两个或多个列表合并为一个列表,并根据每个输入列表中的元素的位置将其组合在一起
将两个或多个列表合并为一个列表,并根据每个输入列表中的元素的位置将其组合在一起。 这个需求在实际开发过程中应该说非常常见,当然python也给我们内置了相关方法! zip(*iterables, strictFalse) 在多个迭代器上并行迭代,从每…...

数模混合SoC芯片中LEF2Milkyway的golden flow
在数模混合芯片中的项目中,特别是数字模块很少甚至只有一个简单的数字控制逻辑时,我们要做数字模块的后端实现时,通常模拟那边会问我们实现需要他们提供哪些数据。 通常来说,我们可以让模拟设计提供数字模块的GDS或LEF文件即可。…...

Five tips to make your essay flow
This post was written by Sydney Nicholson, a second-year master’s student in the English Department. Dear writer, Have you ever wondered what it takes to make an essay “flow”? In my time as a writing center tutor, I’ve noticed that this is one of th…...

linux驱动(二):led补
本文主要探讨s5pv210的led驱动相关知识,包括驱动主次设备注册和取消,udev(mdev)机制,静态和动态映射操作寄存器。 字符设备驱动注册 老接口(register_chrdev) static inline int register_chrdev(unsigned int major, const char *n…...

性能测试-jmeter:安装 / 基础使用
一、理解jmeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具,主要用于模拟大量用户并发访问目标服务器,以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行请…...

数据仓库-数仓优化小厂实践
一、背景 由于公司规模较小,大数据相关没有实现平台化,相关的架构都是原生的Apache组件,所以集群的维护和优化都需要人工的参与。根据自己的实践整理一些数仓相关的优化。 二、优化 1、简易架构图 2、ODS层优化 2.1 分段式解析 随着业务增长…...

uniapp中uview组件丰富的Code 验证码输入框的使用方法
目录 基本使用 #自定义提示语 #保持倒计时 API #Props #Methods #Event 基本使用 通过ref获取组件对象,再执行后面的操作,见下方示例。 通过seconds设置需要倒计的秒数(默认60)通过ref调用组件内部的start方法,开始倒计时通过监听cha…...

md文件图片上传方案:Github+PicGo 搭建图床
文章目录 1. PicGo 下载2. 配置Github3. 配置PicGo4. PicGo集成Typora4.1 picGo监听端口设置 5. 测试 1. PicGo 下载 下载地址:https://molunerfinn.com/PicGo/ 尽量下载稳定版本 2. 配置Github 1. 创建一个新仓库,用于存放图片 2. 生成一个token&a…...

从零开始 - 在Python中构建和训练生成对抗网络(GAN)模型
生成对抗网络(GANs)是一种强大的生成模型,可以合成新的逼真图像。通过完整的实现过程,读者将对GANs在幕后的工作原理有深刻的理解。本教程首先导入必要的库并加载将用于训练GAN的Fashion-MNIST数据集。然后,提供了构建…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...