Mysql综合案例练习<1>

MySql综合案例练习<1>

  • 题目一
  • 题目二
  • 题目三
  • 题目四
  • 题目五
  • 题目六
  • 题目七
  • 题目八
  • 题目九
  • 题目十
  • 题目十一
  • 题目十二
  • 题目十三
  • 题目十四
  • 题目十五
  • 题目十六
  • 题目十七
  • 题目十八
  • 题目十九

题目一

创建数据库test01_library
创建表 books,表结构如下:
在这里插入图片描述

CREATE DATABASE  test01_library

CREATE TABLE books(
id INT,
name VARCHAR(50),
`authors` VARCHAR(100) ,
price FLOAT,
pubdate YEAR ,
note VARCHAR(100),
num INT
);

题目二

向books表中插入记录
(1)不指定字段名称,插入第一条记录
(2)指定所有字段名称,插入第二记录
(3)同时插入多条记录(剩下的所有记录)

这里使用INSERT INTO VALUES语句来进行信息的添加

#(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',30,2010,'Law',0),
(6,'The Battle','Upton Sara',30,1999,'medicine',40),
(7,'Rose Hood','Richard haggard',28,2008,'cartoon',28);

题目三

将小说类型(novel)的书的价格都增加5
这里很明显要更新表中列的信息,我们采用UPDATE SET 语句

UPDATE  books
SET price = price + 5
WHERE note = "novel"

题目四

将名称为EmmaT的书的价格改为40,并将说明改为drama。

UPDATE books 
SET price=40,note='drama' 
WHERE name='EmmaT';

题目五

删除库存为0的记录。

删除,我们采用 DELETE FROM语句

DELETE FROM books  WHERE num = 0;

题目六

统计书名中包含a字母的书

这题要查找包含字母a 的书, 我们使用LIKE语句进行查找
包含 a, 可用正则表达式 “%a%” 来进行

SELECT * FROM books  WHERE  name LIKE "%a%"

题目七

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

统计数量可用聚合函数**,COUNT函数**
统计总量,可用SUM函数

SELECT COUNT(*),SUM(num) FROM books WHERE name LIKE '%a%';

题目八

找出“novel”类型的书,按照价格降序排列

排序可用ORDER BY语句
降序采用 DESC
升序采用 ASC

SELECT * 
FROM books  WHERE note = "novel"
ORDER BY price DESC

题目九

按照note分类统计书的数量
实现分类的话,
我们采用 GROUP BY 语句

SELECT note
FROM books GROUP BY  note

题目十

查询所有图书,每页显示5本,显示第二页

每页显示多少本,显示第几页
我们通常采用LIMIT语句去实现

SELECT * FROM books LIMIT 5,5;

题目十一

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

SELECT note,SUM(num) sum_num 
FROM books 
GROUP BY note 
ORDER BY sum_num DESC 
LIMIT 0,1;

题目十二

查询书名达到10个字符的书,不包括里面的空格
注意这里,要查询10个字符的,但是又不算里面的空格
我们可以把空格删了在查询,可以采用replace函数

REPLACE 有三个参数
第一个参数是字符串,
第二个参数是字符串中要被替换的部分,
第三个参数是替换字符串的

计算字符串长度,可以采用CHAR_LENGTH函数

SELECT * 
FROM books 
WHERE CHAR_LENGTH(REPLACE(name,' ',''))>=10;

在这里插入图片描述

题目十三

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

注意: 在原来的表中是没有书名和类型这两个名字的,所以我们要使用AS语句,取别名
当note值为novel 的时候,显示小说,是存在C语言中类似if语句的关系
我们可以用 CASE A WHEN B THEN C语句来表示 —>(if A == B {C})
注意:以END结束

SELECT name AS "书名" ,note, CASE note
WHEN 'novel' THEN '小说'
WHEN 'law' THEN '法律'
WHEN 'medicine' THEN '医药'
WHEN 'cartoon' THEN '卡通'
WHEN 'joke' THEN '笑话'
END AS "类型"
FROM books;

在这里插入图片描述

