首页 > 数据库 >实验一 关系数据库标准语言SQL

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

时间:2024-03-29 09:03:39浏览次数:33  
标签:INSERT sno INTO spj 关系数据库 实验 SQL VALUES jno

第1关:创建数据库

 #代码开始
CREATE DATABASE demo;

show databases;
 #代码结束

第2关:创建表

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


#2. 分别创建s、p、j和spj数据表
#创建s表:
CREATE TABLE s (
    sno CHAR(2),
    sname VARCHAR(10),
    status INT,
    city VARCHAR(10)
);

#创建p表:
CREATE TABLE p (
    pno CHAR(2),
    pname VARCHAR(10),
    color CHAR(1),
    weight INT
);

#创建j表:
CREATE TABLE j (
    jno CHAR(2),
    jname VARCHAR(10),
    city VARCHAR(10)
);

#创建spj表:
CREATE TABLE spj (
    sno CHAR(2),
    pno CHAR(2),
    jno CHAR(2),
    qty INT
);

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

第3关:插入数据

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);
INSERT INTO p   VALUES('P2','螺栓','绿',17);
INSERT INTO p  VALUES('P3','螺丝刀','蓝',14);
INSERT INTO p   VALUES('P4','螺丝刀','红',14);
INSERT INTO p   VALUES('P5','凸轮','蓝',40);
INSERT INTO p   VALUES('P6','齿轮','红',30);
 
 
#插入j表数据
INSERT INTO j   VALUES('J1','三建','北京');
INSERT INTO j   VALUES('J2','一汽','长春');
INSERT INTO j   VALUES('J3','弹簧厂','天津');
INSERT INTO j   VALUES('J4','造船厂','天津');
INSERT INTO j   VALUES('J5','机车厂','唐山');
INSERT INTO j   VALUES('J6','无线电厂','常州');
INSERT INTO j   VALUES('J7','半导体厂','南京');
#插入spj表数据
INSERT INTO spj   VALUES('S1','P1','J1',200);
INSERT INTO spj   VALUES('S1','P1','J3',100);
INSERT INTO spj   VALUES('S1','P1','J4',700);
INSERT INTO spj   VALUES('S1','P2','J2',100);
INSERT INTO spj   VALUES('S2','P3','J1',400);
INSERT INTO spj   VALUES('S2','P3','J2',200);
INSERT INTO spj   VALUES('S2','P3','J4',500);
INSERT INTO spj   VALUES('S2','P3','J5',400);
INSERT INTO spj   VALUES('S2','P5','J1',400);
INSERT INTO spj   VALUES('S2','P5','J2',100);
INSERT INTO spj   VALUES('S3','P1','J1',200);
INSERT INTO spj   VALUES('S3','P3','J1',200);
INSERT INTO spj   VALUES('S4','P5','J1',100);
INSERT INTO spj   VALUES('S4','P6','J3',300);
INSERT INTO spj   VALUES('S4','P6','J4',200);
INSERT INTO spj   VALUES('S5','P2','J4',100);
INSERT INTO spj   VALUES('S5','P3','J1',200);
INSERT INTO spj   VALUES('S5','P6','J2',200);
INSERT INTO spj   VALUES('S5','P6','J4',500);
#分别查询s、p、j和spj表的所有数据
select * from s;
select * from p;
select * from j;
select * from spj;
 #代码结束

第4关:数据查询-基础查询

use demo;
 
#代码开始
 
#1. 查询所有供应商的姓名和所在城市(按供应商姓名升序排列)。
select s.sname,s.city from s order by s.sname;
 
 
#2. 查询所有零件的名称、颜色、重量(按零件名称升序排列)。
select p.pname,p.color,p.weight from p order by p.pname;
 
 #代码结束

第5关:数据查询-条件查询

use demo;
 
#代码开始
#1. 查询供应工程J1零件的供应商号码(去除重复,按供应商号码升序排列)。
 
SELECT distinct spj.sno FROM spj  WHERE jno='J1'  ; 
 
