Compare commits

...

6 Commits

6 changed files with 226 additions and 215 deletions

View File

@ -1,3 +1,5 @@
# Database Queries for Assignment-A3
## Creating database ## Creating database
```sql ```sql

View File

@ -1,3 +1,5 @@
# Database Queries for Assignment-A4
## Creating tables ## Creating tables
```sql ```sql

View File

@ -1,76 +0,0 @@
## Creating tables & inserting data
Student marks:
```sql
CREATE TABLE Stud_Marks(
Roll NUMBER(14),
name VARCHAR(255),
total_marks NUMBER(14),
PRIMARY KEY(Roll)
);
INSERT INTO Stud_Marks VALUES (1, 'Arora', 1350);
INSERT INTO Stud_Marks VALUES (2, 'Shankar', 979);
INSERT INTO Stud_Marks VALUES (3, 'Lara', 834);
INSERT INTO Stud_Marks VALUES (4, 'Jambo', 667);
INSERT INTO Stud_Marks VALUES (5, 'Tinde', 1400);
```
Result:
```sql
CREATE TABLE Result(
Roll NUMBER(14),
name VARCHAR(255),
Class VARCHAR(255),
FOREIGN KEY (Roll) REFERENCES Stud_Marks (Roll)
);
```
## Procedure
```sql
CREATE OR REPLACE PROCEDURE proc_grade
(rollno in number,
p_roll_no out Stud_Marks.Roll%type,
p_name out Stud_Marks.name%type,
p_total out Stud_Marks.total_marks%type)
AS
BEGIN
SELECT Roll, name, total_marks into p_roll_no, p_name, p_total from Stud_Marks WHERE Roll = rollno;
IF p_total <= 1500 and p_total >= 990
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'Distinction');
ELSE IF p_total <= 989 and p_total >= 900
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'First Class');
ELSE IF p_total <= 899 and p_total >= 825
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'Higher Second Class');
ELSE
INSERT INTO Result VALUES (p_roll_no, p_name, 'FAIL');
END IF;
END IF;
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Rollno ' || rollno || ' is not present!!');
END;
/
```
## Calling Procedure:
```sql
DECLARE
rollno number(14);
p_roll_no Stud_Marks.Roll%type;
p_name Stud_Marks.name%type;
p_total_marks Stud_Marks.total_marks%type;
BEGIN
rollno := &rollno;
proc_grade(rollno, p_roll_no, p_name, p_total_marks);
END;
/
```

135
Practical/Assignment-A6/Queries-A6.md Normal file → Executable file
View File

