DBMS FILE (1) (2) Abhishek Tyagi Dbms
DBMS FILE (1) (2) Abhishek Tyagi Dbms
PRACTICAL FILE
SESSION (2024-2025)
Program
No. Program Name Date Signature
Normalization of a Table.
4
Creating the Procedure & Function.
5
Creating the Trigger & Package.
6
Creating the View and explain.
7
T Creating Database and Describe the Join Operation in
8 SQL.
Once the installer is downloaded, double-click the executable file to launch the installation
process.
If prompted by the Windows User Account Control (UAC), click Yes to allow the installer to
make changes.
In the SQL Server Installation Center, click on New SQL Server stand-alone installation or
add feature to an existing installation.
Review the license terms and select I accept the license terms.
Click Next to continue.
In the Feature Selection screen, select the components you want to install (e.g., SQL Server
Database Engine, SQL Server Replication, Full-Text and Semantic Extractions, etc.).
For a typical installation, you can select the Database Engine Services feature. Click Next.
In the Instance Configuration screen, you can choose the default instance or a named
instance.
o Default instance name: MSSQLSERVER
o Named instance: You can give it a custom name.
Click Next to proceed.
7. Server Configuration
Set the SQL Server Agent to Automatic or Manual based on your requirements.
Configure the authentication mode:
o Windows Authentication: Uses your Windows account for access.
o Mixed Mode: Allows both Windows Authentication and SQL Server Authentication.
You will need to set a password for the SA(System Administrator) account.
Add the SQL Server administrators by clicking Add Current User (or manually adding users).
Click Next to Proceed.
You can specify where SQL Server will be installed (by default, it will install to C:\Program
Files\Microsoft SQL Server\).
Click Next.
You can specify the directories for SQL Server data, logs, and backup files. You can leave
them as default or change them if needed.
Click Next.
11. Install
Review all the settings and click Install to begin the installation.
The installer will start installing SQL Server and related components.
Once the installation process is complete, the Install Success page will appear.
Click Next, and then Close to exit the installer.
If you selected the Database Engine Services, you will likely want to install SQL Server
Management Studio (SSMS) to manage your SQL Server.
Download SSMS from the official Microsoft SSMS download page.
Run the installer, and follow the prompts to complete the installation.
Once connected to SQL Server in SSMS, run the following query to verify the installation:
SELECT @@VERSION;
This will return the version of SQL Server, confirming that it was installed successfully.
PRACTICAL No: - 02
Explanation:
CUSTOMER_ID: A numeric field for the unique ID of the customer. It is marked as NOT NULL
and should be the primary key for the table (though this is not explicitly stated in the code).
CUST_FIRST_NAME and CUST_LAST_NAME: These are required fields (NOT NULL), each
having a maximum length of 20 characters.
CUST_STREET_ADDRESS1 and CUST_STREET_ADDRESS2: These store the customer's
address lines with a maximum length of 60 characters each.
CUST_CITY: The customer's city, with a maximum length of 30 characters.
CUST_STATE: A 2-character field to store the state code.
CUST_POSTAL_CODE: A postal code with a maximum length of 10 characters.
PHONE_NUMBER1 and PHONE_NUMBER2: Fields for phone numbers with a maximum length
of 25 characters.
CREDIT_LIMIT: A numeric field for the customer's credit limit, which allows up to 9 digits
with 2 decimal places.
CUST_EMAIL: The customer's email address, with a maximum length of 30 characters.
To create an ORDER table where CUSTOMER_ID is a foreign key (referring to the CUSTOMER109
table) and ORDER_ID is the primary key,
(
ORDER_ID INT NOT NULL ,
SHIP_DATE DATE,
Explanation:
ORDER_ID: This is the primary key for the order. It is a numeric value and must be unique for
each order.
CUSTOMER_ID: This is the foreign key that references the CUSTOMER_ID in the
CUSTOMER109 table, establishing the relationship between customers and their orders.
ORDER_DATE: The date when the order was placed. It is a required field.
SHIP_DATE: The date when the order was shipped (optional).
SHIP_ADDRESS: The address where the order is shipped. You can adjust the size (currently
100 characters) based on your needs.
ORDER_TOTAL: The total amount of the order, defined with two decimal places (e.g.,
NUMBER (10,2) allows values up to 99999999.99).
Constraints:
PK_ORDER_ID: This constraint enforces that ORDER_ID is the primary key and unique.
FK_CUSTOMER_ID: This constraint ensures that CUSTOMER_ID is a valid reference to the
CUSTOMER_ID field in the CUSTOMER109 table.
To create a SHIPMENT table that is related to the ORDER109 table, you would typically include fields
that describe the shipment, such as the shipment ID, the ORDER_ID (which will be a foreign key),
shipment status, tracking number, and shipment date, among others.
Explanation:
SHIPMENT_ID: This is the primary key for the shipment, uniquely identifying each shipment.
ORDER_ID: This is a foreign key that links to the ORDER109 table's ORDER_ID field. It
ensures that each shipment is associated with an order.
SHIP_DATE: The date the shipment is sent. This field is mandatory.
DELIVERY_DATE: The date when the shipment is delivered (optional).
SHIP_METHOD: The shipping method (e.g., "Standard", "Express", etc.).
TRACKING_NUMBER: A field to store the tracking number for the shipment, which is
optional but commonly used.
SHIP_STATUS: A field that tracks the shipment's current status (e.g., "Shipped", "In Transit",
"Delivered").
SHIP_ADDRESS: The address where the shipment is being sent, which may differ from the
billing address.
Constraints:
PK_SHIPMENT_ID: This constraint enforces that SHIPMENT_ID is unique and serves as the
primary key.
FK_ORDER_ID: This constraint establishes the foreign key relationship, ensuring that each
shipment is linked to an existing order from the ORDER109 table.
SQL QUERIES:
1. List the Empname,doj from Employee1 table.
SELECT emp_name,doj FROM Employee1;
2. List the names of Employee whois getting 5000Rs.
SELECT emp_name FROM Employee1 WHERE salary=5000;
3. List the name of emp who belong to MEERUT and depart name is SOFTWARE.
SELECT emp_name FROM Employee1 WHERE address='MEERUT'AND dept_name='SOFTWARE';
5. List the name of the emp who are getting their salary between 400 and 4000.
SELECT emp_name FROM Employee1 WHERE salary BETWEEN 400 AND 4000;
6. List the employees who are earning more than 1200 but less than 4000.
7. List the employees who have joined after 14-JULY-1983 in the order of the
joining date.
Initially, we have a simple table that contains all the data about students, their
courses, and grades. The data might look like this:
This table violates the First Normal Form (1NF), which requires that each
field contain only atomic
values (no repeating groups or arrays). Here, the courses and grades for
each student are stored in separate columns, which violate 1NF.
To bring this table into 1NF, we need to remove the repeating groups (i.e.,
multiple courses and grades). Each row should contain only atomic values,
so we'll separate each course and grade into a new row:
Now, each field contains only atomic values, and the table is in 1NF.
Student_ID Student_Name Course Grade
001 Abhishek Math A
001 Abhishek Science B
002 Ajay Math C
002 Ajay History B
Step 2: Second Normal Form (2NF)
To bring the table into 2NF, we need to eliminate partial dependencies. A partial dependency
occurs when a non-key column depends only on part of the primary key, rather than the
whole key.
In this case, Student_Name depends only on Student_ID, not on Course or Grade. The
primary key is composite (both Student_ID and Course), and Student_Name depends only on
Student_ID, so we need to split the table into two:
Student_ID Student_Name
001 Abhishek
002 Ajay
Now, the database is in 2NF because all non-key attributes depend on the whole primary key
(Student_ID and Course), and there are no partial dependencies.
To bring the database into 3NF, we need to remove transitive dependencies. A transitive
dependency occurs when a non-key column depends on another non-key column.
In the Enrollments table, there is no transitive dependency between Course and Grade, but if
we added a Instructor column, we might see a transitive dependency: the Instructor depends
on Course, and the Course is dependent on the primary key (Student_ID, Course).
Student_ID Student_Name
001 Abhishek
Student_ID Student_Name
002 Ajay
Course Instructor
Math Dr. Amar
Science Dr. Wang
History Dr. Butler
Now, the Enrollments table no longer contains any redundant information about instructors,
and all attributes are non-transitively dependent on the primary key, so the database is in
3NF.
This process reduces redundancy and ensures that the data is organized efficiently. When
designing a database for a real-world application, these normalization steps are critical for
maintaining data integrity and avoiding anomalies when updating or deleting records.
PRACTICAL No: - 05
CREATE PROCEDURE: This creates a new procedure. You can use OR REPLACE if you
want to replace an existing procedure with a new definition.
Parameter List (Optional): You can specify parameters that the procedure can accept,
which can be IN, OUT, or IN OUT.
IS / AS: This indicates the start of the procedure’s declaration part, where you can define
variables, constants, or exceptions.
BEGIN / END: These marks the body of the procedure where the actual processing logic
occurs.
Here is an example of a procedure that contain id and name and prints the result:
Result is a local variable used to store the id and name.
DBMS_OUTPUT.PUT_LINE is used to print the result.
Executing a Procedure:
To execute a procedure in PL/SQL, you simply call it using an anonymous block, or you can
use SQL*Plus or any PL/SQL interface to invoke the procedure.
EXEC ID,NAME(1,Rahul);
1 Rahul
Dropping a Procedure:
PRACTICAL No: - 06
In SQL, a trigger is a special kind of stored procedure that automatically executes or "fires"
when certain events occur in the database, such as after an insert, update, or delete operation
on a table. Triggers are used for enforcing business rules, auditing, validation, and automatic
data modifications. They are particularly useful for maintaining data integrity and
consistency.
Let’s walk through a practical example of a trigger that tracks changes to an employee's
salary in a company. We’ll use a simple scenario with the following requirements:
. Table Structure:
o employees: Contains employee information.
o salary_audit: A table that logs changes to employees' salaries.
o
Step 1: Create the Tables
BEFORE UPDATE OF salary: This specifies that the trigger will fire before an update
is made to the salary column of the employees table.
FOR EACH ROW: This means the trigger will fire for each row that is updated, not
just once for the entire operation.
OLD.salary: Refers to the old value of the salary before the update.
NEW.salary: Refers to the new value of the salary after the update.
salary_audit_seq.NEXTVAL: We assume you have a sequence salary_audit_seq
that generates unique audit_id values for each record in the salary_audit table.
In SQL, a view is a virtual table that is derived from the result of a query. It can represent a
complex query that combines data from one or more tables, or it can simplify repetitive
queries by abstracting them into a single object that can be referenced like a regular table.
Views are used for several purposes, including simplifying complex queries, improving
security by restricting access to certain data, and providing a layer of abstraction.
Scenario:
You are working with an online store database, and you need to generate reports on customer
orders, but you often need to join the customers, orders, and order_items tables. Instead of
writing the same complex query multiple times, you decide to create a view to simplify this.
SELECT statement: The view combines data from the customers, orders, and ORDER_ITEM
tables. It also calculates the total for each item (ITEM_TOTAL= QTY* UNIT_PRICE).
JOIN operations: We join the three tables (CUSTOMER, ORDER1, ORDER_ITEM) based on
their relationships (i.e., CUST_ID and ORDER_ID).
In SQL, a join operation is used to combine rows from two or more tables based on a related
column
between them. There are different types of joins, such as INNER JOIN, LEFT JOIN, RIGHT JOIN, and
FULL JOIN.
1.Departments table:
department_id department_name
101 HR
102 IT
103 Marketing
2.Employees table:
employee_id employee_name department_id
1 MAYANK 101
2 MAAZ 102
3 AVNEESH 101
4 KHUSH 103
Result:
Example 2: LEFT JOIN
This operation returns all rows from the left table (Employees), and the matched rows from the right
table (Departments). If there is no match, NULL values are returned for columns from the right
table
Result:
(Note: In this example, all employees have matching departments, so the result is similar to the
INNER JOIN. However, if there were employees without a department, the department_name would
show as NULL.)
Example 3: RIGHT JOIN
This operation returns all rows from the right table (Departments), and the matched rows from the
left table (Employees). If there is no match, NULL values are returned for columns from the left table.
Result:
(Note: If there were departments without any employees, the employee_id and employee_name
would show as NULL.)
PRACTICAL No: - 09
Objective: Creating & implement cursor in SQL.
A cursor in SQL is a database object used to retrieve, manipulate, and navigate through a result set
row by row. Cursors are particularly useful when you need to process each row individually, such as
when performing operations that are difficult or impossible to express in a single SQL query.
Here is a practical example that demonstrates how to create and use a cursor in SQL.
Scenario
we have the following table of Employees:
The goal is to use a cursor to update each employee's salary by increasing it by 10% individually.
1. Declare the cursor – This defines the SQL query that retrieves the rows.
2. Open the cursor – This makes the cursor operational.
3. Fetch the data – This retrieves the rows one by one from the cursor.
4. Process the data – Perform operations like UPDATE or INSERT on each row.
5. Close the cursor – After processing, release the cursor.
SQL Code Example:
Explanation:
Key Notes:
Cursor operations can be resource-intensive, especially for large result sets. It's best to use
cursors only when necessary (e.g., when complex logic requires row-by-row processing).
Alternative approaches: In many cases, set-based operations (such as UPDATE, INSERT, or
SELECT with a JOIN) can be more efficient than using cursors. Cursors should be considered a
last resort when set-based solutions are not feasible.
Performance Considerations:
Cursors can cause performance issues, especially on large result sets, because they process
rows one at a time. When possible, always try to use set-based operations (such as an
UPDATE statement that processes all rows at once) instead of row-by-row cursors.
PRACTICAL No: - 10
Objective:- To implement the basics of PL/SQL.
Introduction – PL/SQL bridges the gap between database technology and procedural programming
languages. It can be thought of as a development tool that extends the facilities of Oracles SQL
database language. Via PL/SQL you can insert, delete, update and retrieve table data as well as use
procedural techniQuestions such as writing loops or branching to another block of code.
DECLARE
Declarations of memory variables used later BEGIN
SQL executable statements for manipulating table data. EXCEPTIONS
SQL and/or PL.SQL code to handle errors. END;
Displaying user Messages on the screen – Any programming tool requires a method through which
messages can be displayed to the user.
dbms_output is a package that includes a number of procedure and functions that accumulate
information in a buffer so that it can be retrieved later. These functions can also be used to display
message to the user.
put_line: put a piece of information in the buffer followed by a end of line marker. It can also be
used to display message to the user.
Setting the server output on:
Example: Write the following code in the PL/SQL block to display message to user
DBMS_OUTPUT.PUT_LINE(‘Display user message’)
The GOTO statement: The goto statement allows you to change the flow of control within a PL/SQL
Block.
PRACTICAL No: - 11
In SQL Server, automatic backups and recovery processes are crucial for maintaining database
integrity and ensuring that data can be restored in case of failure. Below are the steps for setting up
automatic backups and recovery.
SQL Server Agent is a tool that can be used to automate jobs such as backups. Here's how to set up
an automated backup plan:
Conclusion
By following these steps, you can set up automatic backups in SQL Server and also recover your
database when needed. It's important to implement a proper backup strategy (including full,
differential, and transaction log backups) to ensure data integrity and quick recovery in case of
failure.