数据库:头歌实验一关系数据库标准语言SQL

news2024/9/20 20:36:40

一、创建数据库

本关任务:

建立数据库

任务要求:

建立demo数据库

并显示所有数据库

 #代码开始
CREATE DATABASE demo;
show databases;
 #代码结束

二、创建表

本关任务:

建立数据表

任务要求

设有一个demo数据库,包括S,P,J,SPJ四个关系模式:
S(SNO,SNAME,STATUS,CITY)
P(PNO,PNAME,COLOR,WEIGHT)
J(JNO,JNAME,CITY)
SPJ(SNO,PNO,JNO,QTY)
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;
供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商 供应某种零件 给某工程项目的数量为QTY。

demo数据库已经创建好,请按下面步骤完成任务。

切换到demo数据库
分别创建s、p、j和spj数据表
查看s、p、j和spj数据表的详细结构
注意:表名统一用小写。

数据表结构如下:

#代码开始
 
#1. 切换到demo数据库
use demo;

#2. 分别创建s、p、j和spj数据表
create table s(
	sno char(2),/*定长*/
	sname VARCHAR(10),
	status int,
	city VARCHAR(10)
);

CREATE TABLE p(
	pno char(2),
	pname VARCHAR(10),
	color char(1),
	weight int
);

create table j(
	jno char(2),
	jname varchar(10),
	city varchar(10)
);

create table spj(
sno char(2),
pno char(2),
jno char(2),
qty int
);


#3. 查看s、p、j和spj数据表的详细结构
describe s;
describe p;
describe j;
describe spj;
 
 #代码结束

 三、插入数据

本关任务:

在s、p、j和spj数据表中插入数据。

任务要求

分别在s、p、j和spj数据表中插入数据
分别显示s、p、j和spj数据表的所有数据
s、p、j和spj数据表的原始数据如下所示:

('S1','精益',20,'天津')
('S2','盛锡',10,'北京')
('S3','东方红',30,'北京')
('S4','丰泰盛',20,'天津')
('S5','为民',30,'上海')
('P1','螺母','红',12)
('P2','螺栓','绿',17)
('P3','螺丝刀','蓝',14)
('P4','螺丝刀','红',14)
('P5','凸轮','蓝',40)
('P6','齿轮','红',30)
('J1','三建','北京')
('J2','一汽','长春')
('J3','弹簧厂','天津')
('J4','造船厂','天津')
('J5','机车厂','唐山')
('J6','无线电厂','常州')
('J7','半导体厂','南京')
('S1','P1','J1',200)
('S1','P1','J3',100)
('S1','P1','J4',700)
('S1','P2','J2',100)
('S2','P3','J1',400)
('S2','P3','J2',200)
('S2','P3','J4',500)
('S2','P3','J5',400)
('S2','P5','J1',400)
('S2','P5','J2',100)
('S3','P1','J1',200)
('S3','P3','J1',200)
('S4','P5','J1',100)
('S4','P6','J3',300)
('S4','P6','J4',200)
('S5','P2','J4',100)
('S5','P3','J1',200)
('S5','P6','J2',200)
('S5','P6','J4',500)

use demo;

#代码开始
#插入s表数据
insert into s values('S1','精益',20,'天津');
insert into s values('S2','盛锡',10,'北京');
insert into s values('S3','东方红',30,'北京');
insert into s values('S4','丰泰盛',20,'天津');
insert into s values('S5','为民',30,'上海');



#插入p表数据
insert into p values('P1','螺母','红',12),
('P2','螺栓','绿',17),
('P3','螺丝刀','蓝',14),
('P4','螺丝刀','红',14),
('P5','凸轮','蓝',40),
('P6','齿轮','红',30);



#插入j表数据
insert into j values('J1','三建','北京'),
('J2','一汽','长春'),
('J3','弹簧厂','天津'),
('J4','造船厂','天津'),
('J5','机车厂','唐山'),
('J6','无线电厂','常州'),
('J7','半导体厂','南京');



#插入spj表数据
insert into spj values('S1','P1','J1',200),
('S1','P1','J3',100),
('S1','P1','J4',700),
('S1','P2','J2',100),
('S2','P3','J1',400),
('S2','P3','J2',200),
('S2','P3','J4',500),
('S2','P3','J5',400),
('S2','P5','J1',400),
('S2','P5','J2',100),
('S3','P1','J1',200),
('S3','P3','J1',200),
('S4','P5','J1',100),
('S4','P6','J3',300),
('S4','P6','J4',200),
('S5','P2','J4',100),
('S5','P3','J1',200),
('S5','P6','J2',200),
('S5','P6','J4',500);



