Wednesday, February 13, 2013

Primary Key and Foreign Key

-->
Today we will discuss how to use Primary Key and Foreign Key in SQL
-->
drop table dependent;
drop table employee;
drop table department;

CREATE TABLE DEPARTMENT
  (DNAME          VARCHAR2(15),
   DNUMBER        NUMBER(2) NOT NULL,
   MGRSSN         NUMBER(12),
   MGRSTARTDATE   DATE,
   PRIMARY KEY (dnumber)
);


CREATE TABLE employee
  (FNAME           VARCHAR2(15),
   MINIT           VARCHAR2(2),
   LNAME           VARCHAR2(15),
   SSN             NUMBER(12) NOT NULL,
   BDATE           DATE,
   ADDRESS         VARCHAR2(35),
   SEX             VARCHAR2(1),
   SALARY          NUMBER(7) NOT NULL,
   SUPERSSN        NUMBER(12),
   DNO             NUMBER(2) NOT NULL,
   PRIMARY KEY (ssn),
   FOREIGN KEY (dno) REFERENCES departmenT (dnumber)
);

CREATE TABLE DEPENDENT 
(ESSN                   NUMBER(12),
 DEPENDENT_NAME         VARCHAR2(15),
 SEX                    VARCHAR2(1),
 BDATE                  DATE,
 RELATIONSHIP           VARCHAR2(12),
 PRIMARY KEY (essn, dependent_name),
 FOREIGN KEY (essn) REFERENCES employee (ssn)
);


drop table dependent;
drop table employee;
drop table department;

CREATE TABLE DEPARTMENT
  (DNAME          VARCHAR2(15),
   DNUMBER        NUMBER(2) NOT NULL,
   MGRSSN         NUMBER(12),
   MGRSTARTDATE   DATE,
   primary key(dnumber)
) ;

CREATE TABLE employee
  (FNAME           VARCHAR2(15),
   MINIT           VARCHAR2(2),
   LNAME           VARCHAR2(15),
   SSN             NUMBER(12) NOT NULL,
   BDATE           DATE,
   ADDRESS         VARCHAR2(35),
   SEX             VARCHAR2(1),
   SALARY          NUMBER(7) NOT NULL,
   SUPERSSN        NUMBER(12),
   DNO             NUMBER(2) NOT NULL,
   primary key (ssn),
   FOREIGN KEY (dno) REFERENCES department (dnumber) ON DELETE NO ACTION;
) ;

CREATE TABLE DEPENDENT 
(ESSN                   NUMBER(12),
 DEPENDENT_NAME         VARCHAR2(15),
 SEX                    VARCHAR2(1),
 BDATE                  DATE,
 RELATIONSHIP           VARCHAR2(12),
 primary key (essn,dependent_name),
 FOREIGN KEY (essn) REFERENCES employee (ssn) ON DELETE NO ACTION;
) ;


INSERT INTO DEPARTMENT VALUES ('RESEARCH',       5, 333445555, '22-MAY-1978') ;
INSERT INTO DEPARTMENT VALUES ('ADMINISTRATION', 4, 987654321, '01-JAN-1985') ;
INSERT INTO DEPARTMENT VALUES ('HEADQUARTERS',   1, 888665555, '19-JUN-1971') ;

INSERT INTO EMPLOYEE VALUES
('JOHN','B','SMITH',123456789,'09-JAN-1955','731 FONDREN, HOUSTON, TX', 'M',30000,333445555,5) ;
INSERT INTO EMPLOYEE VALUES
('FRANKLIN','T','WONG',333445555,'08-DEC-1945','638 VOSS,HOUSTON TX', 'M',40000,888665555,5) ;
INSERT INTO EMPLOYEE VALUES
('ALICIA','J','ZELAYA',999887777,'19-JUL-1958','3321 CASTLE, SPRING, TX', 'F',25000,987654321,4) ;
INSERT INTO EMPLOYEE VALUES
('JENNIFER','S','WALLACE',987654321,'20-JUN-1931','291 BERRY, BELLAIRE, TX', 'F',43000,888665555,4) ;
INSERT INTO EMPLOYEE VALUES
('RAMESH','K','NARAYAN',666884444,'15-SEP-1952','975 FIRE OAK, HUMBLE, TX', 'M',38000,333445555,5) ;
INSERT INTO EMPLOYEE VALUES
('JOYCE','A','ENGLISH',453453453,'31-JUL-1962','5631 RICE, HOUSTON, TX', 'F',25000,333445555,5);
INSERT INTO EMPLOYEE VALUES
('AHMAD','V','JABBAR',987987987,'29-MAR-1959','980 DALLAS, HOUSTON, TX', 'M',25000,987654321,4) ;
INSERT INTO EMPLOYEE VALUES 
('JAMES','E','BORG',888665555,'10-NOV-1927', '450 STONE, HOUSTON, TX', 'M',55000,NULL,1) ;

INSERT INTO DEPENDENT VALUES (333445555,'ALICE','F','05-APR-1976','DAUGHTER') ;
INSERT INTO DEPENDENT VALUES (333445555,'THEODORE','M','25-OCT-1973','SON')  ;
INSERT INTO DEPENDENT VALUES (333445555,'JOY','F','03-MAY-1948','SPOUSE');
INSERT INTO DEPENDENT VALUES (123456789,'MICHAEL','M','01-JAN-1978','SON');
INSERT INTO DEPENDENT VALUES (123456789,'ALICE','F','31-DEC-1978','DAUGHTER');
INSERT INTO DEPENDENT VALUES (123456789,'ELIZABETH','F','05-MAY-1957','SPOUSE');
INSERT INTO DEPENDENT VALUES (987654321,'ABNER','M','26-FEB-1932','SPOUSE');


  