@ -1,107 +1,78 @@
## Creating tables # Database Queries for Assignment-A6
`O_RollCall` table: ## Creating tables & inserting data
Student marks:
```sql ```sql
CREATE TABLE O_RollCall( CREATE TABLE Stud_Marks(
name VARCHAR(255), Roll NUMBER(14),
roll NUMBER(14), name VARCHAR(255),
class VARCHAR(255) total_marks NUMBER(14),
PRIMARY KEY(Roll)
); );
INSERT INTO Stud_Marks VALUES (1, 'Arora', 1350);
INSERT INTO Stud_Marks VALUES (2, 'Shankar', 979);
INSERT INTO Stud_Marks VALUES (3, 'Lara', 834);
INSERT INTO Stud_Marks VALUES (4, 'Jambo', 667);
INSERT INTO Stud_Marks VALUES (5, 'Tinde', 1400);
``` ```
`N_RollCall` table: Result:
```sql ```sql
CREATE TABLE N_RollCall( CREATE TABLE Result(
name VARCHAR(255), Roll NUMBER(14),
roll NUMBER(14), name VARCHAR(255),
class VARCHAR(255) Class VARCHAR(255),
FOREIGN KEY (Roll) REFERENCES Stud_Marks (Roll)
); );
``` ```
## Inserting data
`O_RollCall` table:
```sql
INSERT INTO O_RollCall VALUES ('Stewie', 1, 'Comp 1');
INSERT INTO O_RollCall VALUES ('Edie', 2, 'Comp 2');
INSERT INTO O_RollCall VALUES ('Stomp', 3, 'Comp 3');
INSERT INTO O_RollCall VALUES ('Lara', 4, 'Comp 1');
INSERT INTO O_RollCall VALUES ('Foxy', 5, 'Comp 2');
```
`N_RollCall` table:
```sql
INSERT INTO N_RollCall VALUES ('Stewie', 1, 'Comp 1');
INSERT INTO N_RollCall VALUES ('Edie', 2, 'Comp 2');
INSERT INTO N_RollCall VALUES ('Stomp', 3, 'Comp 3');
INSERT INTO N_RollCall VALUES ('Lara', 4, 'Comp 1');
INSERT INTO N_RollCall VALUES ('Foxy', 5, 'Comp 2');
INSERT INTO N_RollCall VALUES ('Gundeti', 6, 'Comp 3');
INSERT INTO N_RollCall VALUES ('Kalas', 7, 'Comp 2');
```
## Procedure ## Procedure
### Explicit cursor
```sql ```sql
DECLARE CREATE OR REPLACE PROCEDURE proc_grade
p_name VARCHAR(255); (rollno in number,
p_rollno NUMBER(15); p_roll_no out Stud_Marks.Roll%type,
p_class VARCHAR(255); p_name out Stud_Marks.name%type,
CURSOR cc1 IS SELECT * FROM N_RollCall WHERE roll NOT IN (SELECT roll FROM O_RollCall); p_total out Stud_Marks.total_marks%type)
AS
BEGIN BEGIN
OPEN cc1; SELECT Roll, name, total_marks into p_roll_no, p_name, p_total from Stud_Marks WHERE Roll = rollno;
LOOP IF p_total <= 1500 and p_total >= 990
FETCH cc1 INTO p_name, p_rollno, p_class; THEN
INSERT INTO O_RollCall VALUES (p_name, p_rollno, p_class); INSERT INTO Result VALUES (p_roll_no, p_name, 'Distinction');
EXIT WHEN cc1%notfound; ELSE IF p_total <= 989 and p_total >= 900
DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class); THEN
END LOOP; INSERT INTO Result VALUES (p_roll_no, p_name, 'First Class');
CLOSE cc1; ELSE IF p_total <= 899 and p_total >= 825
THEN
INSERT INTO Result VALUES (p_roll_no, p_name, 'Higher Second Class');
ELSE
INSERT INTO Result VALUES (p_roll_no, p_name, 'FAIL');
END IF;
END IF;
END IF;
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line('Rollno ' || rollno || ' is not present!!');
END; END;
/ /
``` ```
### Parameterized cursor ## Calling Procedure:
```sql ```sql
DECLARE DECLARE
p_name VARCHAR(255); rollno number(14);
p_rollno NUMBER(15); p_roll_no Stud_Marks.Roll%type;
p_class VARCHAR(255); p_name Stud_Marks.name%type;
CURSOR pp1(roll1 NUMBER) IS SELECT * FROM N_RollCall WHERE roll > roll1; p_total_marks Stud_Marks.total_marks%type;
BEGIN BEGIN
OPEN pp1(3); rollno := &rollno;
LOOP proc_grade(rollno, p_roll_no, p_name, p_total_marks);
FETCH pp1 INTO p_name, p_rollno, p_class;
EXIT WHEN pp1%notfound;
DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class);
END LOOP;
CLOSE pp1;
END;
/
```
### Implicit Cursor
```sql
DECLARE
total_rows NUMBER(2);
BEGIN
UPDATE N_RollCall SET roll = roll + 1;
IF sql%notfound THEN
dbms_output.put_line('no roll was updated');
ELSIF sql%found THEN
total_rows := sql%rowcount;
DBMS_OUTPUT.PUT_LINE( total_rows || ' roll calls were affected ');
END IF;
END; END;
/ /

View File

