第10章:数据处理增删改

news2024/11/27 17:49:05

一、插入数据

CREATE TABLE emp1 (
  id int(11) ,
  name varchar(15) ,
  hire_date date ,
  salary double(10,2) 
)

1.添加一条数据

①没有指明添加的字段,一定按照顺序添加

insert into emp1
values(1,'wang','2000-4-4',5900)

②指明添加的字段(推荐)

insert into emp1(id,name)
values(1,'li')

没有赋值的字段,值为null

③添加多条记录—效率高

insert into emp1(id,name)
values
(1,'li'),
(2,'liu'),
(3,'rui')

字符和日期要有单引号

2.查询的结果插入到表中

insert into 表名

select 语句

插入的字段的数量和表名的数量要对应,并且查询的字段长度不能高于添加的字段长度

insert into emp1(id,name,salary,hire_date)
select employee_id,last_name,salary,hire_date
from employees
where employees.department_id in (70,60);

二、更新数据

update 表名

set 字段=xxx

where 条件

1.把id=104的员工的雇佣日期修改为当前的日期

update emp1

set hire_date=now()

where id=104

2.没有where就是批量修改数据

3.把Jim的雇佣日期改为2008-08-08,工资改为5600

update emp1

set hire_date='2008-08-08',salary=5600

where name='Austin'

4.将表中name包含字符a的工资提薪20%

update emp1

set salary=salary*1.2

where name like '%a%'

5.修改数据失败:约束的影响

三、删除数据

1.格式

delete from 表名

where 条件

2.删除数据可能因为约束的影响,导致删除失败

DML默认不回滚。执行之前设置了 set autocommit = false,可以实现回滚。到最近的commit之后。

四、MySQL9新特性:计算列

1.应用:a的列值为1,b的列值为2,c列的值是a+b

2.举例:定义数据表tb1,然后定义字段id,字段a,字段b和字段c。其中c是计算列,计算a+b的值

create table tb1(

id int,

a int,

b int,

c int generated always as (a+b) virtual

);

插入

insert into tb1(a,b)

values(100,200);

五、综合案例

# 1、创建数据库test01_library

create database if not exists test01_library character set ‘utf8’;

# 2、创建表 books,表结构如下:

 

use test01_library;

create table books (

id int,

name varchar(50),

authors varchar(100),

price float,

pubdate year,

note varchar(100),

num int

);

# 3、向books表中插入记录

 

# 1) 不指定字段名称,插入第一条记录

insert into books

values(1,'Tal of AAA','Dickes',23,'1995','novel',11);

# 2) 指定所有字段名称,插入第二记录

insert into books(id,name,authors,price,pubdate,note,num)

values(2,'EmmaT','Jane lura',35,'1993','joke',22);

# 3) 同时插入多条记录《剩下的所有记录)

insert into books(id,name,authors,price,pubdate,note,num)

values

(3,'Story of Jane','Jane Tim',40,'2001','novel',0),

(4,'Lovey Day ','George Byron',20,'2005','novel',30),

(5,'Old land','Honore Blade',35,'2010','law',0),

(6,'The Battle','Upton Sara',35,'1999','medicine',40),

(7,'Rose Hood','Richard haggard',35,'2008','cartoon',28);

# 4、将小说类型(nove1)的书的价格都增加5.

update books

set price = price+5

where note='novel'

# 5、将名称为EmmaT的书的价格改为40.并将说明改为drama.

update books

set price=40,note='drama'

where name='EmmaT'

# 6、删除库存为0的记录。

delete from books

where num=0

# 7、统计书名中包含a字母的书

select name

from books

where name like '%a%'

# 8、统计书名中包含a字母的书的数量和库存总量

select count(*),sum(num)

from books

where name like '%a%'

# 9、找出“novel"类型的书。按照价格降序排列

select name,note,price

from books

where note='novel'

order by price desc;

# 10、查询图书信息,按照库存量降序排列,如果库存量相同的按照note升序排列

select name,num,note

from books

order by num desc,note asc

# 11、按照note分类统计书的数量(种类)

select note,count(*)

from books

group by note;

# 12、按照note分类统计书的库存量,显示库存超过30本的

select note,sum(num)

from books

group by note having sum(num)>30;

# 13、查询所有图书。每页显示5本。显示第二页

limit(页码数-1)*页数,页数

select *

from books

limit 5,5;

# 14、按照note分类统计书的库存量,显示库存量最多的

select note,sum(num) as "all_num"

from books

group by note

order by all_num desc

limit 0,1

# 15、查询书名达到10个字符的书。不包括里面的空格

