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

mysql实战题目练习

1、创建和管理数据库

  • 创建一个名为school的数据库。

  • 列出所有的数据库,并确认school数据库已经创建。

  • 如果school数据库已经存在,删除它并重新创建。

  • mysql> create database school;
    Query OK, 1 row affected (0.01 sec)mysql> 
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | school             |
    | sys                |
    | zabbix             |
    +--------------------+
    6 rows in set (0.01 sec)

    2、创建数据表

  • school数据库中,创建一个名为students的表,包含以下字段:id(整数,主键,自增)、name(字符串,最大长度50)、age(整数)和grade(字符串,最大长度10)。

  • 创建一个名为courses的表,包含course_id(整数,主键,自增)、course_name(字符串,最大长度100)和teacher(字符串,最大长度50)。

  • mysql> create table students(id int auto_increment primary key,name varchar(50),age int,grade varchar(10));
    Query OK, 0 rows affected (0.06 sec)
    mysql> create  table courses(course_id int auto_increment primary key,course_name varchar(100),teacher varchar(50));
    Query OK, 0 rows affected (0.01 sec)

    3、插入数据

  • students表中插入一些示例数据。

  • courses表中插入一些示例数据

  • mysql> insert into students(name,age,grade)values('zhsan',20,1);
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO students (name, age, grade) VALUES ('李四', 19, '二年级');
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from courses;
    Empty set (0.00 sec)mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | zhsan  |   20 | 1         |
    |  2 | 李四   |   19 | 二年级    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> update  students set name='张三',grade='一年级' where id=1;
    Query OK, 1 row affected (0.00 sec)
    mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   20 | 一年级    |
    |  2 | 李四   |   19 | 二年级    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> insert into courses(course_name,teacher)values('数学','张老师');
    Query OK, 1 row affected (0.00 sec)mysql> insert into courses(course_name,teacher)values('语文','王老师';
    Query OK, 1 row affected (0.00 sec)mysql> select * from courses;
    +-----------+-------------+-----------+
    | course_id | course_name | teacher   |
    +-----------+-------------+-----------+
    |         1 | 数学        | 张老师    |
    |         2 | 语文        | 王老师    |
    +-----------+-------------+-----------+
    2 rows in set (0.00 sec)mysql> 

    4、基本查询

  • 查询students表中的所有数据。

  • 查询年龄大于或等于20岁的学生信息。

  • 查询姓名为"张三"的学生的所有信息。

  • mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   20 | 一年级    |
    |  2 | 李四   |   19 | 二年级    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> select * from students where age>=20;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   20 | 一年级    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)
    mysql> select * from students where name='张三';
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   20 | 一年级    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)
    

    5、更新和删除数据

  • 将名为"张三"的学生的年龄更新为21岁。

  • 删除年龄小于18岁的学生信息。

  • mysql> update students set age=21 where name='张三';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> select * from students ;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   21 | 一年级    |
    |  2 | 李四   |   19 | 二年级    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)
    mysql> insert into students(name,age,grade)values('王五',17,'一年级');
    Query OK, 1 row affected (0.01 sec)
    mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   21 | 一年级    |
    |  2 | 李四   |   19 | 二年级    |
    |  4 | 王五   |   17 | 一年级    |
    +----+--------+------+-----------+
    3 rows in set (0.00 sec)mysql> delete from students where age<18;
    Query OK, 1 row affected (0.00 sec)mysql> select * from students;
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   21 | 一年级    |
    |  2 | 李四   |   19 | 二年级    |
    +----+--------+------+-----------+
    2 rows in set (0.00 sec)mysql> 

    6、多表查询

  • (假设存在一个关联表student_courses,表示学生和课程的关联关系)

  • 查询所有选修了"数学"课程的学生信息。

  • 查询每个学生的选课数量。

  • mysql> create table student_courses(student_id int,course_id int,foreign key (student_id) references student(id),foreign key(course_id)references courses(course_id));
    Query OK, 0 rows affected (0.01 sec)
    mysql> insert into student_courses(student_id,course_id)values(1,2);
    Query OK, 1 row affected (0.01 sec)mysql> insert into student_courses(student_id,course_id)values(2,2);
    Query OK, 1 row affected (0.01 sec)mysql> insert into student_courses(student_id,course_id)values(2,1);
    Query OK, 1 row affected (0.00 sec)mysql> SELECT s.name, s.age, s.grade  -> FROM student s  -> JOIN student_courses sc ON s.id = sc.student_id  -> JOIN courses c ON sc.course_id = c.course_id  -> WHERE c.course_name = '数学';
    +--------+------+-----------+
    | name   | age  | grade     |
    +--------+------+-----------+
    | 张三   |   21 | 一年级    |
    | 李四   |   19 | 二年级    |
    +--------+------+-----------+
    2 rows in set (0.00 sec)

    7、事务处理

  • 编写一个事务,将学生"李四"选修的"数学"课程更改为"物理",并确保如果更改失败,则回滚到之前的状态。

  • BEGIN TRANSACTIONSTART TRANSACTION:开始一个新的事务。

  • COMMIT:提交事务,将事务中的所有更改保存到数据库。

  • ROLLBACK:撤销事务,回滚到事务开始之前的状态,撤销所有在事务中所做的更改

    mysql> start transaction;
    Query OK, 0 rows affected (0.00 sec)
    mysql> update student_courses  set course_id=(select course_id from courses where course_name='物理')  where student_id=(select id from student where name="李四") and course_id=(select course_id from courses where course_name='数学') and course_id=(select course_id from courses where course_name='数学');
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    mysql> commit;
    Query OK, 0 rows affected (0.00 sec)

    8、索引和约束

    students表的name字段上创建一个唯一索引,确保每个学生都有一个唯一的姓名。

    courses表的course_name字段上创建一个普通索引,以优化查询性能。

  • mysql> create unique index idx_name on student(name);
    Query OK, 0 rows affected (0.07 sec)
    Records: 0  Duplicates: 0  Warnings: 0mysql> create index idx_course_name on courses(course_name);
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    9、聚合函数和分组

  • 查询每个年级的学生数量。

  • 查询年龄最大的学生信息。

  • mysql> select grade,count(*) as student_count from student group by grade;
    +-----------+---------------+
    | grade     | student_count |
    +-----------+---------------+
    | 一年级    |             1 |
    | 二年级    |             1 |
    +-----------+---------------+
    2 rows in set (0.01 sec)mysql> 
    mysql> select * from student where age=(select max(age) from student);
    +----+--------+------+-----------+
    | id | name   | age  | grade     |
    +----+--------+------+-----------+
    |  1 | 张三   |   21 | 一年级    |
    +----+--------+------+-----------+
    1 row in set (0.00 sec)mysql> 

