第10章:数据处理增删改

一、插入数据

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 '%小%'

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【CSS3】CSS3 属性选择器 ( CSS3 简介 | 属性选择器 | 属性选择器权重 )

文章目录 一、CSS3 简介二、CSS3 属性选择器权重三、CSS3 属性选择器 一、CSS3 简介 CSS3 是在 CSS2 基础上进行扩展后的样式 ; 在 移动端 对 CSS3 的支持 要比 PC 端支持的更好 , 建议在移动端开发时 , 多使用 CSS3 ; PC 端老版本浏览器不支持 CSS3 , 尤其是 IE 9 及以下的版…

Qt5.9学习笔记-事件(五) 事件调试和排查

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

【超详细】【YOLOV8使用说明】一套框架解决CV的5大任务:目标检测、分割、姿势估计、跟踪和分类任务【含源码】

目录 1.简介2.环境安装2.1安装torch相关库2.2 获取yolov8最新版本&#xff0c;并安装依赖 3. 如何使用模型用于各种CV任务3.1 目标检测任务实现检测图片代码检测视频代码 3.2 分割任务实现分割图片代码分割视频代码 3.3 追踪任务3.4 姿态检测任务姿态检测&#xff08;图片&…

数据结构之“树”——二叉树、红黑树、B树、B+树、B*树

这篇文章主要简单总结下二叉树、红黑树、B树、B树、B*树的基本结构和原理。 一、二叉树 二叉树就是度不超过2的树(每个结点最多有两个子结点)。 二叉树是有序树&#xff08;二叉排序树&#xff09;&#xff0c;若将其左右子树颠倒&#xff0c;则成为另一棵不同的二叉树。 二叉…

php+vue+mysql医院医护人员医生排班系统

本医护人员排班系统管理员&#xff0c;医护。管理员功能有个人中心&#xff0c;医院信息管理&#xff0c;医护信息管理&#xff0c;医护类型管理&#xff0c;排班信息管理&#xff0c;排班类型管理&#xff0c;科室信息管理&#xff0c;投诉信息管理。医护人员可以修改自己的个…

「二线豪华」或成历史,理想反超沃尔沃再树「里程碑」

今年的上海车展&#xff0c;除了占据C位的新能源汽车&#xff0c;还有传统车企。 上海车展开幕前&#xff0c;沃尔沃汽车大中华区销售公司总裁钦培吉在新车发布会上直言&#xff1a;“新势力会的&#xff0c;我们三年就学会了&#xff1b;我们会的&#xff0c;新势力十年都学不…

Android安装apk出现 “安装包无效”或“安装包不兼容”的解决方案

Android 安装apk出现“安装包无效”或“安装包不兼容”解决方案 1. 问题出现2. 配置 build.gradle3. 生成Signed APK 1. 问题出现 使用Android Studio安装apk到手机一切正常&#xff0c;但是分享出去出现安装apk出现“安装包无效”或“安装包不兼容”问题 这种情况需要我们设…

4 IK分词器

4 IK分词器 4.1测试分词器 在添加文档时会进行分词&#xff0c;索引中存放的就是一个一个的词&#xff08;term&#xff09;&#xff0c;当你去搜索时就是拿关键字去匹配词&#xff0c;最终 找到词关联的文档。 测试当前索引库使用的分词器&#xff1a; post 发送&#xff…

【分布式理论】聊一下 ACID、BASE、CAP、FLP

分布式理论基础 今天我们来聊一下分布式相关基础理论基础&#xff0c;上一篇文章中&#xff0c;我描述了一下分布式系统的纲&#xff0c;但是想要入手学习分布式系统设计&#xff0c;其实需要先从基本理论开始。而知名的ACID、BASE、CAP、FLP都是相关的理论基础。 ACID ACID…

六、FM1288调试方案-调试过程及细节

本篇文章,主要讲述实际调试操作:具体到需要调节哪些寄存器,调节完后,会有什么样的变化。但是整体效果不能达到我们期望的绝对感觉,所以我先把我们调试的结果放在前面,如果觉得不理想,也可以不看后面的内容了。 文章目录 1. 调试准备1.1 建立与FM1288芯片通信1.2 Uart结…

