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 ;

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

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

相关文章

Spring Boot:异常处理

Spring Boot 前言使用自定义错误页面处理异常使用 ExceptionHandler 注解处理异常使用 ControllerAdvice 注解处理异常使用配置类处理异常使用自定义类处理异常 前言 在 Spring Boot 中&#xff0c;异常处理是一个重要的部分&#xff0c;可以允许开发者优雅地处理应用程序中可…

复利效应(应用于成长)

应用 每个人在智力、知识、经验上&#xff0c;复利效应都一样&#xff0c;只要能积累的东西&#xff0c;基本上最终都会产生复利效应。 再来看一下复利公式&#xff1a;FP*(1i)^n P本金&#xff1b;i利率&#xff1b;n持有期限。在使用时&#xff0c;一定要注意4个限定条件&a…

AI图书推荐:ChatGPT等生成式AI在高等教育中的应用

自2022年11月以来&#xff0c;ChatGPT及其在高等教育各个层面的影响已成为所有教育对话的核心内容。Chan和Colloton所著的书籍是首批全面探讨ChatGPT与生成式人工智能&#xff08;GenAI&#xff09;在高等教育中应用及影响的作品之一。 该书深入研究了针对专业环境定制的AI素养…

js中Array的2个容易被遗忘的函数some和array

Array.prototype.some() 和 Array.prototype.every() 是 JavaScript 中的两个容易被遗忘的数组方法。它们都用于检查数组中的元素是否满足某个条件。 1. Array.prototype.some() some() 方法用于检查数组中至少有一个元素满足给定的条件。当找到满足条件的元素时&#xff0c;…

基础学习-Git(分布式版本控制系统)

学习视频推荐 http://【黑马程序员Git全套教程&#xff0c;完整的git项目管理工具教程&#xff0c;一套精通git】 https://www.bilibili.com/video/BV1MU4y1Y7h5/?p5&share_sourcecopy_web&vd_source2b85bd9be9213709642d908906c3d863 1、Git环境配置 安装Git Git下…

wireshark_概念

ARP (Address Resolution Protocol&#xff09;协议&#xff0c;即地址解析协议。该协议的功能就是将IP地址解析成MAC地址。 混杂模式 抓取经过网卡的所有数据包&#xff0c;包括发往本网卡和非发往本网卡的。 非混杂模式 只抓取目标地址是本网卡的数据包&#xff0c;对于发往…

《控制系统实验与综合设计》综合四至六(含程序和题目)

1.电机模型辨识实验 1.1 实验目的 &#xff08;1&#xff09;掌握一阶系统阶跃响应的特点&#xff0c;通过实验加深对直流电解模型的理解&#xff1b; &#xff08;2&#xff09;掌握系统建模过程中参数的整定&#xff0c;体会参数变化对系统的影响&#xff1b; &#xff0…

单片机开发板上外设资源讲解

单片机开发电路板上简单外设 开发板上各基础外设LED灯按键&#xff1a;数码管介绍液晶屏矩阵键盘扫描的概念LED点阵屏实时时钟蜂鸣器存储器 温度传感器&单总线 开发板上各基础外设 LED灯 中文名&#xff1a;发光二极管 外文名&#xff1a;Light Emitting Diode 简称&…

杨校老师项目之基于单片机STC89C52的智能环境监测系统【嵌入式】

获取全套资料&#xff1a; 有偿获取&#xff1a;mryang511688 技术&#xff1a;C语言、单片机等 摘要&#xff1a; 此设计可分为三个主要部分。此中的温度和湿度的检测功能&#xff0c;通过操纵单总线型温湿度传感器DHT11以数字形式显示&#xff0c;实现了切确测得温湿度的功能…

如何管理多个版本的Node.js

我们如何在本地管理多个版本的Node.js&#xff0c;有没有那种不需要重新安装软件再修改配置文件和环境变量的方法&#xff1f;经过我的查找&#xff0c;还真有这种方式&#xff0c;那就是nvm&#xff08;Node Version Manager&#xff09;。 下面我就给大家介绍下NVM的使用 1…

vs2019 c++中模板 enable_if_t 的使用

&#xff08;1&#xff09; 该模板的定义如下&#xff1a; template <bool _Test, class _Ty void> struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty> struct enable_if<true, _Ty> { // type is _Ty for _Testusing …

Golang | Leetcode Golang题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通过LTE模块上网

正文共&#xff1a;1111 字 13 图&#xff0c;预估阅读时间&#xff1a;1 分钟 之前买了一个无线版本的MSR810-W&#xff08;淘了一台二手的H3C企业路由器&#xff0c;就用它来打开网络世界的大门&#xff09;&#xff0c;并整理了一份快速配置&#xff08;脚本案例来了&#x…

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

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

SQL——SERVER的建表主要操作

目录 一&#xff1a;数据存储问题 1.表的相关数据 2.表&#xff0c;字段&#xff0c;记录 二&#xff1a;建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一&#xff1a;数据存储问题 1.表的相关数据 表是数据库的基本单位&…

交互原型设计工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平台上的一款专为快速原型设计而生的应用&#xff0c;Axure RP 9 Pro Mac版可以辅助产品经理快速设计完整的产品原型&#xff0c;并结合批注&#xff0c;说明以及流程图&#xff0c;框架图等元素&#xff0c;将产品完整地表述给各方面设计人员&#x…

Android Studio(AS)使用别人的项目与gradle包并运行项目

一、问题描述 在进行AS开发时&#xff0c;我们可能会使用到别人的项目&#xff0c;但发现别人把项目发给我们后会发现gradle项目同步失败o(≧口≦)o&#xff0c;此时计有三&#xff1a; 1.横行霸道、豪取抢夺&#xff1a;直接空降到项目人那里&#xff0c;强他的电脑占为己有…

Numpy的数组操作

文章目录 数组的创建创建全0的二维数组a(3,3)全1的二维数组b&#xff08;3,4&#xff09;随机数二维数数组c&#xff08;2,3&#xff09;效果截图 数组的属性查看b数组的维度查看b数组元素的个数效果截图 数组的维度操作将数组c的行变列&#xff0c;返回最后一个元素返回数组c第…

python 虚拟环境-最简单的教程

查看当前 python 的安装路径 which python 1、Anaconda创建虚拟环境 (1)执行命令&#xff1a;conda create --name env_name python3.10&#xff0c; 命令中我制定了环境名称是env_name&#xff0c;指定了Python版本是3.10&#xff0c;执行命令后&#xff0c;Conda会自动下…

【回溯】1240. 铺瓷砖

本文涉及知识点 回溯 LeetCode1240. 铺瓷砖 你是一位施工队的工长&#xff0c;根据设计师的要求准备为一套设计风格独特的房子进行室内装修。 房子的客厅大小为 n x m&#xff0c;为保持极简的风格&#xff0c;需要使用尽可能少的 正方形 瓷砖来铺盖地面。 假设正方形瓷砖的…