#2. 查询供应工程J1零件P1的供应商号码(按供应商号码升序排列)。
 
SELECT  spj.sno FROM spj WHERE spj.jno='J1' AND spj.pno ='P1';
 
#3. 查询使用供应商S1所供应零件的工程号码(按工程号码升序排列)。
 
SELECT spj.jno FROM spj WHERE spj.sno="S1" order by spj.jno;
 
 
#代码结束

第6关:数据查询-连接查询

use demo;
 
#代码开始
 
#1. 查询工程项目J2使用的各种零件的名称及其数量(按零件名称升序排列)。
select  p.pname,spj.qty from p,spj where p.pno=spj.pno and spj.jno='J2' order by p.pname;
 
 
#2. 查询上海厂商供应的所有零件号码(去除重复,按零件号码升序排列)。
SELECT spj.pno FROM spj WHERE spj.sno IN(SELECT s.`SNO` FROM s WHERE s.city='上海') GROUP BY spj.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
 
 
#代码结束

第7关:数据查询-子查询

use demo;
 
#代码开始
 
#1. 查询供应工程J1零件为红色的供应商号码(按供应商号码升序排列)。
 
 
SELECT spj.sno FROM spj WHERE spj.jno='J1' and spj.pno in (SELECT p.pno from p where p.color='红');
 
 
 
#2. 查询没有使用天津供应商生产的红色零件的工程号码(去除重复数据,按工程号码升序排列)。
#找到天津生产的零件
SELECT DISTINCT jno FROM spj WHERE jno NOT IN (SELECT DISTINCT jno FROM spj NATURAL JOIN p NATURAL JOIN s WHERE city='天津' AND color='红') order by jno asc;
 
 
#代码结束

第8关:修改数据

use demo;
 
#代码开始
#1. 把全部红色零件的颜色改成蓝色。
UPDATE p SET p.color='蓝' WHERE p.color='红';
 
 
#2. 由S5供给J4的零件P6改为由S3供应。
UPDATE spj SET spj.sno='S3'  WHERE spj.sno='S5' AND spj.pno='P6' and spj.jno='J4';
 
#3. 从供应商关系中删除供应商号是S2的记录,并从供应情况关系中删除相应的记录。
 
DELETE FROM s WHERE s.sno='S2';
DELETE FROM spj WHERE spj.sno='S2';
#4. 请将(S2,J6,P4,200)插入供应情况关系表。
INSERT INTO spj VALUE('S2','P4','J6',200);
 
 
#代码结束
 
#评测使用,不要删除下面代码
select * from s;
select * from p;
select * from spj;

第9关:创建视图

use demo;
 
#代码开始
#1. 请为“三建”工程项目建立一个供应情况的视图(v_spj),包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
CREATE VIEW v_spj(sno,pno,qty) AS SELECT sno,pno,qty FROM spj WHERE jno=(SELECT jno FROM j WHERE jname='三建');
 
#2. 查看视图(v_spj)信息。
desc v_spj;
 
 
#针对视图(v_spj)完成下列查询:
#(1) 查询“三建”工程项目使用的各种零件代码及其总数量(total)
#提示:利用聚合函数sum()和分组查询实现,总数量起别名total。
 
SELECT pno,SUM(qty) total  FROM v_spj   GROUP BY pno;
 
#(2) 查询供应商S1的供应情况。
 
sELECT sno,pno,qty FROM v_spj WHERE sno='S1';
#代码结束

第10关:定义索引

use demo;
 
#代码开始
 
# 1.在spj表定义索引IDX_SPJ,包括(sno,pno,jno)。
ALTER TABLE spj ADD INDEX IDX_SPJ(sno,pno,jno);
 
# 2. 查看spj表索引定义。
SHOW INDEX FROM spj;
 
#代码结束

标签:INSERT,sno,INTO,spj,关系数据库,实验,SQL,VALUES,jno
From: https://www.cnblogs.com/whwh/p/18102992