#分别查询s、p、j和spj表的所有数据
select * from s;
select * from p;
select * from j;
select * from spj;



 
 #代码结束

四、数据查询-基础查询

任务要求

请用SQL语句完成下面题目的查询。

查询所有供应商的姓名和所在城市(按供应商姓名升序排列)。
查询所有零件的名称、颜色、重量(按零件名称升序排列)。
注意:数据大小写要保持一致。

use demo;

#代码开始

#1. 查询所有供应商的姓名和所在城市(按供应商姓名升序排列)。
SELECT sname,city FROM s ORDER BY sname;



#2. 查询所有零件的名称、颜色、重量(按零件名称升序排列)。
SELECT pname,color,weight FROM p ORDER BY pname;

 
 #代码结束

五、数据查询-条件查询

本关任务:

按题目要求完成数据表的查询。

模糊查询
模糊查询使用like关键字,可以使用通配符进行占位:

_ : 代表单个任意字符
% : 代表任意个数字符

任务要求

请用SQL语句完成下面题目的查询。

查询供应工程J1零件的供应商号码(去除重复,按供应商号码升序排列)。
查询供应工程J1零件P1的供应商号码(按供应商号码升序排列)。
查询使用供应商S1所供应零件的工程号码(按工程号码升序排列)。
注意:数据大小写要保持一致。

use demo;

#代码开始
#1. 查询供应工程J1零件的供应商号码(去除重复,按供应商号码升序排列)。
SELECT DISTINCT sno FROM spj WHERE jno='J1' ORDER BY sno;

#2. 查询供应工程J1零件P1的供应商号码(按供应商号码升序排列)。
SELECT DISTINCT sno FROM spj WHERE jno='J1' AND pno='P1' ORDER BY sno;

#3. 查询使用供应商S1所供应零件的工程号码(按工程号码升序排列)。
SELECT DISTINCT jno FROM spj WHERE sno='S1' ORDER BY jno ORDER BY ;


#代码结束

六、数据查询-连接查询

本关任务:

按题目要求完成数据表的查询。

任务要求

请用SQL语句完成下面题目的查询。

查询工程项目J2使用的各种零件的名称及其数量(按零件名称升序排列)。
查询上海厂商供应的所有零件号码(去除重复,按零件号码升序排列)。
查询使用上海产的零件的工程名称(按工程名称升序排列,去除重复数据)。
注意:数据大小写要保持一致。

use demo;

#代码开始

#1. 查询工程项目J2使用的各种零件的名称及其数量(按零件名称升序排列)。
SELECT pname,qty FROM spj NATURAL JOIN p WHERE jno='J2' ORDER BY pname;


#2. 查询上海厂商供应的所有零件号码(去除重复,按零件号码升序排列)。
SELECT DISTINCT pno FROM p NATURAL JOIN spj NATURAL JOIN s  WHERE s.city='上海' ORDER BY pno;


#3. 查询使用上海产的零件的工程名称(按工程名称升序排列,去除重复数据)。

SELECT j.jname FROM j WHERE j.jno IN(SELECT spj.jno FROM spj WHERE spj.sno IN(SELECT s.sno FROM s WHERE s.city='上海')) ORDER BY j.jname

#代码结束

七、数据查询-子查询

任务要求

请用SQL语句完成下面题目的查询。

查询供应工程J1零件为红色的供应商号码(按供应商号码升序排列)。
查询没有使用天津供应商生产的红色零件的工程号码(去除重复数据,按工程号码升序排列)。
注意:数据大小写要保持一致。

use demo;

#代码开始

#1. 查询供应工程J1零件为红色的供应商号码(按供应商号码升序排列)。
SELECT DISTINCT sno FROM spj NATURAL JOIN p WHERE jno='J1' AND color='红' ORDER BY sno;



#2. 查询没有使用天津供应商生产的红色零件的工程号码(去除重复数据,按工程号码升序排列)。
select distinct jno from spj where jno not in(
select jno from spj natural join s natural join p where s.city='天津' and p.color='红'
) ORDER BY jno;



#代码结束

八、修改数据

任务要求

请用SQL语句完成下面题目。

