SQL Assignment 3
SQL Assignment 3
SQL Assignment 3
Script to be run to set up the tables and insert the respective data:
create table trainhalts (id varchar(5) , seqno integer , stcode varchar(10), timein varchar(5) , timeout varchar(5) , primary key (id,seqno) ); create table track (stcode1 varchar(5) , stcode2 varchar(5), distance integer , primary key (stcode1,stcode2) );
create table station (stcode varchar(5), name varchar(20), primary key (stcode)); create table train (id varchar(5) , name varchar(20), primary key (id) );
delete delete delete delete insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert insert
from from from from into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into into
trainhalts; station; track; train; trainhalts values ('KP11' , 0 , 'CST' , NULL, '20.23'); trainhalts values ('KP11' , 1 , 'BYC' , '20.31', '20.32'); trainhalts values ('KP11' , 2 , 'DR' , '20.41', '20.42'); trainhalts values ('KP11' , 3 , 'GPR' , '20.52', '20.53'); trainhalts values ('KP11' , 4 , 'GPR' , '20.52', '20.53'); trainhalts values ('KP11' , 5 , 'DR' , '20.41', '20.42'); trainhalts values ('KP11' , 6 , 'GPR' , '20.58', '20.59'); trainhalts values ('KP11' , 7 , 'TNA' , '21.21', '21.22'); trainhalts values ('KP11' , 8 , 'DL' , '21.45', '21.46'); trainhalts values ('KP11' , 9 , 'KYN' , '21.54', NULL); trainhalts values ('A65' , 0 , 'CST' , NULL , '20.52'); trainhalts values ('A65' , 1 , 'BYC' , '21.00' , '21.01'); trainhalts values ('A65' , 2 , 'DR' , '21.10' , '21.11'); trainhalts values ('A65' , 3 , 'KRL' , '21.22' , '21.23'); trainhalts values ('A65' , 4 , 'GPR' , '21.28' , '21.29'); trainhalts values ('A65' , 5 , 'TNA' , '21.49' , '21.50'); trainhalts values ('A65' , 6 , 'DL' , '22.13' , '22.14'); trainhalts values ('A65' , 7 , 'KYN' , '22.22' , '22.23'); trainhalts values ('A65' , 8 , 'AMR' , '22.36' , NULL); station values ('CST' ,'MUMBAI'); station values ('BYC' ,'BYCULLA'); station values ('DR' ,'DADAR'); station values ('KRL' ,'KURLA'); station values ('GPR' ,'GHATKOPAR'); station values ('TNA' ,'THANE'); station values ('DL' ,'DOMBIVALI'); station values ('AMR' , 'AMBARNATH'); station values ('KYN' ,'KALYAN'); station values ('KSR' ,'KASARA'); train values ('KP11' ,'CST-KYN'); train values ('KP11L' ,'CST-KYN_LOCAL'); train values ('T129' ,'CST-TNA_LOCAL'); train values ('A63' ,'CST-DL_LOCAL'); train values ('K101' ,'CST-KYN_LOCAL'); train values ('N27' ,'CST-TNA_LOCAL'); train values ('S33' ,'CST-KGR_LOCAL'); train values ('A65' ,'CST-AMR_LOCAL'); track values ('CST' ,'BYC', 5); track values ('CST' ,'DR', 9); track values ('CST' ,'KRL', 16);
insert insert insert insert insert insert insert insert insert insert insert insert insert
into into into into into into into into into into into into into
track track track track track track track track track track track track track
values values values values values values values values values values values values values
('CST' ,'GPR', 20); ('CST' ,'TNA', 34); ('CST' ,'DL', 49); ('CST' ,'KYN', 54); ('CST' ,'KSR', 77); ('CST' ,'AMR', 65); ('BYC' ,'DR', 4); ('BYC' ,'KRL', 11); ('GRP' ,'TNA', 14); ('DR' ,'TNA', 25); ('KRL' ,'KYN', 38); ('TNA' ,'KYN', 20); ('TNA' ,'KSR', 43);
After the database tables and data are set; write the following queries: ---------------------------------------------------------------------
1. Find the pairs of stations(station codes) which have a track with distance less than 20Kms between them. 2. Find the IDs of all the trains which have a stop at THANE 3. Find the names of all trains that start at MUMBAI. 4. List all the stations in order of visit by the train 'CST-AMR_LOCAL'. 5. Find the name of the trains which stop at Thane, before the 6th stop in the route of the train.
Part2:
1 Write the create table SQL commands to create the following tables: 1. phone(phone_id, brand, model, price) o This table represents a mobile phone. o brand is some string like 'Nokia', 'Samsung' etc. o model is a string such as 'N95', 'Galaxy3' etc. 2. network(network_id, name, type) o This table represents mobile phone networks such as 'Airtel', 'BSNL' etc. 3. deal(id, phone_id, network_id, deal_price, start_date, end_date) o Deal is an offer for a phone when bought along with a network o The deal price is valid only between start_date and end_date o The phone_id and network_id attributes are foreign keys to the phone and the network table respectively 2 Create constraints to check the following: 1. The start_date of a deal should always be <= its end_date. 2. The network type should be one of the following values: 'GSM', 'CDMA', 'BOTH' 3 Modify the create table script and add a cascade constraint so that, when a phone is deleted (i.e., no longer being manufactured), all deals for that phone are deleted.
4 Try to insert inconsistent data and verify the constraints. Provide insert statements that fail, along with the error message.