MY SQL 实验四:

一、实验目的

     通过该实验掌握较复杂的SQL 查询数据库方法,包括嵌套查询,相关与不相关子查询,连接的多种方法等。

 二、实验原理

   数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询。

   SELECT[ALL|DISTINCT]<目标列表达式〉[,<目标列表达式〉]...

   FROM<表名或视图名〉[,<表名或视图名〉]...

   [WHERE<条件表达式>]

   [GROUP BY<列名1〉[HAVING<条件表达式>]]

   [ORDERBY<列名2〉[ASC|DESC]]

  三、实验条件

     windows7 操作系统, mysql5.6 数据库服务器,可视化管理平台:Mysql Workbench5.2 。

  四、实验内容和方法

    (一) 建立实验数据库

        根据上一次实验用脚本TradeDBSQL.txt创建数据库Trade.

   (二) 安装及使用Mysql Workbench (如果没有安装Mysql Workbench 可按以前的实验方法在命令窗口进行)       

     MySQL Workbench 综合了SQL 开发,服务器管理及数据库设计等功能的综合性可视化平台。MySQL Workbench为数据库管理员、程序开发者和系统规划师提供可视化设计、模型建立、以及数据库管理功能。

     将老师提供的压缩包(免安装版),放置在e:根目录下,解压缩 -> 双击MySQLWorkbench.exe -> 将出现一个界面。

     界面包括三个部分:

        1. SQL Development (用于连接现有的数据库,运行SQL脚本,管理数据库对象等)

2. Data Modeling (用于数据库的建模设计,将来涉及)

3. Server Administration (管理数据库服务器,导入导出数据库,及用户安全性等)

  本次实验采用第一部分SQL Development

    1.建立与数据库服务器的连接,连接名con1

   1) 点击 ‘New Connection' 按钮,跳出配置窗口

   2) 在Connection Name 命名 连接名例如con1,其他都按默认的方式,password部分:点击Store in Vault..,在跳出的窗口中的password输入密码,无就按回车。

   3) 在Default Schema:中可以保持空,或者直接输入缺省数据库名,例如Trade

           4) 按 Test Connection 测试是否连接成功。如果成功,按ok按钮。

   

    2. 进入数据库服务器

       在连接名con1上按鼠标右键有两个重要选项: 1.Query Database (连接数据库);2.Start Command Line Client (进入命令行窗口,与以前的实验一样)。

       1)点击'Query Database'进入可视化窗口,显示已有的数据库清单。

       2)在右边的'Query"的窗口,可以输入sql 语句,运行查询结果。

       3)输入use Trade; 按执行按钮,将数据库切换到trade中。

       4)输入查询语句,例如 select * from orders; 将在下方窗口出现查询结果,可以将查询结果导出到外部文件中(点击Export按钮)

   

   (三) 高级查询方法

    1.自连接

     一张表可以拆分为多张表,并且用别名表示。

    例如 查找员工上级(经理)的姓名 (参考教科书例子 查询每一门课的间接先修课(即先修课的先修课))

  SELECT

  CONCAT(y.LastName , ' ', y.FirstName) AS `经理`,

  CONCAT(x.LastName, ' ', x.FirstName) AS `员工`

FROM

  employees x, employees y

 where  x.ReportsTo = y.employeeID

  order by y.employeeID;

   其中CONCAT为字符串函数,连接字符串.  

 

 

  2. 交叉连接 cross join , 笛卡尔积

     比较下列两个查询结果

     1) select * from products cross join Categories;

     2) select * from products,Categories;

  3. 内连接, inner join , 等值连接

      比较下列两个查询结果

   select * from products inner join Categories on products.CategoryID=Categories.CategoryID;

           select * from products , Categories where products.CategoryID=Categories.CategoryID    

  4. 外连接,左、右连

      

    查询没有下过定单的客户名称  

  select customers.companyname,orderID

    from customers left join orders on customers.customerID=orders.customerID

   where orderID is null;

     写出等价的右连查询(提示right join)

 

  5. any, all 谓词

   类别2各个产品的库存量与类别1各个产品的库存量比较

   select productName from Products where categoryID='2' and UnitsinStock >=any (select unitsinStock from Products where categoryID='1');

   执行此查询语句,说明">=any"谓词修饰符的含义。

  分别用下列谓词修饰符,代替 ">=any" 并说明比较结果。  

   > ANY 大于子查询结果中的某个值

      

   > ALL 大于子查询结果中的所有值

   < ANY 小于子查询结果中的某个值

     < ALL 小于子查询结果中的所有值

   >= ANY 大于等于子查询结果中的某个值

      >= ALL 大于等于子查询结果中的所有值

   <= ANY 小于等于子查询结果中的某个值

       <= ALL 小于等于子查询结果中的所有值

   = ANY 等于子查询结果中的某个值   

   =ALL 等于子查询结果中的所有值(通常没有实际意义)

   !=(或<>)ANY 不等于子查询结果中的某个值

   !=(或<>)ALL 不等于子查询结果中的任何一个值

  6.理解下列查询的意义,写出具体的查询要求

  1)  

  SELECT DISTINCT

   Customers.CustomerID,

   Customers.CompanyName,

   Customers.City