把全部红色零件的颜色改成蓝色。
由S5供给J4的零件P6改为由S3供应。
从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
请将(S2,J6,P4,200)插入供应情况关系表。
数据修改完后请和原始数据进行比对以查看修改结果。

use demo;

#代码开始
#1. 把全部红色零件的颜色改成蓝色。
UPDATE p SET color='蓝' WHERE color='红';


#2. 由S5供给J4的零件P6改为由S3供应。
UPDATE spj SET sno='S3' WHERE sno='S5' AND pno='P6' AND jno='J4';


#3. 从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
DELETE FROM s WHERE sno='S2';
DELETE FROM spj WHERE sno='S2';


#4. 请将(S2,J6,P4,200)插入供应情况关系表。
INSERT INTO spj(sno,jno,pno,qty) VALUES ('S2','J6','P4',200);


#代码结束

#评测使用,不要删除下面代码
select * from s;
select * from p;
select * from spj;

九、创建视图

任务要求

请为三建工程项目建立一个供应情况的视图(v_spj),包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
查看视图(v_spj)信息。
针对视图(v_spj)完成下列查询:
(1) 查询三建工程项目使用的各种零件代码及其总数量(total)
提示:利用聚合函数sum()和分组查询实现,总数量起别名total。
(2) 查询供应商S1的供应情况。

use demo;

#代码开始
#1. 请为“三建”工程项目建立一个供应情况的视图(v_spj),包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
CREATE VIEW v_spj
AS SELECT sno,pno,qty FROM spj NATURAL JOIN j WHERE jname='三建';
DESCRIBE v_spj;

#2. 查看视图(v_spj)信息。



#针对视图(v_spj)完成下列查询:
#(1) 查询“三建”工程项目使用的各种零件代码及其总数量(total)
#提示:利用聚合函数sum()和分组查询实现,总数量起别名total。
SELECT pno,sum(qty) AS total
FROM v_spj
GROUP BY pno;


#(2) 查询供应商S1的供应情况。

SELECT sno,pno,qty
FROM v_spj
WHERE sno='S1';

#代码结束

十、定义索引

任务要求

在spj表定义索引IDX_SPJ,包括(sno,pno,jno)。
查看spj表索引定义。
 

use demo;

#代码开始

# 1.在spj表定义索引IDX_SPJ,包括(sno,pno,jno)。
CREATE INDEX IDX_SPJ ON spj(sno,pno,jno);


# 2. 查看spj表索引定义。
SHOW INDEX FROM spj;

#代码结束

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

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

相关文章

Android 动态性能框架 (ADPF)

Performance Hint API | Android game development | Android Developers (google.cn) ADPF 是一组 API,可让游戏和性能密集型应用更为直接地与 Android 设备的电源和散热系统进行互动。借助这些 API,您可以监控 Android 系统上的动态行为&#xff…

给Ubuntu添加硬盘之后,该如何使用

当你给Ubuntu系统添加了新的硬盘后,你需要按照以下步骤来识别、分区、格式化和挂载新硬盘: 1. 检查新硬盘是否被系统识别 首先确认新硬盘已经被系统识别: lsblk 2. 分区新硬盘 如果硬盘没有分区或者需要重新分区,可以使用fdis…

Open3D mesh 获取网格属性

目录 一、概述 二、网格属性 三、实现代码 四、实现效果 4.1原始mesh 4.2数据显示 Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述 在 Open3D 中,网格模…

kubectl陈述式资源管理方式、声明式资源管理

一、命令行: kubectl命令行工具 优点: 90%以上的场景都可以满足 对资源的增,删,查比较方便,对改不是很友好 缺点:命令比较冗长,复杂难记 声明方式:k8s当中的yaml文件实现资源管理----声明式 GUI:图形化工具的管理…

谷歌又出三款Gemini模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

uniapp、微信小程序车牌的录入的解决方案

结合uv-ui进行编写&#xff0c;键盘使用uv-ui的组件&#xff0c;其他由我们自己编写。 <template><div class"addCarContent"><div class"boxContent"><div class"carCodeInput" click"getIndex"><div:cl…

中间件实时监控,运维难题一站解决

中间件是介于操作系统和在其上运行的应用程序之间的软件&#xff0c;实现了分布式应用程序的通信和数据管理&#xff0c;用于协调不同的系统和组件之间的通信&#xff0c;是连接应用与底层资源之间的桥梁。因此&#xff0c;中间件的稳定与高可用对于整个业务系统的可靠性和性能…

