首页 > 数据库 >MySQL——视图(三)应用实例——视图的应用

MySQL——视图(三)应用实例——视图的应用

时间:2024-09-09 21:52:39浏览次数:13  
标签:语句 University 视图 mark stu 应用 MySQL sign id

        本节将通过一个应用案例让读者熟练掌握在实际开发中创建并使用视图的完整过程。

1.案例的目的

        掌握视图的创建、查询、更新和删除操作。

        假如有来自河北和山东的三个理科学生报考北京大学(Peking University)和清华大学(Tsinghua University),现在需要对其考试的结果进行查询和管理,清华大学的录取分数线为 725,北京大学的录取分数线为 720。需要创建三个表对学生的信息进行管理,这三个表分别是学生表、报名表和成绩表,其中这三个表的主键(sid)是统一的。

stu表结构

字段名数据结构主键外键非空唯一自增
s_idINT(11)
s_nameVARCHAR(20)
addrVARCHAR(50)
telVARCHAR(50)

 sign表结构

字段名数据结构主键外键非空唯一自增
s_idINT(11)
s_nameVARCHAR(20)
s_schVARCHAR(50)
s_sign_schVARCHAR(50)

stu_mark 表结构

字段名数据结构主键外键非空唯一自增
s_idINT(11)
s_nameVARCHAR(20)
markINT(11)

stu 表数据

s_ids_nameaddrtel
1ZhangPengHeibei13889075861
2LiXiaoShandong13953508223
3HuangYunShandong13905350996

sign 表数据

s_ids_names_schs_sign_sch
1ZhangPengHigh School1Peking University
2LiXiaoHigh School2Peking University
3HuangYunHigh School3Tsing University


mark 表数据

s_ids_namemark
1ZhangPeng730
2LiXiao725
3HuangYun736

 

2.案例操作过程

        (1)创建学生表 stu,插人三条记录。登录数据库后进人 chapter07 数据库,创建学生表,SQL语句如下所示:

mysql> CREATE TABLE stu(
    -> s_id INT(11) PRIMARY KEY,
    -> s_name VARCHAR(20) NOT NULL,
    -> addr VARCHAR(50) NOT NULL,
    -> tel VARCHAR(50) NOT NULL
    -> );
Query OK, 0 rows affected (0.05 sec)

        上述 SQL语句执行成功后,表示学生表 stu 创建成功,这时,使用 INSERT 语句向表中插入数据,SQL语句如下所示:

mysql> INSERT INTO stu
    -> VALUES (1,'zhangPeng','Hebei','13889075861'),
    -> (2,'Lixiao','shandong','13953508223'),
    -> (3,'HuangYun','Shandong','13905350996');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

        上述 INSERT 语句执行成功后,向表中插入了三条记录,分别是学生的学号、姓名所在省份和电话号码,这时,使用 SELECT 语句查看 stu 表中的数据信息,查询结果如下所示:

mysql> SELECT * FROM stu;
+------+-----------+----------+-------------+
| s_id | s_name    | addr     | tel         |
+------+-----------+----------+-------------+
|    1 | zhangPeng | Hebei    | 13889075861 |
|    2 | Lixiao    | shandong | 13953508223 |
|    3 | HuangYun  | Shandong | 13905350996 |
+------+-----------+----------+-------------+
3 rows in set (0.00 sec)

        从查询结果可以看出,在当前的数据库中创建了一个 stu表,并成功插入了三条记录,stu 表的主键为s_id。

(2)创建报名表 sign,插人三条记录。

        首先创建报名表 sign,SQL 语句如下所示:

mysql> CREATE TABLE sign(
    -> s_id INT(11) PRIMARY KEY,
    -> s_name VARCHAR(20) NOT NULL,
    -> s_sch VARCHAR(50) NOT NULL,
    -> s_sign_sch VARCHAR(50) NOT NULL
    -> );
Query OK, 0 rows affected (0.01 sec)

        上述 SQL语句执行成功后,表示报名表 sign 创建成功,接下来,使用 INSERT 语句向 sign 表中插人数据,SQL语句如下所示:

mysql> INSERT INTO sign
    -> VALUES (1,'ZhangPeng','High School1','Peking University'),
    -> (2,'LiXiao','High sehool2','Peking University'),
    -> (3,'HuangYun','High School3','Tsinghua University');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

        上述 SQL语句执行成功后,向表中插入了三条记录,分别是学生的学号、姓名、所在学校和报考的学校名称,这时,使用 SELECT 语句查看 sign 表中的数据信息,查询结果如下所示:

