数据库实验二

随笔3个月前发布 专线
32 0 0

实验二 SQL 语言的使用

一、实验目的:

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

二、实验要求:

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

三、实验步骤:

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

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

入 SQL Server Management Studio 操作界面。

3、单击“新建查询”按钮,在上部的空白区导入文件“实验二 SQL 语句.doc”中

的 SQL 语句,然后单击工具栏上 “执行”按钮(红色叹号)。建立起实验要操

作的数据库 test1,并在库中建立表、数据。下部的空白区显示该语句的运行情

况。(注:以下操作均在上部的空白区输入 SQL 语句,单击执行后,下部的空

白区显示该语句的运行情况。)

4、在数据库 test1 中进行下列查询操作,将查询语句与结果写入实验报告。

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

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

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

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

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

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

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

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

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

(10)查询没有供应红色螺丝刀的供应商名称。(11)查询所用零件数量超过 500 的工程项目号。

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

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

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

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

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

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

供应数量。针对该试图完成如下查询并将 SQL 语句写入实验报告。

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

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

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

法。将了解的内容写入实验报告。

说明:具体表结构和数据以及要做的各种数据操作可以灵活掌握,可以针对

其它数据库进行操作,具体情况由任课老师作出明确要求。

四、实验报告注意事项及要求:

1、实验报告一律用“石家庄铁道大学实验报告纸”书写。

2、实验报告中明确写明姓名、班级、学号、实验时间、实验名称等各项表头。

3、实验报告各项完整:实验名称、实验内容、实验完成情况(包括实验设计思想、

主要技术问题的处理方法、实验过程等)、其他(说明、分析、建议、体会等)。附录二:实验二 SQL 语句

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、(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 category) AS num_categories,

    AVG(weight) AS avg_weight

FROM p

WHERE pname = '螺丝刀';

(7)SELECT p.pname, spj.qty

FROM spj

JOIN p ON spj.pno = p.pno

WHERE spj.sno = 's1';

(8)SELECT p.pname, spj.qty

FROM spj

JOIN p ON spj.pno = p.pno

WHERE spj.jno = 'j1';

(9)SELECT DISTINCT j.jname

FROM j

LEFT JOIN spj ON j.jno = spj.jno

LEFT JOIN p ON spj.pno = p.pno

WHERE p.pname != '螺丝刀' OR p.color != '红';

(10)SELECT DISTINCT s.sname

FROM s

LEFT JOIN spj ON s.sno = spj.sno

LEFT JOIN p ON spj.pno = p.pno

WHERE p.pname != '螺丝刀' OR p.color != '红';

(11)SELECT jno

FROM spj

GROUP BY jno

HAVING SUM(qty) > 500;

(12)SELECT j.jname

FROM j

JOIN spj ON j.jno = spj.jno

JOIN p ON spj.pno = p.pno

GROUP BY j.jname

HAVING COUNT(DISTINCT p.pname) > 3;

(13)SELECT j.jname

FROM j

JOIN spj ON j.jno = spj.jno

GROUP BY j.jname

HAVING COUNT(DISTINCT spj.pno) = (SELECT COUNT(DISTINCT pno) FROM p);

(14) SELECT s.sname
FROM s
JOIN spj ON s.sno = spj.sno
WHERE spj.jno = 'j1'
GROUP BY s.sname
HAVING COUNT(DISTINCT spj.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 = (SELECT sno FROM s WHERE sname = '东方红');

5、CREATE VIEW locomotive_supply_view AS

SELECT spj.sno AS supplier_code, spj.pno AS part_code, spj.qty AS supply_quantity

FROM spj

JOIN j ON spj.jno = j.jno

WHERE j.jname = '机车厂';

 

数据库实验二

 

(1)SELECT part_code, SUM(supply_quantity) AS total_quantity

FROM locomotive_supply_view

GROUP BY part_code;

(2)SELECT *

FROM locomotive_supply_view

WHERE 供应商代码 = 'S2';

6、

(1)创建数据库: 在 SSMS 中,你可以通过图形界面或者使用 Transact-SQL 语句来创建数据库。使用图形界面时,你可以右键点击 “Databases” 文件夹,然后选择 “New Database”。在弹出的对话框中输入数据库的名称和其他选项,然后点击 “OK”。

(2)创建表:你可以在 SSMS 中通过图形界面或者使用 Transact-SQL 语句来创建表。使用图形界面时,你可以在你创建的数据库中找到 “Tables” 文件夹,右键点击它,然后选择 “New Table”。在表设计器中定义表的列和其他属性,然后保存表。

(3)执行查询:在 SSMS 中,你可以打开一个新的查询窗口,然后编写并执行查询语句。你可以通过点击工具栏上的 “Execute” 按钮或者按下 F5 来执行查询。

(4)插入数据:使用 INSERT INTO 语句可以向表中插入数据。例如:

INSERT INTO MyTable (ID, Name, Age) VALUES (1, 'John', 30);

(5)更新数据:使用 UPDATE 语句可以更新表中的数据。例如:UPDATE MyTable SET Age = 31 WHERE Name = 'John';

(6)删除数据:使用 DELETE FROM 语句可以从表中删除数据。例如:DELETE FROM MyTable WHERE ID = 1;

(7)创建视图:你可以使用图形界面或 Transact-SQL 语句来创建视图。使用 Transact-SQL 语句时,可以执行类似以下的语句来创建视图:CREATE VIEW MyView AS

SELECT ID, Name FROM MyTable WHERE Age > 25;

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...