@ -1,91 +1,110 @@
# Database Queries for Assignment-A7
## Creating tables ## Creating tables
`Library` table: `O_RollCall` table:
```sql ```sql
CREATE TABLE Library( CREATE TABLE O_RollCall(
id NUMBER(12), name VARCHAR(255),
title VARCHAR(255), roll NUMBER(14),
dateofissue DATE, class VARCHAR(255)
author VARCHAR(255)
); );
``` ```
`Library_Audit` table: `N_RollCall` table:
```sql ```sql
CREATE TABLE Library_Audit( CREATE TABLE N_RollCall(
id NUMBER(12), name VARCHAR(255),
title VARCHAR(255), roll NUMBER(14),
dateofaction DATE, class VARCHAR(255)
author VARCHAR(255),
status VARCHAR(255)
); );
``` ```
## Inserting values ## Inserting data
`Library` table: `O_RollCall` table:
```sql ```sql
INSERT INTO Library VALUES (1, 'Berserk', TO_DATE('2024-07-28','YYYY-MM-DD'), 'Prashant'); INSERT INTO O_RollCall VALUES ('Stewie', 1, 'Comp 1');
INSERT INTO Library VALUES (2, 'Dark', TO_DATE('2024-07-15','YYYY-MM-DD'), 'Rajendra'); INSERT INTO O_RollCall VALUES ('Edie', 2, 'Comp 2');
INSERT INTO Library VALUES (3, 'Hannibal', TO_DATE('2024-07-20','YYYY-MM-DD'), 'Manoj'); INSERT INTO O_RollCall VALUES ('Stomp', 3, 'Comp 3');
INSERT INTO Library VALUES (4, 'AOT', TO_DATE('2024-07-30','YYYY-MM-DD'), 'Rajesh'); INSERT INTO O_RollCall VALUES ('Lara', 4, 'Comp 1');
INSERT INTO Library VALUES (5, 'GOT', TO_DATE('2024-07-19','YYYY-MM-DD'), 'Anil'); INSERT INTO O_RollCall VALUES ('Foxy', 5, 'Comp 2');
``` ```
## Trigger `N_RollCall` table:
```sql ```sql
CREATE OR REPLACE TRIGGER library_action INSERT INTO N_RollCall VALUES ('Stewie', 1, 'Comp 1');
AFTER INSERT OR UPDATE OR DELETE ON Library INSERT INTO N_RollCall VALUES ('Edie', 2, 'Comp 2');
FOR EACH ROW INSERT INTO N_RollCall VALUES ('Stomp', 3, 'Comp 3');
INSERT INTO N_RollCall VALUES ('Lara', 4, 'Comp 1');
INSERT INTO N_RollCall VALUES ('Foxy', 5, 'Comp 2');
INSERT INTO N_RollCall VALUES ('Gundeti', 6, 'Comp 3');
INSERT INTO N_RollCall VALUES ('Kalas', 7, 'Comp 2');
```
## Procedure
### Explicit cursor
```sql
DECLARE
p_name VARCHAR(255);
p_rollno NUMBER(15);
p_class VARCHAR(255);
CURSOR cc1 IS SELECT * FROM N_RollCall WHERE roll NOT IN (SELECT roll FROM O_RollCall);
BEGIN BEGIN
IF INSERTING THEN OPEN cc1;
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:NEW.id, :NEW.title, current_timestamp, :NEW.author, 'Insert'); LOOP
ELSIF UPDATING THEN FETCH cc1 INTO p_name, p_rollno, p_class;
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Update'); INSERT INTO O_RollCall VALUES (p_name, p_rollno, p_class);
ELSIF DELETING THEN EXIT WHEN cc1%notfound;
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Delete'); DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class);
END IF; END LOOP;
CLOSE cc1;
END; END;
/ /
``` ```
## Testing trigger ### Parameterized cursor
### Insert operation
```sql ```sql
INSERT INTO Library VALUES (15, 'CREW', TO_DATE('2024-07-22','YYYY-MM-DD'), 'Ramesh'); DECLARE
INSERT INTO Library VALUES (14, 'Ninteen Eighty Four', TO_DATE('2024-07-01','YYYY-MM-DD'), 'Omkar'); p_name VARCHAR(255);
p_rollno NUMBER(15);
p_class VARCHAR(255);
CURSOR pp1(roll1 NUMBER) IS SELECT * FROM N_RollCall WHERE roll > roll1;
SELECT * FROM Library; BEGIN
SELECT * FROM Library_Audit; OPEN pp1(3);
LOOP
FETCH pp1 INTO p_name, p_rollno, p_class;
EXIT WHEN pp1%notfound;
DBMS_OUTPUT.PUT_LINE(p_name || ' ' || p_rollno || ' ' || p_class);
END LOOP;
CLOSE pp1;
``` END;
### Update operation /
```sql
UPDATE Library SET id = 6, title = 'Sherlock', author = 'Deepak' where id = 3;
UPDATE Library SET id = 7, title = 'MR. ROBOT', author = 'Varad' where id = 4;
SELECT * FROM Library;
SELECT * FROM Library_Audit;
``` ```
### Delete operation ### Implicit Cursor
```sql ```sql
DELETE FROM Library WHERE id = 1; DECLARE
DELETE FROM Library WHERE id = 5; total_rows NUMBER(2);
SELECT * FROM Library; BEGIN
SELECT * FROM Library_Audit; UPDATE N_RollCall SET roll = roll + 1;
IF sql%notfound THEN
dbms_output.put_line('no roll was updated');
ELSIF sql%found THEN
total_rows := sql%rowcount;
DBMS_OUTPUT.PUT_LINE( total_rows || ' roll calls were affected ');
END IF;
END;
/
``` ```
---

