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.XHSTUD.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);

posted on 2013-04-21 12:27  百舸争流info  阅读(244)  评论(0编辑  收藏  举报

导航