-->
DROP TABLE course_contents;
CREATE TABLE course_contents(
    course_id    varchar(10) NOT NULL,
    course_name    varchar(20) UNIQUE,
    credit        integer CHECK(credit>0 AND credit<5),
    passmark    integer DEFAULT 40,
    PRIMARY KEY(course_id)
);

INSERT INTO course_contents(course_id,course_name,credit) VALUES('CSE2101','Data Structure',3);
INSERT INTO course_contents(course_id,course_name,credit) VALUES('CSE2102','Discrete Math',3);
INSERT INTO course_contents(course_id,course_name,credit) VALUES('CSE2107','Database Systems',3);
INSERT INTO course_contents(course_id,course_name,credit) VALUES('CSE2108','Algorithm',4);


-->
drop table dependent;
drop table employee;
drop table department;

CREATE TABLE DEPARTMENT
  (DNAME          VARCHAR2(15),
   DNUMBER        NUMBER(2) NOT NULL,
   MGRSSN         NUMBER(12),
   MGRSTARTDATE   DATE,
   PRIMARY KEY (dnumber)
) ;


CREATE TABLE employee
  (FNAME           VARCHAR2(15),
   MINIT           VARCHAR2(2),
   LNAME           VARCHAR2(15),
   SSN             NUMBER(12) NOT NULL,
   BDATE           DATE,
   ADDRESS         VARCHAR2(35),
   SEX             VARCHAR2(1),
   SALARY          NUMBER(7) NOT NULL,
   SUPERSSN        NUMBER(12),
   DNO             NUMBER(2) NOT NULL,
   PRIMARY KEY (ssn),
   FOREIGN KEY (dno) REFERENCES department (dnumber) ON DELETE CASCADE
) ;



CREATE TABLE DEPENDENT
(ESSN                   NUMBER(12),
 DEPENDENT_NAME         VARCHAR2(15),
 SEX                    VARCHAR2(1),
 BDATE                  DATE,
 RELATIONSHIP           VARCHAR2(12),
 PRIMARY KEY (essn, dependent_name),
 FOREIGN KEY (essn) REFERENCES employee (ssn) ON DELETE CASCADE
) ;


INSERT INTO DEPARTMENT VALUES ('RESEARCH',       5, 333445555, '22-MAY-1978') ;
INSERT INTO DEPARTMENT VALUES ('ADMINISTRATION', 4, 987654321, '01-JAN-1985') ;
INSERT INTO DEPARTMENT VALUES ('HEADQUARTERS',   1, 888665555, '19-JUN-1971') ;

INSERT INTO EMPLOYEE VALUES
('JOHN','B','SMITH',123456789,'09-JAN-1955','731 FONDREN, HOUSTON, TX', 'M',30000,333445555,5) ;
INSERT INTO EMPLOYEE VALUES
('FRANKLIN','T','WONG',333445555,'08-DEC-1945','638 VOSS,HOUSTON TX', 'M',40000,888665555,5) ;
INSERT INTO EMPLOYEE VALUES
('ALICIA','J','ZELAYA',999887777,'19-JUL-1958','3321 CASTLE, SPRING, TX', 'F',25000,987654321,4) ;
INSERT INTO EMPLOYEE VALUES
('JENNIFER','S','WALLACE',987654321,'20-JUN-1931','291 BERRY, BELLAIRE, TX', 'F',43000,888665555,4) ;
INSERT INTO EMPLOYEE VALUES
('RAMESH','K','NARAYAN',666884444,'15-SEP-1952','975 FIRE OAK, HUMBLE, TX', 'M',38000,333445555,5) ;
INSERT INTO EMPLOYEE VALUES
('JOYCE','A','ENGLISH',453453453,'31-JUL-1962','5631 RICE, HOUSTON, TX', 'F',25000,333445555,5);
INSERT INTO EMPLOYEE VALUES
('AHMAD','V','JABBAR',987987987,'29-MAR-1959','980 DALLAS, HOUSTON, TX', 'M',25000,987654321,4) ;
INSERT INTO EMPLOYEE VALUES
('JAMES','E','BORG',888665555,'10-NOV-1927', '450 STONE, HOUSTON, TX', 'M',55000,NULL,1) ;

INSERT INTO DEPENDENT VALUES (333445555,'ALICE','F','05-APR-1976','DAUGHTER') ;
INSERT INTO DEPENDENT VALUES (333445555,'THEODORE','M','25-OCT-1973','SON')  ;
INSERT INTO DEPENDENT VALUES (333445555,'JOY','F','03-MAY-1948','SPOUSE');
INSERT INTO DEPENDENT VALUES (123456789,'MICHAEL','M','01-JAN-1978','SON');
INSERT INTO DEPENDENT VALUES (123456789,'ALICE','F','31-DEC-1978','DAUGHTER');
INSERT INTO DEPENDENT VALUES (123456789,'ELIZABETH','F','05-MAY-1957','SPOUSE');
INSERT INTO DEPENDENT VALUES (987654321,'ABNER','M','26-FEB-1932','SPOUSE');

No comments:

Post a Comment

Vision