实验四 连接查询、嵌套查询
一、实验目的
1、掌握SQL Server 2005数据库引擎的使用方法,加深对SQL的语句的理解; 2、使用数据库引擎查询文档用SELECT语句进行数据查询; 3、熟练掌握运用DML语言对表中的数据进行连接查询和嵌套查询 二、实验内容
利用连接查询和嵌套查询等方法实现多表查询。 三、实验步骤
1、找出工程项目J2使用的各种零件的名称及其数量
Sql语句:
SELECT PNAME,QTY FROM P,SPJ WHERE P.PNO=SPJ.PNO AND JNO=’J2’; 该查询能否用嵌套查询实现?为什么? 不能,因为查询结果涉及到两张表的信息。 2、找出没有使用天津产的零件的工程号码
Sql语句:
SELECT JNO FROM J WHERE JNO NOT IN( SELECT JNO FROM SPJ WHERE SNO IN( SELECT SNO FROM S WHERE CITY=’天津’ ) ); 或
SELECT JNO FROM J WHERE JNO NOT IN( SELECT JNO FROM SPJ,S
WHERE SPJ.SNO=S.SNO AND CITY=’天津’ );
3、找出使用上海产的零件的工程名称
Sql语句(使用连接和嵌套两种方法来实现): 连接查询
SELECT JNAME FROM S,SPJ,J
WHERE S.SNO=SPJ.SNO AND J.JNO=SPJ.JNO AND S.CITY=’上海’; 嵌套查询
SELECT JNAME FROM J WHERE JNO IN( SELECT JNO FROM SPJ WHERE SNO IN( SELECT SNO FROM S WHERE CITY=’上海’ ) ); 或
SELECT JNAME FROM J WHERE JNO IN( SELECT JNO FROM SPJ,S
WHERE SPJ.SNO=S.SNO AND S.CITY=’上海’ ) );
4、找出既使用S1供应商提供的零件又使用S2供应商提供的零件的工程号
Sql语句:
SELECT JNO FROM SPJ WHERE SNO=’S1’ AND JNO IN( SELECT JNO FROM SPJ WHERE SNO=’S2’ ); 或
SELECT X.JNO FROM SPJ X, SPJ Y
WHERE X.JNO=Y.JNO AND X.SNO=’S1’ AND Y.SNO=’S2’;
5、求使用S2供应商供应的P3零件数目超过丰泰盛供应商供应的P6零件数目的工程号
Sql语句:
SELECT JNO FROM SPJ X
WHERE SNO=’S2’ AND PNO=’P3’ AND QTY >( SELECT QTY FROM SPJ
WHERE JNO=X.JNO AND PNO=’P6’ AND SNO IN(
SELECT SNO FROM S WHERE SNAME=’丰泰盛’ ) ); 或
SELECT X.JNO FROM SPJ X,SPJ Y
WHERE X.JNO=Y.JNO AND X. SNO=’S2’ AND X.PNO=’P3’ AND X.QTY>Y.QTY AND Y.PNO=’P6’ AND Y.SNO IN( SELECT SNO FROM S WHERE SNAME=’丰泰盛’ );
实验五 数据更新
一、实验目的
1、掌握更新语句的基本语法和用法,加深对SQL的语句的理解; 2、了解DML语言的INSERT、UPDATE、DELETE对数据的操作,; 3、能将这些更新操作应用于实际操作中去,学会在SQL Server 2005中用DML语言对表中的数据进行插入、删除和修改。 二、实验内容
1、在查询分析器中使用INSERT、UPDATE、DELETE语句进行数据更新。 三、实验步骤
1、由S5供给J4的零件P6改为由S3供应,请做必要的修改
Sql语句:
UPDATE SPJ SET SNO=’S3’
WHERE SNO=’S5’ AND JNO=’J4’ AND PNO=’P6’;
2、向零件表中插入一个零件记录(零件代码:P7;零件名:螺钉;颜色:黑;重量:10)
Sql语句:
INSERT INTO P VALUES(‘P7’,’螺钉’,’黑’, 10);
3、从SPJ表中把S1供应某工程P1零件数量低于S1供应各工程P1零件数量平均值的供应元组全部删去。
Sql语句:
DELETE FROM SPJ WHERE SNO=’S1’ AND PNO=’P1’ AND QTY <(
SELECT AVG(QTY) FROM SPJ WHERE SNO=’S1’ AND PNO=’P1’ );
4、将P表中零件重量小于等于20的零件颜色全部改为黄色。
Sql语句:
UPDATE P SET COLOR=’黄’ WHERE WEIGHT<20;
5、求每个供应商供应给J1工程的零件总数,并把结果存入数据库中。
Sql语句:
CREATE TABLE SJ1_SUM( SNO CHAR(4), J1NUM SMALLINT );
INSERT INTO SJ1_SUM
SELECT SNO,SUM(QTY) FROM SPJ WHERE JNO=’J1’ GROUP BY SNO; 6、将S2供应商供应给J1工程的蓝色零件的零件数目增加5%
Sql语句:
UPDATE SPJ SET QTY=QTY*1.05
WHERE SNO=’S2’ AND JNO=’J1’ AND PNO IN( SELECT PNO FROM P WHERE COLOR=’蓝’ );
7、从供应商关系中删除S2的记录。
Sql语句:
DELETE FROM SPJ WHERE SNO=’S2’; DELETE FROM S WHERE SNO=’S2’;
思考:当进行数据的插入、删除和修改的时候需要注意哪些方面? 语法,是否违背完整性。