mysql> SELECT * FROM sign;
+------+-----------+--------------+---------------------+
| s_id | s_name    | s_sch        | s_sign_sch          |
+------+-----------+--------------+---------------------+
|    1 | ZhangPeng | High School1 | Peking University   |
|    2 | LiXiao    | High sehool2 | Peking University   |
|    3 | HuangYun  | High School3 | Tsinghua University |
+------+-----------+--------------+---------------------+
3 rows in set (0.00 sec)

        从查询结果可以看出,sign表创建成功,同时向表中插入了三条记录,sign 表的主键为s_id。

(3)创建成绩表 stu_mark,插入三条记录创建成绩表,SQL 语句如下所示:

mysql> CREATE TABLE stu_mark(
    -> s_id INT(11) PRIMARY KEY,
    -> s_name VARCHAR(20) NOT NULL,
    -> mark INT NOT NULL
    -> );
Query OK, 0 rows affected (0.01 sec)

        上述 SQL语句执行成功后,表示成绩表 stu_mark 创建成功,这时,使用 INSERT 语句向表中插入数据,执行结果如下所示:

mysql> INSERT INTO stu_mark VALUES(1,'ZhangPeng',730),(2,'LiXiao',725),(3,'HuangYun',736);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

        上述 SQL语句执行成功后,向表中插人了三条记录,分别是学生的学号、姓名和成绩,这时,使用 SELECT 语句查看 stu mark 表中的数据信息,查询结果如下所示:

mysql> SELECT * FROM stu_mark;;
+------+-----------+------+
| s_id | s_name    | mark |
+------+-----------+------+
|    1 | ZhangPeng |  730 |
|    2 | LiXiao    |  725 |
|    3 | HuangYun  |  736 |
+------+-----------+------+
3 rows in set (0.00 sec)

        从查询结果可以看出,stu_mark 表创建成功,同时向表中插人了三条记录,stu_mark表的主键为s_id。

(4)创建考上北京大学(Peking University)的学生视图。

        视图的名称为 beida,视图的内容包含考上北大的学生学号、姓名、成绩和报考学校名称4个字段,创建 beida 视图的 SQL 语句如下所示:

mysql> CREATE
    -> VIEW beida(id,name,mark,sch)
    -> AS
    -> SELECT stu_mark.s_id,stu_mark.s_name,stu_mark.mark,sign.s_sign_sch
    -> FROM stu_mark,sign
    -> WHERE stu_mark.s_id=sign.s_id
    -> AND stu_mark.mark >= 720
    -> AND sign.s_sign_sch='PeKing University';
Query OK, 0 rows affected (0.01 sec)

        上述 SQL语句执行成功后,接下来,使用查询语句查看满足条件的学生信息,执行结果如下所示:

mysql> SELECT * FROM beida;
+----+-----------+------+-------------------+
| id | name      | mark | sch               |
+----+-----------+------+-------------------+
|  1 | ZhangPeng |  730 | Peking University |
|  2 | LiXiao    |  725 | Peking University |
+----+-----------+------+-------------------+
2 rows in set (0.00 sec)

        从上述查询结果可以看出,符合北京大学录取条件的有两名学员,分别是ZhangPeng 和 LiXiao,他们的成绩分别是 730 分和 725 分。

(5)创建考上清华大学(Tsinghua University)的学生视图。

        视图的名称为 qinghua,视图的内容包含考上清华的学生学号、姓名、成绩和报考学校名称4个字段,创建 qinghua 视图的 SQL 语句如下所示:

mysql> CREATE
    -> VIEW qinghua(id,name,mark,sch)
    -> AS
    -> SELECT stu_mark.s_id,stu_mark.s_name,stu_mark.mark,sign.s_sign_sch
    -> FROM stu_mark,sign
    -> WHERE stu_mark.s_id=sign.s_id
    -> AND stu_mark.mark >= 725
    -> AND sign.s_sign_sch='Tsinghua University';
Query OK, 0 rows affected (0.00 sec)

        上述 SQL语句执行成功后,接下来使用查询语句查看满足条件的学生信息,执行结果如下所示:

mysql> SELECT * FROM qinghua;
+----+----------+------+---------------------+
| id | name     | mark | sch                 |
+----+----------+------+---------------------+
|  3 | HuangYun |  736 | Tsinghua University |
+----+----------+------+---------------------+
1 row in set (0.00 sec)

        从上述查询结果可以看出,符合清华大学录取条件的学员是HuangYun,他的成绩是 736分。

(6)更新视图 qinghua。

        HuangYun 的成绩在录人的时候录入错误,多录了10分,接下来对 HuangYun 的成绩进行修改,减去多录入的10分。在视图中可以使用UPDATE语句对基本表 stu_mark的数据进行更新,更新的 SQL 语句如下所示:

