MYSQL的DDL和DML综合案例练习

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: #DDL和DML综合案例#1:创建名为test01_library的数据库CREATE DATABASE IF NOT EXISTS test01_library;#2:创建books表CREATE TABLE IF NOT EXISTS books(id INT,`name` VARCHAR(50),`authors` VARCHAR(100),price FLOAT,pubdate YEAR,note VARCHAR(100),num INT);SELECT *FROM b.

#DDL和DML综合案例

#1:创建名为test01_library的数据库

CREATE DATABASE IF NOT EXISTS test01_library;

#2:创建books表

CREATE TABLE IF NOT EXISTS books(

id INT,

`name` VARCHAR(50),

`authors` VARCHAR(100),

price FLOAT,

pubdate YEAR,

note VARCHAR(100),

num INT

);

SELECT *

FROM books;

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

INSERT INTO books

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

#3.2:指定所有字段名称,插入第二条记录

INSERT INTO books(id,`name`,`authors`,price,pubdate,note,num)

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

#3.3:同时插入多条记录(插入余下所有记录)

INSERT INTO books

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)

;

#4:将小说类型(novel)的书的价格都增加5

UPDATE books

SET price=price+5

WHERE note='novel';

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

UPDATE books

SET price=40,note='drama'

WHERE `name`='EmmaT';

 

SELECT *

FROM books;

#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'

GROUP BY price DESC;

#10:查询图书的信息,按照库存量的降序排列

   #如果库存量相同,按照note升序排列

SELECT *

FROM books

GROUP 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本显示第二页

SELECT *

FROM books

LIMIT 5,2;

#14:查询库存量总量最高的note类型书

SELECT note,SUM(num)

FROM books

GROUP BY note

HAVING SUM(num) >= ALL(

SELECT SUM(num)

FROM books

GROUP BY note

);

#15:查询去除空格后书名长度大于10的书名

SELECT `name`

FROM books

WHERE CHAR_LENGTH(REPLACE(`name`,' ',''))>=10;

#16:查询name,note,当note类型为novel时其类型显示为小说

#     当note类型为law时显示为法律

#     当note类型为medicine时显示为医药

#     当note类型为cartoon时显示为卡通

#     当note类型为JOKE时显示为笑话

#     其它note类型显示为其它

SELECT `name` '书名',note, CASE note WHEN 'novel' THEN '小说'

          WHEN 'law' THEN '法律'

          WHEN 'medicine' THEN '医药'

          WHEN 'cartoon' THEN '卡通'

          WHEN 'JOKE' THEN '笑话'

          ELSE '其它'

          END '类型'

FROM books;

#17:查询name,num,当num>30时,其状态为滞销,当0<num<10时其显示为畅销

  #当num=0时,其显示为无货,其余显示为其它    

SELECT `name` '书名',num '库存', CASE WHEN num>30 THEN '滞销'

         WHEN num>0 AND num<10 THEN '畅销'

         WHEN num=0 THEN '无货'

         ELSE '其它'

         END '状态'

FROM books;

#18:查询每类书的库存数量并计算它们的合计总量

ALTER TABLE books CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

SELECT IFNULL(note,'合计总量') AS note,SUM(num)

FROM books

GROUP BY note WITH ROLLUP;

#19:查询每类书的数量并计算它们的合计总量

SELECT IFNULL(note,'合计总量') AS note,COUNT(*)

FROM books

GROUP BY note WITH ROLLUP;

#20:找出库存量前三的书

SELECT *

FROM books

GROUP BY num DESC

LIMIT 0,3;

#21:找出价格最高的书

SELECT *

FROM books

ORDER BY pubdate ASC

LIMIT 0,1;

#22:找出价格最高的novel

SELECT *

FROM books

WHERE note='novel'

ORDER BY price DESC

LIMIT 0,1;

#23: 找出去除空格后书名最长的书的信息

SELECT *

FROM books

GROUP BY CHAR_LENGTH(REPLACE(`name`,' ','')) DESC

LIMIT 0,1;

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
菜鸟之路Day30一一MySQL之DML&DQL
本文介绍了MySQL中DML(数据操作语言)和DQL(数据查询语言)的核心用法。DML主要包括插入(insert)、更新(update)和删除(delete)语句,通过具体示例演示了如何对表数据进行增删改操作。DQL则聚焦于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询等内容。文章通过丰富的SQL语句实例,帮助读者掌握如何高效查询和操作数据库中的数据,适合初学者学习和实践。
132 12
|
4月前
|
SQL 存储 关系型数据库
菜鸟之路Day29一一MySQL之DDL
本文《菜鸟之路Day29——MySQL之DDL》由作者blue于2025年5月2日撰写,主要介绍了MySQL中的数据定义语言(DDL)。文章详细讲解了DDL在数据库和表操作中的应用,包括数据库的查询、创建、使用与删除,以及表的创建、修改与删除。同时,文章还深入探讨了字段约束(如主键、外键、非空等)、常见数据类型(数值、字符串、日期时间类型)及表结构的查询与调整方法。通过示例代码,读者可以更好地理解并实践MySQL中DDL的相关操作。
171 11
|
3月前
|
SQL 关系型数据库 MySQL
MySQL 5.6/5.7 DDL 失败残留文件清理指南
通过本文的指南,您可以更安全地处理 MySQL 5.6 和 5.7 版本中 DDL 失败后的残留文件,有效避免数据丢失和数据库不一致的问题。
|
5月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
7月前
|
存储 SQL 关系型数据库
服务器数据恢复—云服务器上mysql数据库数据恢复案例
某ECS网站服务器,linux操作系统+mysql数据库。mysql数据库采用innodb作为默认存储引擎。 在执行数据库版本更新测试时,操作人员误误将在本来应该在测试库执行的sql脚本在生产库上执行,导致生产库上部分表被truncate,还有部分表中少量数据被delete。
172 25
|
7月前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。
|
8月前
|
SQL 监控 关系型数据库
MySQL如何优雅的执行DDL
在MySQL中优雅地执行DDL操作需要综合考虑性能、锁定和数据一致性等因素。通过使用在线DDL工具、分批次执行、备份和监控等最佳实践,可以在保障系统稳定性的同时,顺利完成DDL操作。本文提供的实践和案例分析为安全高效地执行DDL操作提供了详细指导。
364 14
|
9月前
|
存储 关系型数据库 MySQL
10个案例告诉你mysql不使用子查询的原因
大家好,我是V哥。上周与朋友讨论数据库子查询问题,深受启发。为此,我整理了10个案例,详细说明如何通过优化子查询提升MySQL性能。主要问题包括性能瓶颈、索引失效、查询优化器复杂度及数据传输开销等。解决方案涵盖使用EXISTS、JOIN、IN操作符、窗口函数、临时表及索引优化等。希望通过这些案例,帮助大家在实际开发中选择更高效的查询方式,提升系统性能。关注V哥,一起探讨技术,欢迎点赞支持!
475 5
|
9月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
10月前
|
SQL 关系型数据库 MySQL

推荐镜像

更多