相关文章

  • 面试题知识点笔记-MySQL开发
    目录可以使用MySQL直接存储文件(ppt,exel,图像等)吗?什么时候存,什么时候不存?Emoji乱码怎么办?存储的时候有遇到过什么问题吗?如何存储ip地址?长文本如何存储?大段文本如何设计表结构?大段文本查找时如何建立索引?有没有在开发中使用过TEXT,BLOB数据类型日期,时间如何存......
  • 面试题知识点笔记-MySQL日志
    目录MysqI会产生几种日志?binlog作用是什么?redolog作用是什么?undolog作用是什么?Mysql日志是否实时写入磁盘?binlog刷盘机制是如何实现的?redolog刷盘机制是如何实现的?undolog刷盘机制是如何实现的?MySQL的binlog有有几种录入格式?分别有什么区别?Mysq!集群同......
  • 综合实验,策略路由(BFD,NAT)
    涉及:VLANVLANIFaccesstrunkDHCPRIPOSPFACLNATBFD策略路由iproute-static[preference]LoopBack  <Huawei>system-view[Huawei]sysnameacsw[acsw]undoinfo-centerenable[acsw]vlanbatch1020[acsw]intg0/0/24[acsw-GigabitEthernet0/0/24]p......
  • 安装MySQL8.0.x并修改密码
    安装MySQL8.0.x并修改密码https://mysql.net.cn/doc/refman/8.0/en/docker-mysql-getting-started.html拉取镜像debian@debian:~$sudodockerpullmysql:8.0.25[sudo]passwordfordebian:8.0.25:Pullingfromlibrary/mysqlb4d181a07f80:Pullcompletea462b60610f5:......
  • 大一下第四周ACM实验课题解
    7-1ACM宣传作者杜祥军单位青岛大学LB大神想组织集训队去学校各处宣传ACM,但是大神不想让队员们走太多路,因此想写代码计算一下,到各地宣传再回到博知401的最短路径总和是多少。已知:学校一共有n个宣传点,博知401是标号为1的点。剩下n-1个点每个点各派1位队员,询问每个队员到达宣......
  • 数据结构:实验二 单链表
    一、   实验目的掌握单链表的存储结构特点掌握单链表中的各种基本运算算法设计。二、   实验内容与要求   编写一个程序exp2-2.cpp,实现单链表的各种基本运算和下面main函数中的每一步功能。初始化单链表L;依次采用尾插法插入’a’,’b’,’c’,’d’,’e’五......
  • SQLAlchemy 基础知识 - autoflush 和 autocommit(转)
    原文:https://zhuanlan.zhihu.com/p/48994990作者:Cosven来源:知乎这篇文章致力于解决以下疑问(本文以MySQL为例):SQLAlchemy的session是指什么?session的autoflush参数是干什么的,我到底要不要开启它?session的autocommit参数又是什么,它和autoflush的区别是什么?SQLAl......
  • Mysql(数据库)知识详解【4】~{索引,主键优化}
    记住满元素中间元素向上裂变就行了因为如果是5个节点,比第一个节点小的算一个指针,逼最后一个节点大的算一个指针,里面是4个指针所有元素都会出现在叶子节点并且诸多叶子节点通过指针构造一张单项链表看我:除了最下面节点,上面的节点(叶子空间最大16k)全部放满内存......
  • [附源码]计算机毕业设计保险客户管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍在现代保险行业中,客户管理系统对于提升客户服务水平、增强客户满意度和构建长期客户关系至关重要。随着大数据和人工智能技术的发展,保险公司迫切需要一个先进的......
  • [附源码]计算机毕业设计技术文档管理系统(JSP+java+springmvc+mysql+MyBatis)
    本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。项目文件图项目介绍技术文档管理系统是企业信息化建设的重要组成部分,它关系到知识的积累、共享和管理效率。随着企业规模的扩大和业务的多样化,传统的文件管理方式已无法满足快速检......