FROM Customers

   JOIN Orders ON Customers.CustomerID = Orders.CustomerID

WHERE Orders.OrderDate BETWEEN '1997-01-01' And '1997-12-31';

查询发货日期从1997-01-01到1997-12-31的客户ID,公司名称,客户城市.

  2)

  SELECT

   OrderDetails.OrderID,

   Sum(ROUND(OrderDetails.UnitPrice*Quantity*(1-Discount))) AS 订购额  

  FROM OrderDetails

  GROUP BY OrderDetails.OrderID   limit 2\G;

根据订单ID查询该ID下的订购总额,并以订单额命名.

  3)

  select orders.customerID,count(orderdetails.productID)

  from orders,orderdetails

  where orders.orderID=orderdetails.orderID

  group by orders.customerID

  having count(orderdetails.productID)>20

  order by orders.customerID;

根据客户ID查询客户ID,客户订单总量大于20的所有客户ID和该客户订单总量

   4)

     select suppliers.CompanyName,Customers.CompanyName,suppliers.city,customers.city

     from suppliers,customers

     where suppliers.city=customers.city;

查询运货商公司的城市=客户公司城市的运货商城市名称和城市,客户公司名称和城市

  

  7.思考题  

   

    1)查找至少订购了订单ID为10251订购的全部产品的订单ID

  第一种:select OrderDetails.OrderID , count(distinct OrderDetails.ProductID) from Products,OrderDetails

       where OrderDetails.ProductID=Products.ProductID and OrderDetails.OrderID='10251'

      group by OrderDetails.OrderID

      having count(distinct OrderDetails.ProductID)>= (select count(distinct ProductID) from OrderDetails where OrderID='10251' );

 第二种:SELECT DISTINCT OrderID

       FROM OrderDetails OrderDetailsx

       WHERE NOT EXISTS

                     (SELECT *

                      FROM OrderDetails OrderDetailsy

                      WHERE OrderDetailsy.OrderID = '10251'  AND

                                    NOT EXISTS

                                    (SELECT *

                                     FROM OrderDetails OrderDetailsz

                                     WHERE OrderDetailsz.OrderID=OrderDetailsx.OrderID AND

                                                   OrderDetailsz.ProductID=OrderDetailsy.ProductID));

     

     提示:

   参考教材“查询至少选修了学生200215122选修的全部课程的学生号码。”

   SELECT DISTINCT Sno

       FROM SC SCX

       WHERE NOT EXISTS

                     (SELECT *

                      FROM SC SCY

                      WHERE SCY.Sno = '200215122'  AND

                                    NOT EXISTS

                                    (SELECT *

                                     FROM SC SCZ

                                     WHERE SCZ.Sno=SCX.Sno AND

                                                   SCZ.Cno=SCY.Cno));

   等价SQL

     select x.sno, count(distinct x.cno) from sc x,sc y

       where x.cno=y.cno and y.sno='200215122'

      group by x.sno

      having count(distinct x.cno)>= (select count(distinct cno) from sc where sno='200215122' );

    2)查找1996年8月份,订购量最大的公司名称及所在的城市。

select Suppliers.CompanyName,Suppliers.City,Products.ProductID,sum(round(OrderDetails.Quantity)) from OrderDetails,Products,Suppliers, Orders where Products.ProductID=OrderDetails.ProductID and Suppliers.SupplierID=Products.SupplierID and year(Orders.OrderDate)=1996 and month(Orders.OrderDate)=8 group by OrderDetails.ProductID order by sum(round(OrderDetails.Quantity)) desc;

    3)查找1996年销售最好的产品名称及相关产品的供应商名称。

