CREATE TABLE Sick (
SNo VARCHAR(10) NOT NULL PRIMARY KEY,
SName VARCHAR(10) NOT NULL,
SAge INT NOT NULL,
SSex VARCHAR(2) NOT NULL,
DNo VARCHAR(12) NOT NULL,
RNo VARCHAR(4) NOT NULL,
CONSTRAINT FK_Sick_Doctor FOREIGN KEY (DNo) REFERENCES Doctor(DNb),
CONSTRAINT FK_Sick_Room FOREIGN KEY (RNo) REFERENCES Room(RNo)
);
CREATE TABLE Doctor (
DNo VARCHAR(12) NOT NULL PRIMARY KEY,
DName VARCHAR(20) NOT NULL,
DAge INT NOT NULL,
DDept VARCHAR(20) NOT NULL,
DDuty VARCHAR(10) NOT NULL,
CONSTRAINT FK_Doctor_Office FOREIGN KEY (DDept) REFERENCES Office(OName)
);
CREATE TABLE Room (
RNo VARCHAR(4) NOT NULL PRIMARY KEY,
RBed VARCHAR(4) NOT NULL,
OName VARCHAR(20) NOT NULL,
CONSTRAINT FK_Room_Office FOREIGN KEY (OName) REFERENCES Office(OName)
);
CREATE TABLE Office (
OName VARCHAR(20) NOT NULL PRIMARY KEY,
OAdd VARCHAR(50) NOT NULL,
OTel VARCHAR(20) NOT NULL UNIQUE
);
CREATE VIEW V1 AS
SELECT DNo, DName, DAge, DDuty
FROM Doctor
WHERE OName = '内科';
CREATE VIEW V2 AS
SELECT SNo, SName, SSex
FROM Sick
WHERE OName = '内科' AND Sick.DNo = Doctor.DNo;
CREATE UNIQUE INDEX idx_age ON Doctor(DAge);
CREATE INDEX idx_sick_age ON Sick(SAge);
CREATE PROCEDURE bingren
@SNo VARCHAR(12)
AS
BEGIN
SELECT *
FROM Sick
WHERE Sick.SNo = @SNo;
END;
CREATE PROCEDURE yisheng
@DNo VARCHAR(4)
AS
BEGIN
SELECT *
FROM Doctor
WHERE Doctor.DNo = @DNo;
END;
SELECT *
FROM Sick
WHERE Sick.SNo = '002';
SELECT Room.RNo, Room.RBed, Room.OName
FROM Room
JOIN Sick ON Room.RNo = Sick.RNo
WHERE Sick.RNo = '90';
SELECT Doctor.DNo, Doctor.DName, Doctor.DAge, Doctor.OName, Doctor.DDuty
FROM Doctor
JOIN Sick ON Doctor.DNo = Sick.DNo
WHERE Sick.DNo = '160018';
INSERT INTO Sick (SNo, SName, SAge, SSex, DNo, RNo)
VALUES ('003', '包胜慧', 30, '男', '16018', '90');
DELETE FROM Sick
WHERE Sick.SNo = '001';
UPDATE Sick
SET SName = '曹林升'
WHERE SName = '曹林丹';
SELECT *
FROM Doctor;
INSERT INTO Doctor (DNo, DName, DAge, OName, DDuty)
VALUES ('160030', '陈民安', 29, '内科', '主任医师');
DELETE FROM Doctor
WHERE Doctor.DNo = '160030';
UPDATE Doctor
SET DAge = DAge + 1
WHERE Doctor.DNo = '160018';
INSERT INTO Room (RNo, RBed, OName)
VALUES ('901', '9001', '内科');
DELETE FROM Room
WHERE Room.RNo = '901';
UPDATE Room
SET RBed = '9001'
WHERE Room.RNo = '90';
INSERT INTO Office (OName, OAdd, OTel)
VALUES ('精神科', '住院楼 5 楼', '85829811');
DELETE FROM Office
WHERE Office.OName = '精神科';
UPDATE Office
SET OAdd = '康复楼 5 楼'
WHERE Office.OName = '内科';