10、视图和存储过程

  • 创建一个视图,显示年龄大于20岁的学生及其选课信息。

  • 编写一个存储过程,用于添加新的学生和课程关联记录。

  • mysql> create view view_age20 as-> select s.id,s.name,s.age,sc.course_id,c.course_name-> from student s-> join student_courses sc on s.id=sc.student_id-> join courses c on sc.course_id=c.course_id-> where s.age >20;
    Query OK, 0 rows affected (0.01 sec)mysql> delimiter //
    mysql> create procedure addsc(in student_id int,in course_id int)-> begin insert into student_courses(student_id,course_id)values (student_id,course_id);-> -> end  //
    Query OK, 0 rows affected (0.02 sec)
    mysql> delimiter ;

相关文章:

mysql实战题目练习

1、创建和管理数据库 创建一个名为school的数据库。 列出所有的数据库&#xff0c;并确认school数据库已经创建。 如果school数据库已经存在&#xff0c;删除它并重新创建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…...

Linux 案例命令使用操作总结

在信息技术日新月异的今天&#xff0c;Linux以其开源、稳定、高效的特性&#xff0c;逐渐成为了众多专业人士的首选操作系统。然而&#xff0c;关于Linux知识的学习&#xff0c;却常常陷入一个误区——许多人认为&#xff0c;掌握Linux就是死记硬背各种命令和参数。这种观念&am…...

图的拓扑序列(DFS2)

reference way&#xff1a;在图里面能延伸的越远&#xff0c;deep越大&#xff0c;说明它能从自己延伸很长到别的节点&#xff08;别的节点一定有入度&#xff09;&#xff0c;它越可能没有入度。 way&#xff1a;感觉和DFS1差不多&#xff0c;只是从远变成了多。 #include&l…...

2024年小学生古诗文大会备考:吃透历年真题和知识点(持续)

根据往年的安排&#xff0c;2024年小学生古诗文大会预计这个月就将启动。该如何备考2024年小学生古诗文大会呢&#xff1f;根据往期的经验&#xff0c;只要吃透这些真题和背后的知识点&#xff0c;通过上海小学生古诗文大会的初选&#xff08;初赛&#xff09;一点问题都没有。…...

SystemC学习使用记录