View File

@ -0,0 +1,93 @@
# Database Queries for Assignment-A8
## Creating tables
`Library` table:
```sql
CREATE TABLE Library(
id NUMBER(12),
title VARCHAR(255),
dateofissue DATE,
author VARCHAR(255)
);
```
`Library_Audit` table:
```sql
CREATE TABLE Library_Audit(
id NUMBER(12),
title VARCHAR(255),
dateofaction DATE,
author VARCHAR(255),
status VARCHAR(255)
);
```
## Inserting values
`Library` table:
```sql
INSERT INTO Library VALUES (1, 'Berserk', TO_DATE('2024-07-28','YYYY-MM-DD'), 'Prashant');
INSERT INTO Library VALUES (2, 'Dark', TO_DATE('2024-07-15','YYYY-MM-DD'), 'Rajendra');
INSERT INTO Library VALUES (3, 'Hannibal', TO_DATE('2024-07-20','YYYY-MM-DD'), 'Manoj');
INSERT INTO Library VALUES (4, 'AOT', TO_DATE('2024-07-30','YYYY-MM-DD'), 'Rajesh');
INSERT INTO Library VALUES (5, 'GOT', TO_DATE('2024-07-19','YYYY-MM-DD'), 'Anil');
```
## Trigger
```sql
CREATE OR REPLACE TRIGGER library_action
AFTER INSERT OR UPDATE OR DELETE ON Library
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:NEW.id, :NEW.title, current_timestamp, :NEW.author, 'Insert');
ELSIF UPDATING THEN
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Update');
ELSIF DELETING THEN
INSERT INTO Library_Audit (id, title, dateofaction, author, status) VALUES (:OLD.id, :OLD.title, current_timestamp, :OLD.author, 'Delete');
END IF;
END;
/
```
## Testing trigger
### Insert operation
```sql
INSERT INTO Library VALUES (15, 'CREW', TO_DATE('2024-07-22','YYYY-MM-DD'), 'Ramesh');
INSERT INTO Library VALUES (14, 'Ninteen Eighty Four', TO_DATE('2024-07-01','YYYY-MM-DD'), 'Omkar');
SELECT * FROM Library;
SELECT * FROM Library_Audit;
```
### Update operation
```sql
UPDATE Library SET id = 6, title = 'Sherlock', author = 'Deepak' where id = 3;
UPDATE Library SET id = 7, title = 'MR. ROBOT', author = 'Varad' where id = 4;
SELECT * FROM Library;
SELECT * FROM Library_Audit;
```
### Delete operation
```sql
DELETE FROM Library WHERE id = 1;
DELETE FROM Library WHERE id = 5;
SELECT * FROM Library;
SELECT * FROM Library_Audit;
```
---