select *

from books

where char_length(replace(name,' ',''))>10

# 16、查询书名和类型,其中note值为novel显示小说,law显示法律,medicine显示医药,cartoon最示卡通,joke显示笑话

select name,

case note

when 'novel' then'小说'

when 'law' then'法律'

when 'medicine' then'医药'

when 'cartoon' then'卡通'

when 'joke' then'笑话'

else note

end as "note"

from books

# 17、查询书名、库存。其中num值超过30本的,显示滞销,大于0并低于10的,显示畅销,为0的显示需要无货

select name,num,

case when num>30 then'滞销'

when num>0 and num<10 then'畅销'

when num=0 then'无货'

else '正常'

end as "num_degree"

from books

# 18、统计每一种note的库存量。 并合计总量

select IFNULL(note,'合计总数') as note,sum(num) as "库存量"

from books

group by note with rollup

# 19、统计每一种note的数量(种类),并合计总量

SELECT IFNULL(note,'合计总数') AS note,COUNT(*) FROM books GROUP BY note WITH ROLLUP;

# 20、统计库存量前三名的图书

select *

from books

order by num desc

limit 0,3

# 21、找出最早出版的一本书

select name,min(pubdate)

from books

SELECT * FROM books ORDER BY pubdate ASC LIMIT 0,1;

# 22、找出novel中价格最高的一本书

select name,max(price)

from books

where note='novel'

SELECT * FROM books WHERE note = 'novel' ORDER BY price DESC LIMIT 0,1;

# 23、找出书名中字数最多的一本节,不含空格

select name

from books

order by char_length(replace(name,' ','')) desc

limit 0,1

六、练习

练习1

#1. 创建数据库dbtest11

CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8';

#2. 运行以下脚本创建表my_employees

USE dbtest11;

CREATE TABLE my_employees(

id INT(10),

first_name VARCHAR(10),

last_name VARCHAR(10),

userid VARCHAR(10),

salary DOUBLE(10,2)

);

CREATE TABLE users(

id INT,

userid VARCHAR(10),

department_id INT

);

#3. 显示表my_employees的结构

desc my_employees

 

#4. my_employees表中插入下列数据

insert into my_employees(id,first_name,last_name,userid,salary)

values

(1,'patel','Ralph','Rpatel',895),

(2,'Dancs','Betty','Bdancs',860),

(3,'Biri','Ben','Bbiri',1100) ,

(4,'Newman','Chad','Cnewman',750) ,

(5,'Ropeburn','Audrey','Aropebur',1550)

#5. users表中插入数据

 

insert into users(id,userid,department_id)

values

(1,'Rpatel',10),

(2,'Bdancs',10),

(3,'Bbiri',20),

(4,'Cnewman',30),

(5,'Aropebur',40)

#6. 3号员工的last_name修改为“drelxer”

update my_employees

set last_name='drelxer'

where id = 3

#7. 将所有工资少于900的员工的工资修改为1000

update my_employees

set salary = 1000

where salary<900

#8. useridBbiriuser表和my_employees表的记录全部删除

delete e,u

from my_employees e

join users u on e.userid=u.userid

where u.userid='Bbiri'

#9. 删除my_employeesusers表所有数据

delete my_employees;

delete users;

#10. 检查所作的修正

SELECT * FROM my_employees;

SELECT * FROM users;

#11. 清空表my_employees

truncate table my_employees

练习2

# 1. 使用现有数据库dbtest11

use dbtest11;

# 2. 创建表格pet

 

create table pet(

name varchar(20),

owner varchar(20),

species varchar(20),

sex char(1),

birth year,

death year

);

# 3. 添加记录

 

insert into pet(name,owner,species,sex,birth,death)

values

('Fluffy','harold','Cat','f','2003','2010'),

('Claws','gwen','Cat','m','2004',null),

('Buffy',null,'Dog','f','2009',null),

('Fang','benny','Dog','m','2000',null),

('bowser','diane','Dog','m','2003','2009'),

('Chirpy',null,'Bird','f','2008',null)

# 4. 添加字段:主人的生日owner_birth DATE类型。

alter table pet

add owner_birth DATE AFTER owner

 

# 5. 将名称为Claws的猫的主人改为kevin

update pet

set owner='kevin'

where name='Claws' and species='cat'

# 6. 将活着的狗的主人改为duck

update pet

set owner='duck'

where species='Dog' and death is null;

# 7. 查询没有主人的宠物的名字;

select name

from pet

where owner is null

# 8. 查询已经死了的cat的姓名,主人,以及去世时间;

