实验二 L 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)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。 select Sno , sname , status ,city
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 sname like '%方%'方%'
(5)查询所有零件中的最大、最小、平均重量。
select max(weight)最大重量,min(weight)最小重量,avg (weight)平均重量
from p
(6)查询零件中名为“螺丝刀”的零件的种类数、平均重量。
select count(pno)种类数, avg(weight)平均重量
from p
where pname='螺丝刀’
(7)查询供应商 s1 所供应的各种零件的名称和数量。
select pname 名称,qty 数量
from s join spj on s.sno=spj.sno
join p on spj.pno=p.pno
where s.sno='s1'
(8)查询工程 j1 所使用的各种零件的名称和数量。
select pname 名称, qty 数量
from j join spj on j.jno=spj.jno
join p on spj.pno=p.pno
where j.jno='j1'
(9)查询没有使用红色螺丝刀的工程名称。
select jname from j
where jno not in (
select jno from spj join p on spj.pno=p.pno
where pname='螺丝刀'and color='红')
(10)查询没有供应红色螺丝刀的供应商名称。
select sname from s
where sno not in (
select s.sno from s, spj, p
where s.sno=spj.sno and p.pno=spj.pno and pname='螺丝刀' and color='红'
)
(11)查询所用零件数量超过 500 的工程项目号。
select s.sno from s join spj on s.sno=spj.sno join p on spj.pno=p.pno
group by s.sno
having count(qty)>3
(12)查询所用零件种类超过 3 种的工程项目名称。
select s.sname from s join spj on s.sno=spj.sno join p on spj.pno=p.pno
group by s.sname
having count(p.pno)>3
(13)查询使用了全部零件的工程项目名称。
select jname from j
where not exists
(select * from p
where not exists
(select * from spj
where pno=p.pno and jno=j.jno
)
)
(14)查询至少供应了工程 j5 所使用的全部零件的供应商名称。
select sname from s where Sno in (
select Sno from (
select Sno,count(*) as 数目 from
(select sno from spj where pno in (select pno from spj where jno = 'j1'))
t
group by sno having COUNT(*)= (select COUNT(*) from spj where jno = 'j1') )t1)
(15)查询供应情况,显示内容为供应商名称、零件名、工程名称、数量。
select sname,pname,jname,qty
from s,p,j,spj
where s.sno=spj.sno and j.jno=spj.jno and p.pno=spj.pno
(16)查询“东方红”供应商供应情况,显示供应的零件名、工程名称、数量。
select pname , jname , qty
from s,p,j, spj
where s.sno=spj.sno and j.jno=spj.jno and p.pno=spj.pno and sname='东方红'
5、请为机车厂工程项目建立一个供应情况的视图,包括供应商代码,零件代码,供
应数量。针对该试图完成如下查询并将 SQL 语句写入实验报告。
(1)查询机车厂工程项目使用的各种零件代码及其数量。
(2)查询出供应商 s2 的供应情况。
create view jview as select spj.sno , spj.pno , spj.qty
from spj, j
where spj.jno=j.jno and j.jname='机车厂'
select pno ,qty from jview;
select * from jview where sno='s2';
6、 在 SQL Server Management Stdio 中了解关于数据库管理的各种直接操作的
方法。将了解的内容写入实验报告。
说明: 具体表结构和数据以及要做的各种数据操作可以灵活掌握,可以针对其它
数据库进行操作,具体情况由任课老师作出明确要求。
打开SQL Server Manager管理器
选择“数据库”,单击右键,在弹出的菜中单击“新建数据库”,打开新建数据库对话框。一个数据库可以由多个数据文件和多个日志文件组成。在新建数据库对话框,单击“添加”按钮,可以添加新数据库文件。可以修改新增文件的属性,可以新建一个文件组。