算法题:单词接龙

单词接龙 字典 wordList 中从单词 beginWord 到 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk&#xff1a; 每一对相邻的单词只差一个字母。 对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中。注意&#xf…

倒计时1天!每日一题,零基础入门FPGA

近年来&#xff0c;FPGA工程师凭借着远高于传统软件开发工程师的薪酬&#xff0c;吸引了越来越多的人转行。 然而&#xff0c;入门FPGA并非易事。你需要有清晰的学习路线&#xff0c;包括它的基本组成&#xff08;如可编程逻辑块CLB、输入输出块IOB、内部连线资源等&#xff0…

【单片机开发】单片机的烧录方式详解(ICP、IAP、ISP)

【前言】 在单片机开发过程中&#xff0c;程序的烧录是一个至关重要的环节。随着技术的不断演进&#xff0c;单片机烧录方式也日益多样化。本文将重点讲解单片机中三种常见的烧录方式&#xff1a;ICP&#xff08;In-Circuit Programming&#xff09;、ISP&#xff08;In-Syste…

html+css+js网页设计 婚庆类型模版 12个页面

htmlcssjs网页设计 婚庆类型模版 12个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&am…

【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;算法 目录​​​​​​​ 前言 一、三路快排的整体思路 二、三路快排的具体实现 1.测试数据、交换函数和三数取中法 2.三路快排函数 三、程序全部代码 总…

vue手机端 搜索框调起带搜索键盘,点击确认自动关闭

效果如下图 步骤&#xff1a; 1.html,所需配置参数都在下图 <el-form :inline"true" :mode"serchFormf" class"searchForm" action"javascript:return true;"><el-form-item label"" ><el-inputsize"…

Oracle DG备库应用延迟问题分析处理

1.情况说明 分享一个之前的案例&#xff0c;客户备库出现间歇性的日志应用延迟&#xff0c;延迟最高时刻需经过约50分钟左右才能将日志追平。 2.详细记录 2.1、问题发现 数据库的DG1备库出现间歇性的日志应用延迟&#xff0c;具体表现为备库apply lag延迟过高。影响到数据库的…

基于Atlas200DK部署yolov5(v6.0)

Atlas200_YOLOv5_DVPP_AIPP 在Atlas200DK平台上基于DVPP和AIPP实现部署YOLOv5&#xff08;v6.0&#xff09; DVPP解码JPG&#xff0c;并Resize AIPP实现颜色转换&#xff1a;YUV420sp_U8 to RGB 效果&#xff1a; 前处理推理后处理5.21ms1.09ms4.41ms 环境&#xff1a;…

【hot100篇-python刷题记录】【多数元素】

R6-技巧篇 直接哈希表计数得了 查找最大&#xff0c;可以不用一次遍历&#xff0c;直接sort排序哈希表&#xff08;按值排列&#xff09;也可以 class Solution:def majorityElement(self, nums: List[int]) -> int:nlen(nums)tn//2dictdefaultdict(int)for num in nums:d…

C语言练习题2

1.基本运算符 /*基本运算符*/ #include<stdio.h> int main() {int a 10;int b 20;printf("%d %d %d %d", a b, a - b, a * b, a / b); }加减乘除是语言当中最基本的运算符。因为除法中都是整数&#xff0c;所以除法的结果只保留整数。要想获取小数部分除法…

IntelliJ IDEA修改默认.m2和.gradle缓存路径

IntelliJ IDEA修改默认.m2和.gradle缓存路径 在idea.exe安装路径下&#xff0c;找到\bin\idea.properties文件&#xff0c;打开&#xff0c;在后面追加两行&#xff08;如果没有&#xff09;&#xff1a; gradle.user.homeD:/program/gradle新位置maven_repositoryD:/program/m…

微服务框架一

微服务 配置描述 没有配置中心 建立配置中心后 配置中心在微服务的地位 主流配置中心对比 安装Nacos open API配置管理测试 配置外部mysql连接 Nacos每层含义 命名空间

从零开始掌握Vue实例

从零开始掌握Vue实例&#xff1a;深入理解数据绑定与生命周期的核心秘诀 引言 简要介绍主题&#xff1a; 在学习Vue.js的过程中&#xff0c;Vue实例是最基础也是最关键的部分。Vue实例是Vue应用的核心&#xff0c;它是数据、DOM元素和Vue组件之间的桥梁。掌握Vue实例的使用对于…