数据库系统概论——数据操纵语⾔DML实验报告
数据库实验报告
题⽬:数据库操纵语⾔DML 姓名:李军毅⽇期:2016-4-10
实验⽬的
1.熟悉SQL语⾔中DML的功能。
2.初步了解如何进⾏查询优化。
3.初步了解SQL语句的查询计划。
实验平台
1.OS:
Windows XP/7
2.DBMS:
SQL Server 2008
实验⽤时
两次上机
实验内容
⼀、熟悉SQL语句的DML功能
1.创建数据库,建⽴第⼆章习题5中的4个表,并插⼊数据。
2.完成SQL查询。
3.VIEW。
4.UPDATE和DELETE。
⼆、初步了解查询优化
1、配置SQL Server,导⼊dbcourse数据库
2、在原始papers表中查询title属性
3、在papers表中的title属性列上建⽴unique索引
4、在papers表中查询⽂章的作者在authors表中存在且⽂章发表的期刊在journals表中存在的⽂章的org
5、提交两个对papers表的查询,⼀个查询输出所有的列,另⼀个查询只输出title列。
三、初步了解查询处理流程
实验中出现的问题
预备知识
⼀、数据操纵语⾔
数据库数据操纵语⾔DML (Data Manipulation Language),它使⽤户能够查询数据库以及操作已有数据库中的数据的计算机语⾔。DML具体包含查询,删除,更新,插⼊四种操作。
⼆、SQL
SQL(Structured Query Language)结构化查询语⾔,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统。SQL语⾔包括三种主要程序设计语⾔类别的语句:数据定义语⾔(DDL),数据操作语⾔(DML)及数据控制语⾔(DCL)。
三、SQL Server 临时表
SQL Server包含⼀个⾃带的系统数据库——tempdb。它⽤来存放⽤户创建的临时对象。临时对象分为全局临时对象和区域临时对象。全局临时对象所有⽤户可见,区域临时对象仅当前连接对象可见。每当SQL Server重启后,tempdb数据库会被重新创建。
临时表的创建:临时表的创建与表的创建⽅法⼀样,只不过本地临时表的名称前⾯有⼀个编号符 (#table_name),⽽全局临时表的名称前⾯有两个编号符 (##table_name)。如:CREATE TABLE #Temp (cola INT PRIMARY KEY)
将创建⼀个名为Temp的临时表。
临时表的其他数据操作和表的⼀致。
实验内容
⼀、熟悉SQL语句的DML功能
1.创建数据库,建⽴第⼆章习题5中的4个表,并插⼊数据。
如下图所⽰:
createtable S
(Sno varchar(5)primarykey,
Sname varchar(10)null,
Statusint null,
City varchar(10)null
);
createtable P
(Pno varchar(5)primarykey,
Pname varchar(10)null,
Color varchar(10)null,
Weightint null
);
createtable J
(Jno varchar(5)primarykey,
Jname varchar(10)null,
City varchar(10)null
);
createtable SPJ
(Sno varchar(5)notnull,
Pno varchar(5)notnull,
Jno varchar(5)notnull,
Qty int null,
primarykey(Sno,Pno,Jno),
foreignkey (Sno)references S(Sno), foreignkey (Pno)references P(Pno), foreignkey (Jno)references J(Jno), );
插⼊数据:
insertinto S
values('S1','精益','20','天津'),('S2','盛锡','10','北京'),
('S3','东⽅红','30','北京'),('S4','丰泰盛','20','天津'),('S5','为民','30','上海');
insertinto P
values('P1','螺母','红','12'),('P2',',螺栓','绿','17'),
('P3','螺丝⼑','蓝','14'),('P4','螺丝⼑','红','14'),
('P5','凸轮','蓝','40'),('P6','齿轮','红','30');
insertinto J
values('J1','三建','北京'),('J2','⼀汽','长春'),
('J3','弹簧⼚','天津'),('J4','造船⼚','天津'),
('J5','机车⼚','唐⼭'),('J6','⽆线电⼚','常州'),('J7','半导体⼚','南京'); insertinto 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','500'),
('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');
2.完成SQL查询。
1)求供应⼯程J1零件P1的供应商号码SNO。
select Sno
from SPJ
where Jno='J1'and Pno='P1';
2)求供应⼯程J1零件为红⾊的供应商号码SNO,并按其供应数量之和降序排列显⽰。select Sno
from SPJ,P
where Jno='J1'and SPJ.Pno=P.Pno and P.Color='红'
orderby Qty DESC;
3)求没有使⽤天津供应商⽣产的红⾊零件的⼯程号。
from SPJ
where Jno notin(
select Jno
from SPJ,S,P
where SPJ.Sno=S.Sno and S.City='天津'and SPJ.Pno=P.Pno and P.Color='红');
4)求⾄少⽤了供应商S1所供应的全部零件的⼯程号。
selectdistinct Jno
from SPJ
where Pno in(
select Pno
from SPJ
where Sno='S1');
数据库优化sql语句

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。