6.(1)
CREATE TABLE 部門
(部門號 CHAR(20) PRIMARY KEY,
名稱 CHAR(20),
經理名 CHAR(20),
電話 CHAR(10),
PRIMARY KEY (部門號)
);
6.(2)
CREATE TABLE Staff
(職工號 CHAR(9) ,
姓名 CHAR(20),
年齡 SMALLINT CHECK(年齡<=60),
職務 CHAR(10),
工資 INT,
部門號 CHAR(20),
PRIMARY KEY (職工號),
FOREIGN KEY(部門號) REFERENCES 部門(部門號)
);
2.(1)
CREATE TABLE S
( Grades CHAR(20),
Num INT
);
INSERT INTO S
VALUES('>=90',0);
INSERT INTO S
VALUES('[80,90)',0);
INSERT INTO S
VALUES('[70,80)',0);
INSERT INTO S
VALUES('[60,70)',0);
INSERT INTO S
VALUES('<60',0);
SELECT
*FROM S;
(2)
IF (exists (select * from sys.objects where name = 'math'))
DROP PROCEDURE math
GO
CREATE PROCEDURE math
AS
BEGIN
DECLARE @beyond90 INT,
@80UNTIL90 INT,
@70UNTIL80 INT,
@60UNTIL70 INT,
@below60 INT;
SELECT @beyond90=COUNT(*)
FROM SC
WHERE Grade>=90 AND Cno='2'
SELECT @80UNTIL90=COUNT(*)
FROM SC
WHERE Grade>80 AND Cno='2'
SELECT @70UNTIL80=COUNT(*)
FROM SC
WHERE Grade>70 AND Cno='2'
SELECT @60UNTIL70=COUNT(*)
FROM SC
WHERE Grade>60 AND Cno='2'
SELECT @below60=COUNT(*)
FROM SC
WHERE Grade<=60 AND Cno='2'
UPDATE S
SET Num=@beyond90
WHERE Grades='>=90';
UPDATE S
SET Num=@80UNTIL90
WHERE Grades='[80,90)';
UPDATE S
SET Num=@70UNTIL80
WHERE Grades='[70,80)';
UPDATE S
SET Num=@60UNTIL70
WHERE Grades='[60,70)';
UPDATE S
SET Num=@below60
WHERE Grades='<=60';
END;
EXEC math
(2)
CREATE TABLE A
(Cno CHAR(20),
Cname CHAR(20),
Score FLOAT
);
INSERT INTO A VALUES('1','數據庫',0) ;
INSERT INTO A VALUES('2','離散數學',0);
INSERT INTO A VALUES('3','信息系統',0);
(3)
IF (exists (select * from sys.objects where name = 'AVG'))
DROP PROCEDURE AVG
GO
AS
BEGIN
DECLARE
@Avg1 FLOAT,
@Avg2 FLOAT,
@Avg3 FLOAT;
SELECT @Avg1=AVG(Grade)
FROM SC
WHERE Cno ='1'
UPDATE A
SET Score=@Avg1
WHERE Cno ='1'
SELECT @Avg2=AVG(Grade)
FROM SC
WHERE Cno ='2'
UPDATE A
SET Score=@Avg2
WHERE Cno ='2'
SELECT @Avg3=AVG(Grade)
FROM SC
WHERE Cno ='3'
UPDATE A
SET Score=@Avg3
WHERE Cno ='3'
EXEC AVG
(3)
ALTER TABLE SC ADD LEVEL CHAR(2);
IF(exists(select * from sys.objects where name='B'))
DROP PROCEDURE B
GO
CREATE PROCEDURE B
AS
UPDATE SC
SET LEVEL='A'
WHERE Grade>90
UPDATE SC
SET LEVEL='B'
WHERE Grade BETWEEN 80 AND 90
UPDATE SC
SET LEVEL='C'
WHERE Grade BETWEEN 70 AND 80
UPDATE SC
SET LEVEL='D'
WHERE Grade BETWEEN 60 AND 70
UPDATE SC
SET LEVEL='E'
WHERE Grade<60
EXEC B