Practical2.Consider the Insurance database given below.
The primary keys are underlined and
the data types are specified:
PERSON (driver_id:string,name:string,address:string)
CAR (Regno:string,model:string,year:int)
ACCIDENT (report_number:int,date:date,location:string)
OWNS (driver_id:string,regno:string)
PARTICIPATED (driver_id:string,regno:string,report-number:int,damage_amount:int)
1. Create the above tables by properly specifying the primary keys and the foreign keys.
Ans:
CREATE TABLE PERSON
(DRIVER_ID VARCHAR(20) PRIMARY KEY,
NAME VARCHAR(20),
ADDRESS VARCHAR(20)
);
CREATE TABLE CAR
(REGNO VARCHAR(20) primary key,
MODEL VARCHAR(20),
YEAR INTEGER
);
CREATE TABLE ACCIDENT
(REPORT_NO INT primary key,
ACDATE DATE,
LOCATION VARCHAR(20)
);
CREATE TABLE OWNS
(DRIVER_ID VARCHAR(20),
REGNO VARCHAR(20),
PRIMARY KEY(DRIVER_ID,REGNO),
FOREIGN KEY(DRIVER_ID) REFERENCES PERSON(DRIVER_ID),
FOREIGN KEY(REGNO) REFERENCES CAR(REGNO)
);
CREATE TABLE PARTICIPATED
(DRIVER_ID VARCHAR(20),
REGNO VARCHAR(20),
REPORT_NO INT,
DAMAGE_AMOUNT INTEGER,
PRIMARY KEY(DRIVER_ID,REGNO,REPORT_NO),
FOREIGN KEY(DRIVER_ID) REFERENCES PERSON(DRIVER_ID),
FOREIGN KEY(REGNO) REFERENCES CAR(REGNO),
FOREIGN KEY(REPORT_NO) REFERENCES ACCIDENT(REPORT_NO)
);
2.
Ans:
INSERT INTO PERSON(DRIVER_ID,NAME,ADDRESS)
VALUES('ID101','Tea','Dawrpui');
INSERT INTO PERSON(DRIVER_ID,NAME,ADDRESS)
VALUES('ID102','Puia','Zarkawt');
INSERT INTO PERSON(DRIVER_ID,NAME,ADDRESS)
VALUES('ID103','Tluangi','Electric Veng');
INSERT INTO PERSON(DRIVER_ID,NAME,ADDRESS)
VALUES('ID104','Liana','Ramhlun');
INSERT INTO PERSON(DRIVER_ID,NAME,ADDRESS)
VALUES('ID105','Zuali','Khatla');
INSERT INTO CAR(REGNO,MODEL,YEAR)
VALUES('X300 MCL','McLaren GT','2021');
INSERT INTO CAR(REGNO,MODEL,YEAR)
VALUES('ZYA 11Z','Koenigsegg Jesko','2021');
INSERT INTO CAR(REGNO,MODEL,YEAR)
VALUES('MZ-01-A2033','Maruti 800','2002');
INSERT INTO CAR(REGNO,MODEL,YEAR)
VALUES('MYC 12Z','Koenigsegg Jesko','2021');
INSERT INTO CAR(REGNO,MODEL,YEAR)
VALUES('MZ-01-B5045','Santro Xing','2002');
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(01,'04-January-2021','Durtlang');
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(02,'13-July-2021','Lengpui');
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(03,'27-April-2002','New Capital Complex');
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(04,'30-October-2019','New Capital Complex');
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(12,'15-February-2002','Chaltlang');
INSERT INTO OWNS(DRIVER_ID,REGNO)
VALUES('ID101','X300 MCL');
INSERT INTO OWNS(DRIVER_ID,REGNO)
VALUES('ID102','ZYA 11Z');
INSERT INTO OWNS(DRIVER_ID,REGNO)
VALUES('ID103','MZ-01-A2033');
INSERT INTO OWNS(DRIVER_ID,REGNO)
VALUES('ID104','MYC 12Z');
INSERT INTO OWNS(DRIVER_ID,REGNO)
VALUES('ID105','MZ-01-B5045');
INSERT INTO PARTICIPATED(DRIVER_ID,REGNO,REPORT_NO,DAMAGE_AMOUNT)
VALUES('ID101','X300 MCL',01,45000);
INSERT INTO PARTICIPATED(DRIVER_ID,REGNO,REPORT_NO,DAMAGE_AMOUNT)
VALUES('ID102','ZYA 11Z',02,80000);
INSERT INTO PARTICIPATED(DRIVER_ID,REGNO,REPORT_NO,DAMAGE_AMOUNT)
VALUES('ID103','MZ-01-A2033',03,5000);
INSERT INTO PARTICIPATED(DRIVER_ID,REGNO,REPORT_NO,DAMAGE_AMOUNT)
VALUES('ID104','MYC 12Z',04,70000);
INSERT INTO PARTICIPATED(DRIVER_ID,REGNO,REPORT_NO,DAMAGE_AMOUNT)
VALUES('ID105','MZ-01-B5045',12,8000);
3. Demonstrate how you
a) update the damage amount for the car with a specific regno in accident with
b) report number 12 to 25000
Ans:
UPDATE PARTICIPATED SET DAMAGE_AMOUNT=25000
WHERE REGNO='MZ-01-B5045'AND REPORT_NO=12;
c) add a new accident to the database
Ans:
INSERT INTO ACCIDENT(REPORT_NO,ACDATE,LOCATION)
VALUES(13,'15-November-2017','New Capital Complex');
4. Calculate the total damage amount.
Ans:
SELECT SUM(DAMAGE_AMOUNT)FROM PARTICIPATED;
5. Find the lowest and highest amount of money spent in accident.
Ans:
SELECT MIN(DAMAGE_AMOUNT) AS LOWEST, MAX(DAMAGE_AMOUNT) AS HIGHEST FROM
PARTICIPATED;
6. Select location of accident using subquery.
Ans:
SELECT * FROM ACCIDENT WHERE
LOCATION=(SELECT LOCATION FROM ACCIDENT WHERE LOCATION='New Capital Complex');
7. Find the total number of people who owned cars that were involved in accidents in
2002.
Ans:
SELECT COUNT(P.DRIVER_ID)
FROM PARTICIPATED P,CAR C
WHERE P.REGNO=C.REGNO AND C.YEAR=2002;
8. Find the number of accidents in which cars belonging to a specific model were involved.
Ans:
SELECT COUNT(P.DRIVER_ID)
FROM PARTICIPATED P,CAR C WHERE P.REGNO=C.REGNO AND C.MODEL='Koenigsegg Jesko';
9. Create a VIEW called OWNERSHIP that will appear the following :
Driver name, address, registration and location.
Ans:
CREATE VIEW OWNERSHIP(NAME,ADDRESS,REGISTRATION,LOCATION)AS SELECT
P.NAME,P.ADDRESS,C.REGNO,A.LOCATION
FROM PERSON P,CAR C,ACCIDENT A,PARTICIPATED X WHERE
P.DRIVER_ID=X.DRIVER_ID AND C.REGNO=X.REGNO AND
A.REPORT_NO=X.REPORT_NO;
10. Remove the model column from the CAR table.
Ans:
ALTER TABLE CAR DROP COLUMN MODEL;