0% found this document useful (0 votes)
31 views16 pages

DBMS Lab

DBMS_LAB Amrit Campus

Uploaded by

tikapoudel798
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views16 pages

DBMS Lab

DBMS_LAB Amrit Campus

Uploaded by

tikapoudel798
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

PREPARATION OF DATABASE

To illustrate different sql commands, following sql commands are first executed to create database tables and to seed the database in
postgresql using psql.

CREATE DATABASE lab_assignment;


USE lab_assignment;
CREATE TABLE students (
student_id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL, -- Nepali names in English script
age INT NOT NULL,
gender VARCHAR(10),
address VARCHAR(100),
email VARCHAR(50) UNIQUE,
phone_number VARCHAR(15),
enrollment_date DATE,
grade DECIMAL(5,2) CHECK (grade >= 0 AND grade <= 100)
);

CREATE TABLE courses (


course_id INT PRIMARY KEY,
course_name VARCHAR(100) NOT NULL,
course_code VARCHAR(20) UNIQUE NOT NULL,
credits INT CHECK (credits >= 1 AND credits <= 5)
);
CREATE TABLE enrollments (
enrollment_id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT,
course_id INT,
enrollment_date DATE,
FOREIGN KEY (student_id) REFERENCES students(student_id) ON DELETE CASCADE,
FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE
);
INSERT INTO students (student_id, name, age, gender, address, email, phone_number, enrollment_date, grade)
VALUES
(1, 'Suresh Khadka', 20, 'Male', 'Kathmandu', '[email protected]', '9812345678', '2024-01-10', 85.50),
(2, 'Pooja Sharma', 22, 'Female', 'Pokhara', '[email protected]', '9812345679', '2023-06-05', 92.00),
(3, 'Rajesh Shrestha', 23, 'Male', 'Chitwan', '[email protected]', '9812345680', '2024-02-15', 76.25),
(4, 'Anju Rai', 21, 'Female', 'Biratnagar', '[email protected]', '9812345681', '2023-08-25', 88.00);

-- Insert data into `courses` table


INSERT INTO courses (course_id, course_name, course_code, credits)
VALUES
(1, 'Database Systems', 'CS101', 3),
(2, 'Computer Networks', 'CS102', 4),
(3, 'Mathematics for Computer Science', 'CS103', 3),
(4, 'Artificial Intelligence', 'CS104', 3);
INSERT INTO enrollments (student_id, course_id, enrollment_date)
VALUES
(1, 1, '2024-01-15'),
(1, 2, '2024-01-15'),
(2, 3, '2023-06-10'),
(2, 4, '2023-06-10'),
(3, 1, '2024-02-20'),
(3, 4, '2024-02-20'),
(4, 2, '2023-09-05'),
(4, 3, '2023-09-05');
1. Illustration of SELECT, FROM, WHERE clause.
SYNTAX:
SELECT column1, column2, ... FROM <table_name>WHERE condition.

QUERY:
SELECT name, age FROM students WHERE grade > 80;

OUTPUT:

2. Illustration of SELECTING OF ALL COLUMNS.


SYNTAX:
SELECT * FROM table_name;

QUERY:

SELECT * FROM students;

OUTPUT:

3. Illustration of SELECTING OF SPECIFIC COLUMNS.

SYNTAX:
SELECT column1, column2, ...

FROM table_name;

QUERY:

SELECT name, email FROM students;

OUTPUT:
4. Illustration of ORDER BY Clause.
SYNTAX:
SELECT column1, column2, ...

FROM table_name

ORDER BY column1 [ASC or DESC];

QUERY:

SELECT * FROM students ORDER BY grade DESC;

OUTPUT:

5. Illustration of Arithmetic operators.


SYNTAX:

SELECT column1, column2,

(column1 <OPERATOR> column2) AS Add_Result,

FROM table_name;

QUERY:

SELECT name, grade, grade * 1.2 AS adjusted_grade FROM students;

OUTPUT:
6. Illustration of Operator Precedence in Arithmetic expression.
SYNTAX:
SELECT column1, column2,
expression_with_default_precedence AS Result1,
expression_with_parentheses AS Result2
FROM table_name;

QUERY:
SELECT name, (grade + 10) * 1.1 AS new_grade FROM students;

OUTPUT:

7. Illustration of aggregate functions.


SYNTAX:
SELECT
COUNT(column_name) AS Alias1,
SUM(column_name) AS Alias2,
AVG(column_name) AS Alias3,
MIN(column_name) AS Alias4,
MAX(column_name) AS Alias5
FROM table_name;

QUERY:
SELECT AVG(grade) AS average_grade FROM students;
OUTPUT:

8. Illustration of GROUP BY clause

SYNTAX:
SELECT column_name,

aggregate_function(column_name) AS Alias

FROM table_name

GROUP BY column_name;

QUERY:

SELECT course_id, COUNT(student_id) AS num_students

FROM enrollments

GROUP BY course_id;

OUTPUT:

9. Illustration of Restricting Group Results with the HAVING Clause

SYNTAX:

SELECT column_name,
aggregate_function(column_name) AS Alias

FROM table_name

GROUP BY column_name

HAVING aggregate_function(column_name) condition;

QUERY:

SELECT course_id, COUNT(student_id) AS num_students

FROM enrollments

GROUP BY course_id

HAVING COUNT(student_id) > 1;

OUTPUT:

10. Illustration of Defining a Null Value.

SYNTAX:
SELECT column_name

FROM table_name

WHERE column_name IS NULL;

QUERY:
SELECT name, email FROM students WHERE gender IS NULL;

