首页 > 数据库 >5.23实验二 SQL 语言的使用

5.23实验二 SQL 语言的使用

时间:2024-06-20 15:10:26浏览次数:23  
标签:insert pno into spj values 5.23 SQL 实验 SELECT

一、实验目的:

掌握使用 SQL 语言进行各种查询的操作和视图的操纵方法。

二、实验要求:

在现有的数据库上进行各种查询操作,对视图的创建、使用等操作。

三、实验步骤:

1、 开始→程序→Microsoft SQL Server→SQL Server Management Studio。

2、 在“连接到服务器”对话框中,选择“Windows 身份验证”,点击“连接”,进

入 SQL Server Management Studio 操作界面。

3、单击“新建查询”按钮,导入SQL 语句,建立起实验要操作的数据库 test1,并在库中建立表、数据。

(1) 创建数据库:

create database test1;

(2) 创建二维表:

Create table s(

Sno char(2) primary key,

sname varchar(10) not null,

status int,

city varchar(10));

create table p(

pno char(2) primary key,

pname varchar(10) not null,

color varchar(6),

weight int);

create table j(

jno char(2) primary key,

jname varchar(20) not null,

city varchar(10));

create table spj(

sno char(2) foreign key references s(sno),

pno char(2) foreign key references p(pno),

jno char(2) foreign key references j(jno),

qty int,

primary key(sno,pno,jno));