select Products.ProductName,Suppliers.CompanyName,sum(UnitsOnOrder+ReorderLevel) from Products,Suppliers,Orders,OrderDetails where Products.SupplierID=Suppliers.SupplierID and OrderDetails.ProductID=Products.ProductID and year(Orders.OrderDate)=1996 group by Products.ProductID order by sum(UnitsOnOrder+ReorderLevel) desc;

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

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

相关文章

初识C++ · 内存管理

目录 1 C/C的内存分布 2 C语言的内存管理 3 C的内存管理 4 operator new 和 operator delete 5 定位new 1 C/C的内存分布 语言不同&#xff0c;内存分布是相同的&#xff0c;对于局部变量都是放在栈上&#xff0c;全局变量都是放在静态区&#xff08;数据段&#xff09;&…

jvm重要参数可视化和线上问题排查

jvm重要参数可视化和线上问题排查 目标jvm参数分类(了解)运行时数据区相关的&#xff08;jdk1.8&#xff09;处理 OOM 相关的垃圾回收器相关的GC 日志记录相关的意义,默认值,调优原则&#xff08;重要&#xff0c; 待拆分&#xff09; 排查 OOM 流程 和 常见原因参考文章 目标 …

基于C语言中的类型转换,C++标准创造出了更加可视化的类型转换

目录 前言 一、 C语言中的类型转换 二、为什么C需要四种类型转换 三、C中新增的四种强制类型转换操作符以及它们的应用场景 1.static_cast 2.reinterpret_cast 3.const_cast 4.dynamic_cast 前言 在C语言中&#xff0c;如果赋值运算符左右两侧的类型不同&#xff0c;或者…

短视频矩阵系统贴牌---saas源头开发

一、短视频矩阵运营注意事项&#xff1a; 如&#xff1a;房产行业 短视频矩阵运营是一个系统化的项目&#xff0c;涉及多个平台和账号的管理&#xff0c;以及内容的创作、发布和优化等多个方面。 以下是短视频矩阵运营的注意事项文档的概要以及结果运营数据 一周持续运营量 二…

uni-app 多列picker切换列显示对应内容

html部分&#xff1a; <view class"uni-list"><view class"uni-list-cell"><view class"uni-list-cell-left">选择用户</view><view class"uni-list-cell-db"><picker mode"multiSelector"…

【JavaWeb】网上蛋糕商城后台-类目管理,退出

概念 本文讲解和实现类目管理和管理员的退出功能。 类目列表信息 点击类目管理&#xff0c;向服务器发送请求/admin/type_list 在servlet包中创建AdminTypeListServlet类&#xff0c;获得所有商品分类 package servlet;import model.Type; import service.TypeService;impo…

网站localhost和127.0.0.1可以访问,本地ip不可访问解决方案

部署了一个网站, 使用localhost和127.0.0.1加端口号可以访问, 但是使用本机的ip地址加端口号却不行. 原因可能有多种. 可能的原因: 1 首先要确认是否localhost对应的端口是通的(直接网址访问), 以及你无法访问的那个本机ip是否正确(使用ping测试)&#xff1b; 2 检查本机的防火…

堆的基本操作(c语言实现)

1.堆的基本操作 1.1定义堆 typedef int HPDataType;//堆中存储数据的类型typedef struct Heap {HPDataType* a;//用于存储数据的数组int size;//记录堆中已有元素个数int capacity;//记录堆的容量 }HP;1.2初始化堆 然后我们需要一个初始化函数&#xff0c;对刚创建的堆进行初…

软件测试开发之 职业发展必备 能力模型解析

为什么要了解能力模型 王阳明曾在《传习录》中提到过一个思想&#xff1a;以终为始。所谓“以终为始”&#xff0c;意味着在行动的开始阶段就要考虑到最终的目标和结果&#xff0c;以此来指导自己的行动和选择。那么如果我们想在自己的行业内获取好的职业发展&#xff0c;第一…

Meta更低的训练成本取得更好的性能: 多token预测(Multi-Token Prediction)