mysql> UPDATE stu_mark SET mark=mark-10 WHERE stu_mark.s_name='HuangYun';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

        上述 SQL 语句执行成功后,表示 stu_mark 表修改成功,这时,使用查询语句查看修改后的 stu_mark 表的数据,执行结果如下所示:

mysql> SELECT * FROM stu_mark;
+------+-----------+------+
| s_id | s_name    | mark |
+------+-----------+------+
|    1 | ZhangPeng |  730 |
|    2 | LiXiao    |  725 |
|    3 | HuangYun  |  726 |
+------+-----------+------+
3 rows in set (0.00 sec)

        从上述查询结果可以看出,s_name 值为 HuangYun 的学生成绩减去了多录的 10分,变为 726 分。接下来查看 qinghua 视图表中的信息情况,执行结果如下所示:

mysql> SELECT * FROM qinghua;
+----+----------+------+---------------------+
| id | name     | mark | sch                 |
+----+----------+------+---------------------+
|  3 | HuangYun |  726 | Tsinghua University |
+----+----------+------+---------------------+
1 row in set (0.00 sec)

        从上述的查询结果可以看出,HuangYun 同学的信息依然在 qinghua 视图中,因为清华大学的录取分数线是 725 分,虽然 HuangYun 同学减去了多录的 10 分,但依然以超出分数线一分的成绩,顺利被清华大学录取。

 

标签:语句,University,视图,mark,stu,应用,MySQL,sign,id
From: https://blog.csdn.net/W_Fe5/article/details/141898739

相关文章

  • Hugging Face 的应用
    大纲Hugging-Face介绍Hugging-Face大语言模型LLM管理Transformers机器学习框架文本生成推理(TGI)HuggingFaceHugging-Face--大语言模型界的GithubHuggingFace专门开发用于构建机器学习应用的工具。该公司的代表产品是其为自然语言处理应用构建的transformers库,以及允......
  • 人工智能在C/C++中的应用
    随着技术的飞速发展,人工智能(AI)已经成为我们日常生活中不可或缺的一部分。从智能手机的语音助手到自动驾驶汽车,AI的应用无处不在。在众多编程语言中,C和C++因其高性能和灵活性,成为实现复杂AI算法的理想选择。人工智能简介人工智能是计算机科学的一个分支,它试图理解智能的实质,......
  • 第 5 章多视图几何
    本章讲解如何处理多个视图,以及如何利用多个视图的几何关系来恢复照相机位置信息和三维结构。通过在不同视点拍摄的图像,我们可以利用特征匹配来计算出三维场景点以及照相机位置。本章会介绍一些基本的方法,展示一个三维重建的完整例子;本章最后将介绍如何由立体图像进行致密深度......
  • MySQL的SQL语句
    一、SQL1、概念 SQL:StructureQueryLanguage(结构化查询语言),SQL最早是被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准。后来被国际化标准组织(ISO)采纳为关系型数据库语言的国际标准。​2、分类​1)DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象......
  • Hugging Face 的应用
    大纲Hugging-Face介绍Hugging-Face大语言模型LLM管理Transformers机器学习框架文本生成推理(TGI)HuggingFaceHugging-Face--大语言模型界的GithubHuggingFace专门开发用于构建机器学习应用的工具。该公司的代表产品是其为自然语言处理应用构建的transformer......
  • JSP课程设计|基于Jsp和MySql实现的农场信息管理系统
    3.1基本开发环境配置根据上述要求,结合项目开发实际需要,我们将项目所需基本开发环境清单列出如下所示。操作系统:MicrosoftWindow10编程语言:Java编程IDE:JetBrains-IntellijIdeaUltimate服务器:Apache-Tomcat-9.0.6数据库:MySQL5.7.21CommunityServer由于这些环......
  • MySQL数据库insert,delete,update,select语句
    MySQL数据库insert,delete,update,select语句是在做数据处理是的重要部分首先我们要先拥有一个表格,这里我建立了一个student表然后在这个表格中添加一些数据这里要使用insert的语句INSERTINTOstudent(NO,NAME,age)VALUES(1001,'张三',20);这里我创建到的表有三个属性......
  • VBA高级应用30例应用3在Excel中的ListObject对象:循环列出当前工作表中的表
    《VBA高级应用30例》(版权10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三......
  • 基于“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI
      近年来,国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究,他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合,评价不同类型研究区的生态脆弱特征,其研究内容主要包括脆弱性的时空演变、动态监测、影响机......
  • Linux上rpm安装MySQL8
    1.下载安装包下载链接https://downloads.mysql.com/archives/community/或者在MySQL官网根据提示一步一步点进去选择合适的版本2.上传至服务器,解压tar-xvfmysql-8.0.33-1.el7.x86_64.rpm-bundle.tar3.安装参考官方文档https://dev.mysql.com/doc/refman/8.0/en......