OUTPUT:
11. Illustration of Using Column Aliases.
SYNTAX:
SELECT column_name AS alias_name
FROM table_name;

QUERY:
SELECT name AS student_name, grade AS final_grade FROM students;

OUTPUT:

12. Illustration of Concatenation Operator


SYNTAX:
SELECT column1 || column2 AS concatenated_column
FROM table_name;

QUERY:
SELECT name || ' → ' || course_name AS course_info
FROM students
JOIN enrollments ON students.student_id = enrollments.student_id
JOIN courses ON enrollments.course_id = courses.course_id;

OUTPUT:
13. Illustration Literal Character Strings.
SYNTAX:
SELECT 'Literal String' AS alias_name;

QUERY:
SELECT name, age, 'Nepali Student' AS description FROM students;

OUTPUT:

14. Illustration of displaying distinct rows.


SYNTAX:
SELECT DISTINCT column_name
FROM table_name;

QUERY:
SELECT DISTINCT grade FROM students;

OUTPUT:
15. Illustration of displaying table structure
SYNTAX:
\d table_name

QUERY:
\d courses

OUTPUT

16. Illustration of Use of BETWEEN Operators.


SYNTAX:
SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

QUERY:
SELECT name FROM students WHERE grade BETWEEN 80 AND 90;

OUTPUT:

17. Illustration of Use of IN Operator


SYNTAX:
SELECT column_name
FROM table_name
WHERE column_name IN (value1, value2, ...);

QUERY:
SELECT name FROM students WHERE student_id IN (1, 3, 4);
OUTPUT:

18. Illustration of Using LIKE Operators.


SYNTAX:
SELECT column_name
FROM table_name
WHERE column_name LIKE 'pattern';

QUERY:
SELECT name FROM students WHERE name LIKE 'S%';

OUTPUT:

19. Illustration of Using AND Operator.

SYNTAX:
SELECT column_name
FROM table_name
WHERE condition1 AND condition2;

QUERY:
SELECT name FROM students WHERE age > 20 AND grade > 80;

OUTPUT:
20. Illustration of Using OR Operator.
SYNTAX:
SELECT column_name
FROM table_name
WHERE condition1 OR condition2;

QUERY:
SELECT name FROM students WHERE age > 22 OR grade < 80;

OUTPUT:

21. Illustration of Using NOT Operator.


SYNTAX:
SELECT column_name
FROM table_name
WHERE NOT condition;

QUERY:

SELECT name FROM students WHERE NOT (age < 21);

OUTPUT:

22. Illustration of SubQuery.


SYNTAX:
SELECT column_name
FROM table_name
WHERE column_name = (SELECT column_name FROM table_name WHERE condition);

QUERY:
SELECT name FROM students WHERE grade > (SELECT AVG(grade) FROM students);
OUTPUT:

23. Illustration of Creating Cross Joins.

SYNTAX:
SELECT column1, column2
FROM table1
CROSS JOIN table2;

QUERY:
SELECT students.name, courses.course_name
FROM students
CROSS JOIN courses;

OUTPUT:
24. Illustration of Natural Join.
SYNTAX:
SELECT column1, column2
FROM table1
NATURAL JOIN table2;

QUERY:
SELECT students.name, courses.course_name
FROM students
NATURAL JOIN enrollments
NATURAL JOIN courses;

OUTPUT:

26. Illustration of Creating Joins with the ON Clause.


SYNTAX:
SELECT column1, column2
FROM table1
JOIN table2 ON table1.column_name = table2.column_name;

QUERY:
SELECT students.name, courses.course_name
FROM students
LEFT JOIN enrollments ON students.student_id = enrollments.student_id
LEFT JOIN courses ON enrollments.course_id = courses.course_id;

OUTPUT:
27. Illustration of LEFT OUTER JOIN.
SYNTAX:
SELECT column1, column2
FROM table1
LEFT OUTER JOIN table2 ON table1.column_name = table2.column_name;

QUERY:
SELECT students.name, courses.course_name
FROM students
LEFT JOIN enrollments ON students.student_id = enrollments.student_id
LEFT JOIN courses ON enrollments.course_id = courses.course_id;

OUTPUT:

28. Illustration of Right OUTER JOIN.


SYNTAX:
SELECT column1, column2
FROM table1
RIGHT OUTER JOIN table2 ON table1.column_name = table2.column_name;

QUERY:
SELECT students.name, courses.course_name
FROM students
RIGHT JOIN enrollments ON students.student_id = enrollments.student_id
RIGHT JOIN courses ON enrollments.course_id = courses.course_id;

OUTPUT:
29. Illustration of Full OUTER JOIN.
SYNTAX:
SELECT column1, column2
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

QUERY:
SELECT students.name, courses.course_name
FROM students
FULL OUTER JOIN enrollments ON students.student_id = enrollments.student_id
FULL OUTER JOIN courses ON enrollments.course_id = courses.course_id;

OUTPUT:
30. Illustration of Creating table with enforcement of integrity constraints primary key ,not null unique
,check, Referential integrity.
SYNTAX:
CREATE TABLE table_name (
column1 datatype CONSTRAINT constraint_name PRIMARY KEY,
column2 datatype NOT NULL,
column3 datatype UNIQUE,
column4 datatype CHECK (condition),
FOREIGN KEY (column_name) REFERENCES other_table(column_name)
);

QUERY:
CREATE TABLE students_with_constraints (
student_id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
email VARCHAR(50) UNIQUE,
grade NUMERIC(5,2) CHECK (grade >= 0 AND grade <= 100)
);

OUTPUT:

You might also like