Meta提出了一种透过多token预测(Multi-token Prediction)来训练更好、更快的大型语言模型的方法。这篇论文的重点如下: 训练语言模型同时预测多个未来的token,可以提高样本效率(sample efficiency)。 在推论阶段,使用多token预测可以达到最高3倍的加速。 论文的主要贡献包括: …

2024年Delphi自学培训网络资源

概述 Delphi 是一种基于 Object Pascal 的面向对象编程语言。最初&#xff0c;Delphi 是作为构建 Windows 应用程序的工具而创建的&#xff0c;并于 1995 年发布。从那时起&#xff0c;这些技术向前迈出了一大步&#xff0c;Delphi也不例外。尽管第一个用 Delphi 编写的应用程…

Windows 10 中使用 Montreal-Forced-Aligner (MFA) 实现音频和文本强制对齐

文章目录 一、实现目标二、安装 Montreal-Forced-Aligner1、使用 Anaconda 虚拟环境2、修改默认下载路径3、安装 montreal-forced-aligner 及相关第三方包4、验证是否安装成功 三、下载声学模型和发音词典1、命令行方式下载2、手动方式下载 四、强制对齐1、准备音频及对应文本2…

docker学习笔记(三)搭建NFS服务实验

目录 什么是NFS 简单架构​编辑 一.搭建nfs服务器 二.新建共享目录和网页文件 三.设置共享目录 四&#xff1a;创建使用nfs共享目录的卷 五&#xff1a;创建容器使用nfs-web-1卷 六&#xff1a;测试访问 七&#xff1a;是否同步测试 什么是NFS NFS 服务器&#xff1a;ne…

人工智能将改变科研?从胰腺癌早筛到新药研发

去年底英国《自然》杂志刊文预测的2024年十大科学进展中&#xff0c;人工智能的进步和ChatGPT人工智能占据前两位。那么&#xff0c;人工智能对于科学而言&#xff0c;它的哪些成果将带来有益的发展&#xff1f;今天我们请知名科普作者张田勘来聊聊这个话题。 &#xff08;1&am…

万兆以太网MAC设计(13)主机与FPGA之间进行PING

文章目录 前言&#xff1a;一、ICMP校验和计算二、上板效果1、终端命令行1、wireshark捕捉 前言&#xff1a; 在上板尝试进行PING操作的时候&#xff0c;发现一直是请求超时的情况&#xff0c;结果排查发现是首部校验和没有计算的问题。在UDP层&#xff0c;我们不进行校验和是…

ReentrantReadWriteLock源码分析

ReentrantReadWriteLock是基于AQS实现的读写锁&#xff0c;读锁与读锁不互斥、读锁与写锁互斥、写锁与写锁互斥。 类的继承关系 AQS提供了共享和排它两种模式&#xff0c;acquire/release、acquireShared/releaseShared 是AQS里面的两对模板方法。写锁是排它模式基于acquire/…

Yii2 自动生成php代码

文档地址&#xff1a;入门&#xff08;Getting Started&#xff09;: 用 Gii 生成代码&#xff08;Generating Code with Gii&#xff09; - Yii 2.0 权威指南 - 文档 - Yii Framework 中文网 找到配置文件&#xff0c;以我的项目为例&#xff1a; 因为的是开启了路由美化所以访…

在线扭蛋机小程序:商家稳占市场的新突破口

近几年&#xff0c;扭蛋机进入了爆发期&#xff0c;动漫、游戏的发展更是推动了市场的发展&#xff0c;我国扭蛋机正在蓬勃发展中。 不过&#xff0c;在市场规模扩大下&#xff0c;扭蛋机行业的竞争力也在同时加大&#xff0c;企业商家需要在市场竞争中寻求发展新思路&#xf…

开源推荐榜【FunClip是一款完全开源、本地部署的自动化视频剪辑工具】

FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&#xff0c;点击裁剪按钮即可获取对应片段的视频&#xff08;…

基于EBAZ4205矿板的图像处理:12图像二值化(阈值可调)

基于EBAZ4205矿板的图像处理&#xff1a;12图像二值化(阈值可调) 我的项目是基于EBAZ4205矿板的阈值可调的图像阈值二值化处理&#xff0c;可以通过按键调整二值化的阈值&#xff0c;key1为阈值加1&#xff0c;key4为阈值减1&#xff0c;key2为阈值加10&#xff0c;key5为阈值…
最新文章