select name,owner,species,death

from pet

where species='Cat' and death is not null;

# 9. 删除已经死亡的狗

delete from pet

where species='Dog' and death is not null

# 10. 查询所有宠物信息

select * from pet

练习3

# 1. 使用已有的数据库dbtest11

use dbtest11;

# 2. 创建表employee,并添加记录

 

create table employee(

id int,

name varchar(30),

sex varchar(2),

tel varchar(20),

addr varchar(50),

salary double(10,2)

);

insert into employee

values

(10001,'张一一','男','13456789000','山东青岛',1001.58),

(10002,'刘小红','女','13454319000','河北保定',1201.21),

(10003,'李四','男','0751-1234567','广东佛山',1004.11),

 (10004,'刘小强','男','0755-5555555','广东深圳',1501.23),

(10005,'王艳','男','020-1232133','广东广州',1405.16);

# 3. 查询出薪资在1200~1300之间的员工信息。

 select *

from employee

where salary >=1200 and salary<=1300

# 4. 查询出姓的员工的工号,姓名,家庭住址。

 select id,name,addr

from employee

where name like '%刘%'

# 5. 李四的家庭住址改为广东韶关

update employee

set addr='广东韶关'

where name='李四'

# 6. 查询出名字中带的员工

select *

from employee

where name like '%小%'

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

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

相关文章

【 图像水印 2019 CVPR】 StegaStamp 论文翻译

【 图像水印 2019 CVPR】 StegaStamp 论文翻译 论文题目&#xff1a;StegaStamp: Invisible Hyperlinks in Physical Photographs 中文题目&#xff1a;物理照片中不可见的超链接 论文链接&#xff1a;https://arxiv.org/abs/1904.05343 论文代码&#xff1a;https://github.co…

QxRibbon 知:openEuler 23.03 搭建 Qt5 开发环境

文章目录 安装 openEuler 23.03 虚拟机安装 GNOME 桌面环境安装 Qt5 开发环境构建 QxRibbon参考资料 安装 openEuler 23.03 虚拟机 VMware 安装 openEuler 23.03 虚拟机 平台&#xff1a;x86_64 虚拟机配置&#xff1a;4核、4G内存、100G磁盘 ISO 镜像&#xff1a;https://mir…

FT2000+ qemu kvm 红旗 crash 分析 频繁设置CPU online导致进程卡死、不调度故障

测试程序 /** tcti.cpp参考&#xff1a; https://www.cnblogs.com/organic/p/17321523.htmlg -stdc11 -lpthread trigger_cgroup_timer_inactive.cpp -o inactive_timer ./inactive_timer 100000 10000 */#include <errno.h> #include <iostream> #include <pt…

Redis进阶(集群,雪崩,击穿,穿透.......)

Redis进阶 Redis事务_事务的概念与ACID特性 Redis的事物不保证原子性 数据库层面事务 在数据库层面&#xff0c;事务是指一组操作&#xff0c;这些操作要么全都被成功执行&#xff0c;要么全都不执行。 数据库事务的四大特性 A&#xff1a;Atomic&#xff0c;原子性&#xf…

Docker笔记5 | 容器的基本操作

5 | 容器的基本操作 1 启动容器1.1 启动方式1.2 新建容器并启动1.3 docker run时的运行过程1.4 启动已终止容器1.5 后台运行1.6 查看容器信息 2 终止容器3 进入容器3.1 docker attach3.2 docker exec 4 导入导出容器4.1 导出容器4.2 导入容器 5 删除容器 1 启动容器 1.1 启动方…

Linux内核主要组成部分有哪些?

Linux 内核由几大子系统构成&#xff0c;分别为进程调度、进程间通信&#xff08;IPC&#xff09; 、内存管理、虚拟 文件系统和网络接口。这几大子系统既相互独立又有非常紧密的关联。图 3-5 展示了内核的 几大子系统之间以及这些子系统和计算机系统的其他模块之间的关系。 接…

ADS-B教学实验方案

ADS-B教学系统是为了让学生学习ADS-B原理、ADS-B系统组成、ADS-B信号处理技术。可以通过ADS-B教学系统进一步研究分析ADS-B位置的精度、准确性、稳定性、实时性&#xff0c;设计基于ADS-B的空中碰撞告警系统&#xff0c;混合空域的空中交通管理系统(UTM)设计。也可以研究ADS-B报…

《花雕学AI》你不知道的AI 机器人:29个让你大开眼界的事实