什么是多相流?在熟悉工业中常见的两相及多相流的分类及特点

文章目录 一、多相流的概览1.相的概念 二、多相流的引入单相流与多相流&#xff1a; 三、多相流及特性介绍四、常见的多相流的分类及特点1、常见的两相及多相流3、两相流动力学的发展简史4、两相流的研究方法和理论模型 一、多相流的概览 1.相的概念 物理学: 自然界中物质的态…

基于simulink使用麦克风阵列的声波束成形

一、前言 此示例演示如何对麦克风阵列接收到的信号进行波束化&#xff0c;以在嘈杂环境中提取所需的语音信号。 二、模型的结构 该模型模拟在 10 元件均匀线性麦克风阵列 &#xff08;ULA&#xff09; 上接收来自不同方向的三个音频信号。在接收器处添加热噪声后&#xff0c;应…

智慧厕所引导系统的应用

智慧公厕引导系统是一种基于智能化技术的公厕管理系统&#xff0c;可以为如厕者提供更加便捷、舒适、安全的如厕环境和服务&#xff0c;同时也可以引导如厕者文明如厕&#xff0c;营造文明公厕的氛围。智慧公厕引导系统可以通过智能引导屏、手机小程序等方式&#xff0c;为如厕…

【存储数据恢复】NetApp存储WAFL文件系统数据恢复案例

存储数据恢复环境&#xff1a; NetApp存储设备&#xff0c;WAFL文件系统&#xff0c;底层是由多块硬盘组建的raid磁盘阵列。 存储故障&#xff1a; 工作人员误操作导致NetApp存储内部分重要数据被删除。 存储数据恢复过程&#xff1a; 1、将存储设备的所有磁盘编号后取出&…

Linux上Nacos基本使用:连接MySQL并修改密码、启动、停止命令等

Nacos如何连接MySQL并修改密码 说明如何将内嵌数据库Derby切换为MySQL数据库直接新建MySQL数据库: 必须是MySQL5.7及以上 如何修改密码启动、停止命令 说明 nacos默认&#xff1a; 使用内嵌的数据库&#xff08;Derby&#xff09;默认登录地址 ip:8848/nacos; 账号&#xff1…

React 组件

文章目录 React 组件复合组件 React 组件 本节将讨论如何使用组件使得我们的应用更容易来管理。 接下来我们封装一个输出 “Hello World&#xff01;” 的组件&#xff0c;组件名为 HelloMessage&#xff1a; React 实例 <!DOCTYPE html> <html> <head> &…

JVM系列-第7章-对象的实例化内存布局与访问定位

对象的实例化内存布局与访问定位 对象的实例化 大厂面试题 美团&#xff1a; 对象在JVM中是怎么存储的&#xff1f;对象头信息里面有哪些东西&#xff1f; 蚂蚁金服&#xff1a; 二面&#xff1a;java对象头里有什么 对象创建的方式 new&#xff1a;最常见的方式、单例…

系统分析师之系统设计(十五)

目录 一、软件流程设计 1.1 业务流程分析方法 1.2 业务流程建模 1.2.1 标杆瞄准 1.2.2 IDEF 1.2.3 DEMO 1.2.4 流程建模语言 1.2.5 基于服务的BPM 1.2.6 业务流程重组BPR 1.2.7 业务流程管理BPM 二、软件架构设计 2.1 概念 2.2 软件架构风格 三、 结构化设计 四…

为什么停更ROS2机器人课程-2023-

机器人工匠阿杰肺腑之言&#xff1a; 我放弃了ROS2课程 真正的危机不是同行竞争&#xff0c;比如教育从业者相互竞争不会催生ChatGPT…… 技术变革的突破式发展通常是新势力带来的而非传统行业的升级改革。 2013年也就是10年前在当时主流视频网站开启分享&#xff1a; 比如 …

Vulfocus-struts2初了解

CVE-2013-2135 漏洞原理&#xff1a; 配置了通配符*&#xff0c;访问name.action时使用name.jsp来渲染页面&#xff0c;但是在提取name解析时&#xff0c;对其执行了OGNL表达式解析&#xff0c;所以导致了命令执行。如果一个请求与任何其他定义的操作不匹配&#xff0c;它将匹…