一、概述 对于复杂的片上系统&#xff0c;在进行RTL编码前&#xff0c;需进行深入的系统级仿真&#xff0c;以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费&#xff0c;所进行的这些仿真要求在芯片的仿真模型上运行大量的软件&#xff0c…...

Github20K星开源团队协作工具:Zulip

Zulip&#xff1a;让团队协作的每一次交流&#xff0c;都精准高效。- 精选真开源&#xff0c;释放新价值。 概览 随着远程工作的兴起和团队协作的需求不断增加&#xff0c;群组聊天软件成为了日常工作中不可或缺的一部分。Zulip 是github上一个开源的团队协作工具&#xff0c;…...

C语言基础-标准库函数

C语言的标准库函数是由C语言标准库&#xff08;如C99、C11等&#xff09;提供的一系列预定义函数&#xff0c;这些函数通常用于执行常见的编程任务&#xff0c;如字符串操作、内存管理、数学计算、文件操作等。通过使用标准库函数&#xff0c;程序员可以更加高效地编写C语言程序…...

「51媒体」家居生活发布会,展览展会有哪些媒体邀约资源

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 家居生活类媒体包括多种类型&#xff0c;包括门户网站家居生活消费频道&#xff0c;专业的家居消费生活门户&#xff0c;以及行业媒体&#xff0c;平面媒体&#xff0c;KOL和意见领袖。下…...

力扣刷题--数组--第五天

昨天做了几道关于双指针求解的算法题&#xff0c;今天继续看相关的题目。 844. 比较含退格的字符串 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。   注意&#xff1a;如果对空…...

kafka学习笔记04(小滴课堂)

Kafka的producer生产者发送到Broker分区策略讲解 Kafka核心API模块-producer API讲解实战 代码&#xff1a; ProducerRecord介绍和key的作用 Kafka核心API模块-producerAPI回调函数实战 producer生产者发送指定分区实战 我们设置5个分区。 我们指定分区。 重新指定一个分区&am…...

三菱FX3U-4AD模拟量电压输入采集实例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模块 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模块&#xff26;&#xff38;&#xff13…...

OpenAI推出DALL·E 3识别器、媒体管理器

5月8日&#xff0c;OpenAI在官网宣布&#xff0c;将推出面向其文生图模型DALLE 3 的内容识别器&#xff0c;以及一个媒体管理器。 随着ChatGPT、DALLE 3等生成式AI产品被大量应用在实际业务中&#xff0c;人们越来越难分辨AI和人类创建内容的区别&#xff0c;这个识别器可以帮…...

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…...

信息系统项目管理师——十大管理过程输入、工具和技术、输出(论文篇)一

一、项目整合管理 制定项目章程 在项目管理中&#xff0c;制定项目章程是一个关键的初始过程&#xff0c;它正式授权项目的开始并为项目设定高层次的方向。项目章程的编制涉及特定的输入、采用的工具和技术&#xff0c;以及产生的输出。以下是这些方面的详细说明&#xff1a;…...

Java——代码块

1、概念分类 使用 {} 定义的一段代码称为代码块&#xff0c;根据代码块定义的位置以及关键字&#xff0c;可分为以下四种 普通代码块静态代码块构造代码块同步代码块 2、普通代码块 定义在方法中的代码块&#xff0c;这种用法较少见&#xff1a; 3、构造代码块 构造块&…...

Ajax额

原生Ajax xml 已被json取代 http 请求方法urlhttp版本号 network 谷歌浏览器查看请求报文和响应报文 F12 network header里面有 请求头 响应头 点击view source 可以查看请求响应行 请求体在请求行头下面 get请求有url参数&#xff0c;请求体变为query String…...

5.15项目进度总结

今天完成了随机选人和实时显示的功能&#xff08;还需要维护&#xff09;&#xff0c;使得程序可以对用户的操作进行实时的显示。 实时显示的思路&#xff1a;在登录后开一个线程用一个socket去链接服务端并查询需要实时的信息&#xff0c;同时服务端把这个socket记录下来&…...

POETIZE个人博客系统源码 | 最美博客

简介&#xff1a; POETIZE个人博客系统源码 | 最美博客 这是一个 SpringBoot Vue2 Vue3 的产物&#xff0c;支持移动端自适应&#xff0c;配有完备的前台和后台管理功能。 网站分两个模块&#xff1a; 博客系统&#xff1a;具有文章&#xff0c;表白墙&#xff0c;图片墙&…...

回复完成 输入框还显示值的问题