(3)为各二维表插入数据:

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,'上海');

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);

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','半导体厂','南京');

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 int`o spj values('s5','p3','j1',200);

insert into spj values('s5','p6','j2',200);

insert into spj values('s5','p6','j4',500)

 

4、在数据库 test1 中进行下列查询操作。

(1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。

SELECT *

FROM s

ORDER BY city ASC, sname DESC;

(2)查询所有零件情况,先按零件名称升序排列,零件名称相同按重量降序排列。

SELECT *

FROM p

ORDER BY pname ASC, weight DESC;

(3)查询项目名中含有“厂”的项目情况。

SELECT *

FROM j

WHERE jname LIKE '%厂%';

(4)查询供应商名称中第二个字为“方”的供应商情况。

SELECT *

FROM s

WHERE SUBSTRING(sname, 2, 1) = '方';

(5)查询所有零件中的最大、最小、平均重量。

SELECT MAX(weight) AS max_weight, MIN(weight) AS min_weight, AVG(weight) AS avg_weight

FROM p;

(6)查询零件中名为“螺丝刀”的零件的种类数、平均重量。

SELECT COUNT(DISTINCT pname) AS part_count, AVG(weight) AS avg_weight

FROM p

WHERE pname = '螺丝刀';

(7)查询供应商 S1 所供应的各种零件的名称和数量。

SELECT p.pname, spj.qty

FROM spj

JOIN p ON spj.pno = p.pno

WHERE spj.sno = 's1';

(8)查询工程 J1 所使用的各种零件的名称和数量。

SELECT p.pname, spj.qty

FROM spj

JOIN p ON spj.pno = p.pno

WHERE spj.jno = 'j1';

(9)查询没有使用红色螺丝刀的工程名称。

SELECT jname

FROM j

WHERE jno NOT IN (SELECT jno FROM spj WHERE pno = 'p4' AND color = '红');

(10)查询没有供应红色螺丝刀的供应商名称。

SELECT sname

FROM s

WHERE sno NOT IN (SELECT sno FROM spj WHERE pno = 'p4' AND color = '红');

(11)查询所用零件数量超过 500 的工程项目号。

SELECT jno

FROM spj

GROUP BY jno

HAVING SUM(qty) > 500;

(12)查询所用零件种类超过 3 种的工程项目名称。

SELECT jname

FROM j

WHERE jno IN (SELECT jno FROM spj GROUP BY jno HAVING COUNT(DISTINCT pno) > 3);

(13)查询使用了全部零件的工程项目名称。

SELECT jname

FROM j

WHERE jno IN (SELECT jno FROM spj GROUP BY jno HAVING COUNT(DISTINCT pno) = (SELECT COUNT(DISTINCT pno) FROM p));

(14)查询至少供应了工程 J1 所使用的全部零件的供应商名称。

SELECT sname

FROM s

WHERE sno IN (SELECT sno FROM spj WHERE jno = 'j1' GROUP BY sno HAVING COUNT(DISTINCT pno) = (SELECT COUNT(DISTINCT pno) FROM spj WHERE jno = 'j1'));

(15)查询供应情况,显示内容为供应商名称、零件名、工程名称、数量。

SELECT s.sname, p.pname, j.jname, spj.qty

FROM spj

JOIN s ON spj.sno = s.sno

JOIN p ON spj.pno = p.pno

JOIN j ON spj.jno = j.jno;

(16)查询“东方红”供应商供应情况,显示供应的零件名、工程名称、数量。

SELECT p.pname, j.jname, spj.qty

FROM spj

JOIN p ON spj.pno = p.pno

JOIN j ON spj.jno = j.jno

WHERE spj.sno = 's3' AND sname = '东方红';

5、请为机车厂工程项目建立一个供应情况的视图,包括供应商代码,零件代码, 

供应数量。

建立试图:

CREATE VIEW locomotive_project_supply AS

SELECT sno, pno, qty

FROM spj

WHERE jno = 'j5';

(1)查询机车厂工程项目使用的各种零件代码及其数量。

SELECT pno, SUM(qty) AS total_quantity

FROM locomotive_project_supply

GROUP BY pno;

(2)查询处供应商 S2 的供应情况。

SELECT pno, qty

FROM spj

WHERE sno = 's2';

6、 在 SQL Server Management Stdio 中了解关于数据库管理的各种直接操作的方

法。

1. 创建数据库:使用 T-SQL 命令 `CREATE DATABASE database_name;` 来创建新的数据库。

 

2. 创建表:使用 T-SQL 命令 `CREATE TABLE table_name (column1 datatype, column2 datatype, ...);` 来创建新的表。

 

3. 插入数据:使用 T-SQL 命令 `INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` 来向表中插入数据。

 

4. 更新数据:使用 T-SQL 命令 `UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;` 来更新表中的数据。

 

5. 删除数据:使用 T-SQL 命令 `DELETE FROM table_name WHERE condition;` 来删除表中的数据。

 

6. 查询数据:使用 T-SQL 命令 `SELECT column1, column2, ... FROM table_name WHERE condition;` 来查询表中的数据。

 

7. 管理索引:使用 SSMS 的图形界面或 T-SQL 命令来创建、修改或删除索引以提高数据库性能。

 

8. 备份和恢复数据库:使用 SSMS 的图形界面或 T-SQL 命令进行数据库的备份和恢复操作。

 

9. 监控数据库性能:使用 SSMS 的性能监视器和执行计划功能来监控数据库的性能并进行优化。

 

四、体会:

通过完成上述数据库操作实验,我对数据库管理有了更深入的了解。创建数据库和表格是数据库设计的基础,而插入、更新、删除数据则是数据库操作中常见的任务。通过查询数据和创建视图,我能够从数据库中检索所需的信息并组织成有意义的形式。视图的创建使得可以将复杂的查询结果存储为虚拟表格,方便后续的查询和分析。

同时了解如何管理索引以提高数据库性能是非常重要的。索引的正确使用可以加快查询速度,提升数据库的效率。此外,备份和恢复数据库也是数据库管理中至关重要的一部分,保证数据的安全性和可靠性。

 

标签:insert,pno,into,spj,values,5.23,SQL,实验,SELECT
From: https://www.cnblogs.com/yindantong/p/18258713

相关文章

  • 下载MySQL时无法修改存储路径及几个问题
    文章目录前言一、没办法修改下载路径二、只下载了MySQL却没办法可视化总结前言今天在下载MySQL的时候,出现了几个小问题,记录在这里,供大家参考一、没办法修改下载路径我相信这个是大家最头疼的问题,发现根据教程下载的时候出现的选项不是五个,就和图下面这个样子一样......
  • MySQL-Day3
    学习目标写SQL三步法边写边运行,否则后面出错时候会难以排查搭框架基本的select语句框架建起来,如果有多表,把相应的多表联合起来看条件决定where后面的显示的字段select后面的内容连接查询内连接两张表相同地方select*from 左/右连接包括内连接以及左/右部......
  • MySQL-Day4
    学习目标MySQL的内置函数concat拼接字符串函数把12,34,‘ab’,拼接成‘1234ab’selectconcat(12,34,'ab')length返回字符串字符的个数计算字符串长度‘abc’selectlength('abc')返回3一个utf-8,一个汉字表示3个长度selectlength(‘我和you’) 返回9内置函数可以......
  • 针对SQL Server的优化建议
    针对SQLServer的优化,以下是一些建议,它们按照不同的优化方面进行了归纳和详细解释:1.数据库结构优化合理设计表结构:避免冗余字段和表,使用适当的数据类型来减少存储空间并提高查询效率。正规化数据库:避免数据冗余和更新异常,但也要注意过度正规化可能导致查询性能下降。使用合......
  • SQL、Mysql、数据库到底什么关系
    sql很多都搞不清Sql和Mysql,数据库之间的关系,其实这些概念之间的关系用下面这张图就能搞懂:也就是说,数据库是草图,Mysql是交稿,数据可以理解成砖块,sql是处理砖块(数据)的工具。下面这张图是SQL的常见分类,以及常用操作指令:数据库中表的结构包括了代表列名的列,和具体数据的行表中的......
  • MySQL的优化建议和策略
    当谈到MySQL的优化时,以下是一些具体的建议和策略,它们可以帮助您提高MySQL数据库的性能:1.数据库设计优化规范化设计:将数据分解为更小的表,降低数据冗余度,提高数据一致性和查询效率。选择合适的数据类型:选择合适的数据类型可以减少存储空间的占用,提高数据检索和计算的效率。避......
  • 【计算机网络仿真实验-实验3.1、3.2】交换路由综合实验
    实验3.1交换路由综合实验——作业1一、实验目的运用实验二(可前往博主首页计算机网络专栏下查看)中学到的知识,将这个图中的PC机连接起来组网并分析,本篇涉及代码以截图展示,过于简单的代码及操作不再详细介绍,建议做完实验二中所有实验后再来完成该实验,难度递进,学习过程合理......
  • YOLO家族中谁才是轻量级网络模型的王者,让我们实验探索分析【YOLOv3—YOLOv10】系列,挖
    在我们前面的系列博文中,我们基于YOLOv3-YOLOv10众多系列的YOLO模型开发实践了非常多的检测模型,在以往的项目开发过程中,我们大多是关注单个系列模型下纵深方向的不同参数分支对比实验结果,比较少去站在不同YOLO系列的角度来进行横向的对比分析。又是一年一度的618了,晚上正好有点......
  • 管理 MySQL Shell 配置选项
    与任何工具一样,MySQLShell的开箱即用配置可能无法满足每个用户在任何情况下的需求。我们需要一种方法来轻松查看、更新和持续(如有必要)更改默认配置。有一条命令可以帮助我们管理MySQLShell配置。这条命令就是\option。 查看帮助MySQLlocalhostJS>\optionNAME......
  • XR22005-3与XR22010-3:电力实验领域的双重保障
    在电力科技的浪潮中,XR22005-3和XR22010-3高频电力模块凭借其卓越的性能和稳定性,成为了行业的佼佼者。这两款高频电力模块不仅拥有高精度的电压和电流输出能力,更以其高效能、节能环保的特点赢得了市场的广泛认可。XR22005-3模块,以其高效的能量转换和低能耗特点,在电力供应领域展......