SQL学习第7次
1、继续昨天的复习。
1、打开Microsoft SQL Server Management Studio。 --选出按年龄排序,前3的学生,如果有一样的也一并列出。 SELECT TOP (3) WITH TIES * FROM dbo.STUD_VIEW ORDER BY NL;
--选出按年龄由大到小排序,前30%的学生。 SELECT TOP (30) PERCENT * FROM dbo.STUD_VIEW ORDER BY NL DESC;
2、SQL SERVER 2005 还支持并(UNION)、交(INTERSECT)、差(EXCEPT)运算。 --并(UNION)运算,把GOODSTUD.XH和STUD.XH做并。 --先创个表 CREATE TABLE dbo.GOODSTUD ( XH CHAR(7) REFERENCES dbo.STUD, LV CHAR(8) NOT NULL, ); --插入一些数据 INSERT INTO GOODSTUD VALUES('1102103','优秀学生'); INSERT INTO GOODSTUD VALUES('1102102','三好学生'); INSERT INTO GOODSTUD VALUES('1103101','四好学生'); --做并计算 SELECT XH FROM dbo.STUD UNION SELECT XH FROM GOODSTUD --让结果更友好,重复的只显示一个 SELECT * FROM dbo.STUD_VIEW WHERE XH IN(SELECT XH FROM dbo.STUD UNION SELECT XH FROM GOODSTUD);
--交(INTERSECT)运算 SELECT * FROM dbo.STUD_VIEW WHERE XH IN(SELECT XH FROM dbo.STUD INTERSECT SELECT XH FROM GOODSTUD);
--差(EXCEPT)运算,即显示非GOODSTUD的学生 SELECT * FROM dbo.STUD_VIEW WHERE XH IN(SELECT XH FROM dbo.STUD EXCEPT SELECT XH FROM GOODSTUD);
3、内外层互相关嵌套查询 --首先给DEPT系表加一个平均年龄PJNL ALTER TABLE dbo.DEPT ADD PJNL INT; --将各系的平均年龄利用查询更新上去 UPDATE DEPT SET PJNL=(SELECT AVG(NL) FROM STUD_VIEW WHERE STUD_VIEW.DNO=DEPT.DNO); |