AI 机器人是人工智能技术的最具代表性的应用之一&#xff0c;它们可以模仿人类的行为和思维&#xff0c;完成各种复杂的任务&#xff0c;如识别图像、语音和文字&#xff0c;进行对话、翻译和推理&#xff0c;控制机械臂、汽车和飞机等。AI 机器人的发展速度令人惊叹&#xff0…

Windows命令提示行使用指南二(批处理)

命令提示行使用指南 前言四、批处理简介五、如何编写批处理1、Hello world2、做加法3、查找文件&#xff0c;并输出到文本。4、批量重命名5、自动记录开机时间 前言 cmd 是 Windows 操作系统中的命令行界面&#xff08;CLI&#xff09;&#xff0c;也称为命令提示符&#xff0…

Linux shell编程 数组排序算法

冒泡排序 循环对比相邻的元素&#xff0c;交换较大元素到后面的位置 大循环根据列表中存在的元素数量循环n-1次&#xff0c;保证所有元素都能被排序完成 小循环从前向后遍历&#xff0c;循环一次循环范围减少一位&#xff08;由于后面的已经排列完成无需再比较&#xff09;小循…

【halcon知识】应用仿射变换

一、说明 无论什么样的变换&#xff0c;都离不开齐次变换矩阵。一般地&#xff0c;先准备一个空的齐次变换矩阵&#xff0c;这个矩阵随便填写&#xff1a;1&#xff09;填入旋转类参数就是旋转矩阵&#xff0c;2——填入仿射参数就可进行仿射变换&#xff0c;3&#xff09;填入…

Kali-linux攻击WordPress和其他应用程序

今天越来越多的企业利用SAAS&#xff08;Software as a Service&#xff09;工具应用在他们的业务中。例如&#xff0c;他们经常使用WordPress作为他们网站的内容管理系统&#xff0c;或者在局域网中使用Drupal框架。从这些应用程序中找到漏洞&#xff0c;是非常有价值的。 为…

[JAVA数据结构]堆

目录 1.堆的概念 2.堆的创建 3.堆的插入与删除 3.1堆的插入 3.2堆的删除 1.堆的概念 如果有一个关键码的集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中&#xff0c;…

【Linux】远程桌面连接服务器报错:未启用对服务器的远程访问......

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录 前述操作环境说明&#xff1a;远程报…

<数据结构>NO4.带头双向循环链表

文章目录 前言1. 头文件2. 函数实现1&#xff09;创建哨兵位节点2&#xff09;新增一个节点3&#xff09;打印链表4&#xff09;头插5&#xff09;尾插6&#xff09;头删7&#xff09;尾删8&#xff09;查找9&#xff09;pos前插入10&#xff09;删除pos处节点11&#xff09;销…

Redis 缓存穿透、缓存击穿与缓存雪崩

文章目录 1. 缓存穿透解决方法 2. 缓存击穿解决方法 3. 缓存雪崩解决方法 在 redis 的应用场景中&#xff0c;需要考虑缓存在某些场景下可能出现的问题&#xff1a; 缓存穿透 缓存击穿 缓存雪崩 以下缓存问题的讨论都是基于以下应用架构讨论的&#xff1a; 1. 缓存穿透 对应…

数据备份系列:Rsync 备份实战记录(二)

一、Rsync Cron 场景使用 在对数据备份要求实时性不高的情况下&#xff0c;可优先考虑该场景&#xff0c;选择一个合适的时间&#xff0c;对数据进行定时远程增量同步。 在《数据备份系列&#xff1a;Rsync 备份详解&#xff08;一&#xff09;》中我们已经对服务搭建以及远程…

DAD-DAS模型

DAD-DAS模型 文章目录 DAD-DAS模型[toc]1 产品服务:需求方程2 实际利率:费雪方程3 通货膨胀:菲利普斯方程4 预期通货膨胀&#xff1a;适应性预期5 货币政策规则&#xff1a;泰勒方程6 动态总供给-总需求方程&#xff08;DAS-DAD&#xff09;7 总供给冲击模拟 1 产品服务:需求方…

【JavaEE初阶】文件操作——IO

摄影分享~ 文章目录 文件文件路径&#xff08;Path&#xff09; 文件的类型Java中操作文件File概述 文件内容的读写——数据流字节流InputStream概述OutputStream 概述字符流FileInputStream 概述利用 Scanner 进行字符读取 实例练习 文件 文件&#xff1a;File这个概念&…

PostSQL内存管理之内存上下文

瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;14 文档用途 了解pg内存分配 详细信息 1.MemoryContex机制 内存上下文是pg相关的内存控制结构&#xff0c;树形结构组织下的内存上下文能在频繁的…