回复完成 输入框还显示值的问题 解决代码 先把id 值清空 再构建下这个输入框 $("#details_article_reply_content").val(""); // 清空textareavar editor editormd("article_details_reply", {width: "100%",height: "100%"…...

C语言----斐波那契数列(附源代码)

各位看官们好&#xff0c;当我写了上一篇博客杨辉三角后&#xff0c;有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)f(n-2)f(n-1)。就是当前是前两项之和&#xff0c;然后下标1和0都是1.从第三项开始计算的。那么我们知道规律&#xff0…...

【C++27 constexpr革命性突破】:5大新增约束与3类不可逆性能跃迁,资深编译器工程师亲授落地实践

第一章&#xff1a;C27 constexpr革命性突破的底层动因与标准演进全景C27 将首次允许 constexpr 函数完整支持动态内存分配&#xff08;std::allocator 与 new/delete&#xff09;、虚函数调用、异常处理&#xff08;try/catch&#xff09;及完整 I/O 流子集&#xff0c;其根本…...

Flutter鸿蒙化适配中遇到的问题

Flutter 环境搭建避坑指南Flutter 作为跨平台开发的热门框架&#xff0c;凭借一套代码多端运行的优势&#xff0c;深受开发者喜爱&#xff0c;但环境搭建与适配却是新手入门的第一道拦路虎。我在初次配置 Flutter 开发环境时&#xff0c;接连踩中环境变量、模拟器版本、第三方工…...

四轴飞行器飞控编写教程

四轴飞行器飞控编写教程 写在前面 这份教程专门为零基础的初学者编写。如果你刚接触四轴飞行器不知道从何下手&#xff0c;听说过PID控制但不理解它是怎么工作的&#xff0c;看过飞控代码但感觉像天书一样看不懂&#xff0c;想自己动手写飞控但不知道从哪里开始——那么这份教程…...

OpenClaw压力测试:Qwen3-14B在并发请求下的响应延迟分析

OpenClaw压力测试&#xff1a;Qwen3-14B在并发请求下的响应延迟分析 1. 测试背景与目标 上周在部署OpenClaw对接本地Qwen3-14B模型时&#xff0c;遇到一个实际问题&#xff1a;当我同时触发多个自动化任务时&#xff0c;系统响应明显变慢&#xff0c;甚至偶尔会出现任务失败。…...

Symfony Monolog Bundle终极指南:如何快速搭建专业日志系统

Symfony Monolog Bundle终极指南&#xff1a;如何快速搭建专业日志系统 【免费下载链接】monolog-bundle Symfony Monolog Bundle 项目地址: https://gitcode.com/gh_mirrors/mo/monolog-bundle Symfony Monolog Bundle是Symfony框架中一款强大的日志管理工具&#xff0…...

2026届毕业生推荐的十大降重复率神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 降低AIGC痕迹的关键之处在于去除机器生成的那种模式化特性&#xff0c;如果要采用避免使用过…...

二极管限幅与钳位电路设计全解析

1. 二极管基础特性回顾 在开始分析各种二极管应用电路之前&#xff0c;我们先快速回顾一下二极管的核心特性。二极管最显著的特点就是其单向导电性 - 当正向偏置电压超过导通阈值&#xff08;硅管约0.7V&#xff09;时导通&#xff0c;反向偏置或正向电压不足时截止。这个看似简…...

logback 只能有 1 个 <root> 标签!

<?xml version"1.0" encoding"UTF-8"?> <configuration> <!-- 路径 --> <property name"PATH" value"./log/open"/> <!-- 控制台输出 --> <appender name"STDOUT" class"ch.qos.lo…...

10分钟零成本搭建KIMI AI免费API:个人智能助手完整指南

10分钟零成本搭建KIMI AI免费API&#xff1a;个人智能助手完整指南 【免费下载链接】kimi-free-api &#x1f680; KIMI AI 长文本大模型逆向API【特长&#xff1a;长文本解读整理】&#xff0c;支持高速流式输出、智能体对话、联网搜索、探索版、K1思考模型、长文档解读、图像…...

嵌入式软件缺陷预防与设计规范实战指南

1. 嵌入式软件缺陷预防与设计规范作为一名在嵌入式领域摸爬滚打多年的工程师&#xff0c;我见过太多因为软件缺陷导致的灾难性后果。从航天器失联到医疗设备故障&#xff0c;这些事故背后往往都隐藏着本可以在设计阶段就规避的代码问题。今天我想分享的是&#xff1a;为什么一个…...