0% found this document useful (0 votes)
9 views

DBMS_LAB

DBMS_LAB Amrit Campus

Uploaded by

tikapoudel798
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

DBMS_LAB

DBMS_LAB Amrit Campus

Uploaded by

tikapoudel798
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

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