别名一般都是作为第一行,后面END AS “类型” 这个别名,是前面THEN语句取的
当有多条语句,CASE条件相同的话,只写一个CASE就行

题目十四

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

SELECT name, num, CASE 
WHEN num > 30 THEN '滞销'
WHEN num  > 0 AND num < 10 	
THEN '畅销' WHEN num = 0 THEN '无货'
END AS "库存状态"
FROM books

在这里插入图片描述

题目十五

统计每一种note的数量,并合计总量

当统计每一种note的数量的时候,我们可以使用SUM聚合函数,
不过需要注意的时候,当聚合函数和非聚合函数同时出现的时候,
我们应该使用GROUP BY
当要合计总量的时候
我们需要在GROUP BY 后面使用 WITH ROLLUP

SELECT note AS "库存量", SUM(num) 
FROM books
GROUP BY note
WITH ROLLUP

在这里插入图片描述

当然这里加了个判断是否为NULL ,修饰了一下

SELECT IFNULL(note, "合计库存量") AS note , SUM(num) 
FROM books
GROUP BY note
WITH ROLLUP

在这里插入图片描述

题目十六

统计每一种note的数量,并合计总量

统计数量,这里采用COUNT聚合函数,
合计总量自然是使用WITH ROLLUP

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

在这里插入图片描述

题目十七

统计库存量前三名的图书
显示前三名,按照降序排列 (ORDER BY )
然后采用分页操作 (LIMIT)

SELECT * 
FROM books
ORDER BY num DESC
LIMIT 0, 3

在这里插入图片描述

题目十八

找出最早出版(pubdate) 的一本书

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

题目十九

找出书名中字数最多的一本书,不含空格
这里同样,注意:替换空格的方法(REPLACE 函数 (3个参数))

SELECT *
FROM books
ORDER BY CHAR_LENGTH(REPLACE(name, " ", "")) DESC 
LIMIT 0, 1;

在这里插入图片描述

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

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

相关文章

Tap虚拟网卡

1 概述 Tap设备通常用于虚拟化场景下&#xff0c;其驱动代码位于drivers/net/tun.c&#xff0c;tap与tun复用大部分代码&#xff0c; 注&#xff1a;drivers/net/tap.c并不是tap设备的代码&#xff0c;而是macvtap和ipvtap&#xff1b; 下文中&#xff0c;我们统一称tap&#…

了解Linux网络配置

本章主要介绍网络配置的方法。 网络基础知识 查看网络信息 图形化界面修改 通过配置文件修改 命令行管理 11.1 网络基础知识 一台主机需要配置必要的网络信息&#xff0c;才可以连接到互联网。需要的配置网络信息包括IP、 子网掩码、网关和 DNS。 11.1.1 IP 地址 在计算机…

0010Java安卓程序设计-ssm基于安卓的掌上校园系统

文章目录 **摘要**目录系统实现5.2管理员功能模块开发环境 编程技术交流、源码分享、模板分享、网课分享 企鹅&#x1f427;裙&#xff1a;776871563 摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff0c;…

【Java系列】函数式接口编程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【redis笔记】redis应用

redis应用 redis 发布订阅 redis客户端可以订阅任意数量的频道 订阅方式 subscribe channel1 – 订阅了channel1频道 发布方式 订阅了之后&#xff0c;可以在任意客户端发布消息到指定channel publish channel1 hello – 往channel发布hello&#xff0c;会返回订阅channe…

class036 二叉树高频题目-上-不含树型dp【算法】

class036 二叉树高频题目-上-不含树型dp code1 102. 二叉树的层序遍历 // 二叉树的层序遍历 // 测试链接 : https://leetcode.cn/problems/binary-tree-level-order-traversal/ code1 普通bfs code2 一次操作一层 package class036;import java.util.ArrayList; import java…

9. 使用Pthreads实现线程池(一)

背景 多线程的一个典型应用场景就是服务器的并发处理,如下图所示,多名用户向服务器发出数据操作的请求。为了提高并发性,我们可以在每收到一个用户请求时就创建一个线程处理相关操作。这种操作在请求数量较少时没有什么问题,但在请求数量很多时你会发现线程的创建和销毁所占…

