RDBMS Unit 1
RDBMS Unit 1
Advanced SQL
Transaction control
Transaction Control Language(TCL) commands are used to manage transactions in
the database.
Before moving forward with TCL commands, check these topics out first:
DML commands
DDL Commands
Data Manipulation Language (DML) statements are used for managing data
in database. DML commands are not auto-committed. It means changes
made by DML command are not permanent to database, it can be rolled
back.
INSERT command
Insert command is used to insert data into a table. Following is its general
syntax,
Copy
Lets see an example,
Copy
The above command will insert a new record into student table.
1
s_id name age
101 Adam 15
We can use the INSERT command to insert values for only some specific
columns of a row. We can specify the column names along with the values
to be inserted like this,
Copy
The above SQL query will only insert id and name values in the newly
inserted record.
Both the statements below will insert NULL value into age column of
the student table.
Copy
Or,
Copy
The above command will insert only two column values and the other
column is set to null.
2
Insert Default value to a column
Copy
S_id S_Name age
101 Adam 15
102 Alex
103 chris 14
Suppose the column age in our tabel has a default value of 14.
Also, if you run the below query, it will insert default value into the age
column, whatever the default value may be.
Let's learn about the syntax and usage of the UPDATE command.
UPDATE command
Copy
WHEREis used to add a condition to any SQL query, we will soon
study about it in detail.
Lets take a sample table student,
3
student_id name age
101 Adam 15
102 Alex
103 chris 14
Copy
S_id S_Name age
101 Adam 15
102 Alex 18
103 chris 14
In the above statement, if we do not use the WHERE clause, then our update
query will update age for all the columns of the table to 18.
Copy
The above command will update two columns of the record which
has s_id 103.
4
When we have to update any integer value in a table, then we can fetch
and update the value in the table in a single statement.
For example, if we have to update the age column of student table every
year for every student, then we can simply run the
following UPDATE statement to perform the following operation:
Copy
As you can see, we have used age = age + 1 to increment the value of age by 1.
Let's study about the syntax and the usage of the Delete command.
DELETE command
Copy
Let's take a sample table student:
5
Delete all Records from a Table
Copy
The above command will delete all the records from the table student.
Copy
The above command will delete the record where s_id is 103 from the
table student.
For eg: If you have a table with 10 rows and an auto_increment primary
key, and if you use DELETE command to delete all the rows, it will delete all
the rows, but will not re-initialize the primary key, hence if you will insert
any row after using the DELETE command, the auto_increment primary key
6
will start from 11. But in case of TRUNCATE command, primary key is re-
initialized, and it will again start from 1.
DDL COMMAND
Creating a Database
Copy
Copy
The above command will create a database named Test, which will be an
empty schema without any table.
Creating a Table
7
command can also be used to create tables. Now when we create a
create
table, we have to specify the details of the columns of the tables too. We
can specify the names and datatypes of various columns in
the create command itself.
column_name1 datatype1,
column_name2 datatype2,
column_name3 datatype3,
column_name4 datatype4);
Copy
create table command will tell the database system to create a new table
student_id INT,
name VARCHAR(100),
age INT);
Copy
The above command will create a new table with name Student in the
current database with 3 columns, namely student_id, name and age. Where the
column student_id will only store integer, name will hold upto 100 characters
and age will again store only integer value.
8
If you are currently not logged into your database in which you want to
create the table then you can also add the database name along with table
name, using a dot operator .
For example, if we have a database with name Test and we want to create a
table Student in it, then we can do so using the following query:
student_id INT,
name VARCHAR(100),
age INT);
Copy
Here we have listed some of the most commonly used datatypes used for
columns in tables.
Datatype Use
INT used for columns which will store integer values.
FLOAT used for columns which will store float values.
DOUBLE used for columns which will store float values.
VARCHAR used for columns which will be used to store characters and
integers, basically a string.
CHAR used for columns which will store char values(single character).
DATE used for columns which will store date values.
TEXT used for columns which will store text which is generally long in
length. For example, if you create a table for storing profile
information of a social networking website, then for about
me section you can have a column of type TEXT.
9
SQL: ALTER command
alter command is used for altering the table structure, such as,
Using ALTER command we can add a column to any existing table. Following
is the syntax,
column_name datatype);
Copy
Here is an Example for this,
address VARCHAR(200));
Copy
The above command will add a new column address to the table student,
which will hold data of type varchar which is nothing but string, of length 200.
Using ALTER command we can even add multiple new columns to any
existing table. Following is the syntax,
10
ALTER TABLE table_name ADD(
column_name1 datatype1,
column-name2 datatype2,
column-name3 datatype3);
Copy
Here is an Example for this,
father_name VARCHAR(60),
mother_name VARCHAR(60),
dob DATE);
Copy
The above command will add three new columns to the student table
Copy
Here is an Example for this,
11
Copy
The above command will add a new column with a preset default value to
the table student.
column_name datatype);
Copy
Here is an Example for this,
address varchar(300));
Copy
Remember we added a new column address in the beginning? The above
command will modify the address column of the student table, to now hold
upto 300 characters.
Using ALTER command you can rename an existing column. Following is the
syntax,
old_column_name TO new_column_name;
Copy
12
Here is an example for this,
address TO location;
Copy
The above command will rename address column to location.
column_name);
Copy
Here is an example for this,
address);
Copy
The above command will drop the address column from the table student.
TRUNCATE command
TRUNCATE command removes all the records from a table. But this command
will not destroy the table's structure. When we use TRUNCATE command on a
13
table its (auto-increment) primary key is also initialized. Following is its
syntax,
Copy
Here is an example explaining it,
Copy
The above query will delete all the records from the table student.
In DML commands, we will study about the DELETE command which is also
more or less same as the TRUNCATE command. We will also learn about the
difference between the two in that tutorial.
DROP command
Copy
Here is an example explaining it,
Copy
The above query will delete the Student table completely. It can also be
used on Databases, to delete the complete database. For example, to drop
a database,
Copy
The above query will drop the database with name Test from the system.
14
RENAME query
RENAME command is used to set a new name for any existing table.
Following is the syntax,
Copy
Here is an example explaining it.
Copy
The above query will rename the table student to students_info.
These are used to manage the changes made to the data in a table by DML
statements. It also allows statements to be grouped together into logical
transactions.
COMMIT command
When we use any DML command like INSERT, UPDATE or DELETE, the changes
made by these commands are not permanent, until the current session is
closed, the changes made by these commands can be rolled back.
COMMIT;
15
Copy
ROLLBACK command
This command restores the database to last commited state. It is also used
with SAVEPOINT command to jump to a savepoint in an ongoing transaction.
If we have used the UPDATE command to make some changes into the
database, and realise that those changes were not required, then we can
use the ROLLBACK command to rollback those changes, if they were not
commited using the COMMIT command.
ROLLBACK TO savepoint_name;
Copy
SAVEPOINT command
SAVEPOINT savepoint_name;
Copy
In short, using this command we can name the different states of our data
in any table and then rollback to that state using the ROLLBACK command
whenever required.
16
Following is the table class,
id name
1 Abhi
2 Adam
4 Alex
Lets use some SQL queries on the above table and see the results.
COMMIT;
SAVEPOINT A;
SAVEPOINT B;
SAVEPOINT C;
Copy
NOTE: SELECT statement is used to show the data stored in the
table.
The resultant table will look like,
id name
1 Abhi
2 Adam
4 Alex
5 Abhijit
6 Chris
7 Bravo
17
Now let's use the ROLLBACK command to roll back the state of data to
the savepoint B.
ROLLBACK TO B;
Copy
Now our class table will look like,
id name
1 Abhi
2 Adam
4 Alex
5 Abhijit
6 Chris
Now let's again use the ROLLBACK command to roll back the state of data to
the savepoint A
ROLLBACK TO A;
Copy
Now the table will look like,
id name
1 Abhi
2 Adam
4 Alex
5 Abhijit
So now you know how the commands COMMIT, ROLLBACK and SAVEPOINT works.
18
The locking in a database can be done at 4 levels, which start with the
database at the highest level and down via table and page to the row at the
lowest level.
Database Level
Table Level
Page-Level
Row Level
Before we discuss the levels of locking, we should know about the types of
locks or lock mode. So, there are 5 locks types in the locking and these are
discussed below :
19
imposing shared lock separately.
Drawbacks of locking:
1. May not free from recoverability.
2. Not free from deadlock.
3. Not free from starvation.
4. Not free from cascading rollback.
20
Level of Hierarchy in Locking
1. Database Level :
At the database level, the full or complete database is locked. Now, If let’s
say there are two relations in a database. If say, R1 and R2, where R1 uses
tables, then R2 cannot use them. You will always find a shared lock on this
level that is used whenever a transaction is connected to a database. On this
level, we use shared locking to prevent dropping of the database or restoring
a database backup over the database in use. Let’s see an example. When we
use a SELECT statement to read some data, a shared lock will be applied on
the database level, an intent shared lock will be applied on the table and on
the page level, and a shared lock on the row itself.
21
This type of locking is very slow, so it is not used for the online version
of multi-user DBMS.
2. Table Level :
At the table level, the full table or relation is locked. Now, If let’s say there
are two relations in a database say, R1 and R2, where R1 uses tables, then
R2 cannot use it. But, two transactions can access the same database only if
they are accessing different relations. A transaction using a level of the table
will hold shared and/or exclusive table locks. At the table level, there are 5
different types of locks. i.e, Exclusive (X), Shared (S), Intent exclusive (IX),
Intent shared (IS), and Shared with intent exclusive (SIX) and these locks
have already been discussed above.
column value by 1 each time a new record is inserted into the table.
Creating a Sequence
INCREMENT BY increment-value
MAXVALUE maximum-value
CYCLE | NOCYCLE;
Copy
23
The initial-value specifies the starting value for the Sequence.
The keyword CYCLE specifies that if the maximum value exceeds the set
limit, sequence will restart its cycle from the begining.
INCREMENT BY 1
MAXVALUE 999CYCLE;
Copy
ID NAME
1 abhi
2 adam
4 alex
The SQL query will be,
24
Copy
Resultset table will look like,
ID NAME
1 abhi
2 adam
4 alex
1 anu
Once you use nextval the sequence will increment even if you don't Insert any
record into the table.
A view contains rows and columns, just like a real table. The fields in a view are fields
from one or more real tables in the database.
You can add SQL statements and functions to a view and present the data as if the data
were coming from one single table.
SQL VIEW
A VIEW in SQL is a logical subset of data from one or more tables. View is
used to restrict data access.
AS
SELECT column_name(s)
FROM table_name
WHERE condition
25
Copy
As you may have understood by seeing the above SQL query, a view is
created using data fetched from some other table(s). It's more like a
temporary table created with data.
Creating a VIEW
CREATE or REPLACE VIEW sale_view AS SELECT * FROM Sale WHERE customer = 'Alex';
Copy
The data fetched from SELECT statement will be stored in another object
called sale_view. We can use CREATE and REPLACE seperately too, but using
both together works better, as if any view with the specified name exists,
this query will replace it with fresh data.
Displaying a VIEW
The syntax for displaying the data in a view is similar to fetching data from
a table using a SELECT statement.
Copy
26
Force VIEW Creation
FORCE keyword is used while creating a view, forcefully. This keyword is used
to create a View even if the table does not exist. After creating a force View
if we create the base table and enter values in it, the view will be
automatically updated.
SELECT column_name(s)
FROM table_name
WHERE condition;
Copy
Update a VIEW
Copy
NOTE: If we update a view it also updates base table data automatically.
Read-Only VIEW
We can create a view with read-only option to restrict access to the view.
27
Syntax to create a view with Read-Only Access
SELECT column_name(s)
FROM table_name
Copy
The above syntax will create view for read-only purpose, we cannot
Update or Insert data into read-only view. It will throw an error.
Types of View
Simple View
Complex View
28