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

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&#xff0…...

力导向图与矩阵排序

Graph-layout force directed(力导向图布局)是一种用于可视化网络图的布局算法。它基于物理模型,模拟了图中节点之间的相互排斥和连接弹性,以生成具有良好可读性和美观性的图形布局。 在力导向图布局中,每个节点被视为…...

word 常用功能记录

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

C#线程基础(线程启动和停止)

目录 一、关于线程 二、示例 三、生成效果 一、关于线程 在使用多线程前要先引用命名空间System.Threading,引用命名空间后就可以在需要的地方方便地创建并使用线程。 创建线程对象的构造方法中使用了ThreadStart()委托,当线程开始执行时&#xff0c…...

如何利用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数据集。然后,提供了构建…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...