绑定域名简单教程

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f324;️安装Nginx环境 &…

第七次作业

1&#xff0c; 给定一个包含n1个整数的数组nums&#xff0c;其数字在1到n之间&#xff08;包含1和n)&#xff0c;可知至少存在一个重复的整数&#xff0c;假设只有一个重复的整数&#xff0c;请找出这个重复的数 arr input("") num [int(n) for n in arr.split()]…

mysql 5.7 Unknown column ‘password‘ in ‘field list‘

问题现象&#xff1a; 执行sql : select user&#xff0c;host,password from user&#xff1b;时提示 ERROR 1054(42S22):Unknown column password in field list 现象如下图所示&#xff1a; mysql 5.7开始 密码字段用&#xff1a;authentication_string

http接口自动化测试框架实现

一、测试需求描述 对服务后台一系列的http接口功能测试。 输入&#xff1a;根据接口描述构造不同的参数输入值 输出&#xff1a;XML文件 eg:http://xxx.com/xxx_product/test/content_book_list.jsp?listid1 二、实现方法 1、选用Python脚本来驱动测试 2、采用Excel表格…

【hacker送书第10期】AI时代系列丛书(五选一)

AI时代系列丛书 AI时代程序员开发之道✨内容简介参与方式 AI时代项目经理成长之道✨内容简介参与方式 AI时代架构师修炼之道✨内容简介参与方式 AI时代产品经理升级之道✨内容简介参与方式 AI时代Python量化交易实战✨内容简介参与方式 AI时代程序员开发之道✨ 内容简介 本书是…

zabbix配置snmp trap--使用snmptrapd和Bash接收器--图文教程

1.前言 我的zabbix的版本是5.0版本&#xff0c;5.0的官方文档没有使用bash接收器的示例&#xff0c;6.0的官方文档有使用bash接收器的示例&#xff0c;但是&#xff0c;下载文件的链接失效&#xff1f;&#xff01; 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

好用免费的AI换脸5个工具

在当今社会的发展中&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;扮演着关键的角色&#xff0c;其应用领域不断扩展。作为AI的一个分支&#xff0c;换脸技术近年来备受欢迎。这项技术使得将一个人的面部特征迁移到另一个人的照片或视频成为可能。除…

链式二叉树的创建及遍历(数据结构实训)

题目&#xff1a; 链式二叉树的创建及遍历 描述&#xff1a; 树的遍历有先序遍历、中序遍历和后序遍历。先序遍历的操作定义是先访问根结点&#xff0c;然后访问左子树&#xff0c;最后访问右子树。中序遍历的操作定义是先访问左子树&#xff0c;然后访问根&#xff0c;最后访问…

Ubuntu宝塔面板本地部署轻论坛系统HadSky并远程访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09;2.4 公网访问测试 总结 前言 经过多年的基础…

【python、opencv】opencv仿射变换原理及代码实现

opencv仿射变换原理 仿射变换是opencv的基本知识点&#xff0c;主要目的是将原始图片经过仿射变换矩阵&#xff0c;平移、缩放、旋转成目标图像。用数学公式表示就是坐标转换。 其中x&#xff0c;y是原始图像坐标&#xff0c;u&#xff0c;v是变换后的图像坐标。将公式转换为…

深入Os--动态链接

1.动态链接库的使用 动态库支持以两种模式使用&#xff0c;一种模式下&#xff0c;在程序加载运行时&#xff0c;完成动态链接。一种模式下&#xff0c;在程序运行中&#xff0c;完成动态链接。 1.1.程序加载运行时完成动态链接 我们通过一个实例介绍程序加载运行时&#xff0c…

深入理解Dubbo-1.初识Dubbo

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理&#x1f525;如果感觉博主的文章还不错的话&#xff…

12.7作业

1. #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//***********窗口相关设置***********//设置窗体大小this->resize(540,410);this->setFixedSize(540,410);//取消菜单栏this->setWindowFlag(Qt::FramelessWindowHint);/…