Update DBMS/SQL/Week5/writeup.md

This commit is contained in:
Aadit Agrawal 2025-02-04 15:02:14 +05:30
parent cf4962a0b1
commit 1732972102

View File

@ -13,4 +13,182 @@ Table created.
SQL> create table COURSE(course# int,cname varchar(30),dept varchar(30)); SQL> create table COURSE(course# int,cname varchar(30),dept varchar(30));
Table created. Table created.
``` ```
Verifying, we get
```sql
SQL> desc STUDENT;
Name Null? Type
----------------------------------------- -------- ----------------------------
REGNO NOT NULL VARCHAR2(20)
NAME VARCHAR2(50)
MAJOR VARCHAR2(20)
BDATE DATE
SQL> desc COURSE;
Name Null? Type
----------------------------------------- -------- ----------------------------
COURSE# NUMBER(38)
CNAME VARCHAR2(30)
DEPT VARCHAR2(30)
```
**Adding the textbook table:**
```SQL
SQL> create table text(book_isbn int primary key,booktitle varchar(20),publisher varchar(50),author varchar(50));
Table created.
SQL> desc TEXT;
Name Null? Type
----------------------------------------- -------- ----------------------------
BOOK_ISBN NOT NULL NUMBER(38)
BOOKTITLE VARCHAR2(20)
PUBLISHER VARCHAR2(50)
AUTHOR VARCHAR2(50)
```
For the ENROLL table, we'll have
```sql
SQL> ALTER TABLE COURSE
2 ADD CONSTRAINT pk_course PRIMARY KEY (course#);
Table altered.
SQL> CREATE TABLE ENROLL (
2 regno VARCHAR2(20),
3 course# NUMBER(38),
4 sem INT,
5 book_isbn NUMBER(38),
6 PRIMARY KEY (regno, course#),
7 CONSTRAINT fkey1course FOREIGN KEY (regno) REFERENCES STUDENT (regno),
8 CONSTRAINT fkey2course FOREIGN KEY (course#) REFERENCES COURSE (course#),
9 CONSTRAINT fkey3book FOREIGN KEY (book_isbn) REFERENCES TEXT (book_isbn)
10 );
Table created.
SQL>
SQL> create table BOOK_ADOPTION(course# int,sem int,book_isbn int,primary key(course#,book_isbn),constraint fkey1book_adoption foreign key(course#)references course(course#));
Table created.
SQL> desc ENROLL;
Name Null? Type
----------------------------------------- -------- ----------------------------
REGNO NOT NULL VARCHAR2(20)
COURSE# NOT NULL NUMBER(38)
SEM NUMBER(38)
BOOK_ISBN NUMBER(38)
SQL> desc BOOK_ADOPTION;
Name Null? Type
----------------------------------------- -------- ----------------------------
COURSE# NOT NULL NUMBER(38)
SEM NUMBER(38)
BOOK_ISBN NOT NULL NUMBER(38)
```
Now, defining the foreign key nature of BOOK_ISBN, we have:
```sql
SQL> alter table BOOK_ADOPTION add constraint fkey2book_adoption foreign key(book_isbn) references text(book_isbn);
Table altered.
SQL> alter table enroll add constraint fkey3enroll foreign key(book_isbn) references text(book_isbn);
Table altered.
```
Verifying status so far, we have
```sql
SQL> desc ENROLL;
Name Null? Type
----------------------------------------- -------- ----------------------------
REGNO NOT NULL VARCHAR2(20)
COURSE# NOT NULL NUMBER(38)
SEM NUMBER(38)
BOOK_ISBN NUMBER(38)
SQL> desc BOOK_ADOPTION;
Name Null? Type
----------------------------------------- -------- ----------------------------
COURSE# NOT NULL NUMBER(38)
SEM NUMBER(38)
BOOK_ISBN NOT NULL NUMBER(38)
SQL> descc TEXT;
SP2-0042: unknown command "descc TEXT" - rest of line ignored.
SQL> desc TEXT;
Name Null? Type
----------------------------------------- -------- ----------------------------
BOOK_ISBN NOT NULL NUMBER(38)
BOOKTITLE VARCHAR2(20)
PUBLISHER VARCHAR2(50)
AUTHOR VARCHAR2(50)
```
### POPULATING TUPPLES
**Insertion into student:**
```sql
SQL> insert into student values('123','Ashwin','CCE','17-oct-2003');
1 row created.
SQL> insert into student values('456','Aadit','CCE','03-feb-2005');
1 row created.
SQL> insert into student values('789','Shrikanth','Environment','01-jan-2023');
1 row created.
SQL> insert into student values('101','Aarav','Environment','23-sep-2004');
1 row created.
SQL> insert into student values('567','Amogh','CSE','03-mar-2004');
1 row created.
SQL> insert into student values('890','Saarthak','CSE','03-jul-2004');
1 row created.
```
Insertion into COURSE:
```sql
SQL> insert into COURSE values(1101,'DBMS','ICT');
1 row created.
SQL> insert into COURSE values(1102,'DAA','ICT');
1 row created.
SQL> insert into COURSE values(2201,'COA','CS');
1 row created.
SQL> insert into COURSE values(2202,'DSD','CS');
1 row created.
SQL> insert into COURSE values(3301,'MATH','EVS');
1 row created.
SQL> insert into COURSE values(3302,'POETRY','EVS');
1 row created.
SQL> insert into COURSE values(3303,'Random','EVS');
1 row created.
```
Now, we can either