DBMS
DBMS
A DBMS is a software that allows creation, definition and manipulation of database, allowing users to store,
process and analyse data easily. DBMS provides us with an interface or a tool, to perform various operations
like creating database, storing data in it, updating data, creating tables in the database and a lot more.
DBMS also provides protection and security to the databases. It also maintains data consistency in case of
multiple users.
MySql
Oracle
SQL Server
IBM DB2
PostgreSQL
Amazon SimpleDB (cloud based) etc.
Characteristics of Database Management System
A database management system has following characteristics:
1. Data stored into Tables: Data is never directly stored into the database. Data is stored into tables,
created inside the database. DBMS also allows to have relationships between tables which makes the
data more meaningful and connected. You can easily understand what type of data is stored where by
looking at all the tables created in a database.
2. Reduced Redundancy: In the modern world hard drives are very cheap, but earlier when hard drives
were too expensive, unnecessary repetition of data in database was a big problem. But DBMS
follows Normalisation which divides the data in such a way that repetition is minimum.
3. Data Consistency: On Live data, i.e. data that is being continuosly updated and added, maintaining the
consistency of data can become a challenge. But DBMS handles it all by itself.
4. Support Multiple user and Concurrent Access: DBMS allows multiple users to work on it(update,
insert, delete data) at the same time and still manages to maintain the data consistency.
5. Query Language: DBMS provides users with a simple Query language, using which data can be easily
fetched, inserted, deleted and updated in a database.
6. Security: The DBMS also takes care of the security of data, protecting the data from un-authorised
access. In a typical DBMS, we can create user accounts with different access permissions, using which
we can easily secure our data by restricting user access.
7. DBMS supports transactions, which allows us to better handle and manage data integrity in real world
applications where multi-threading is extensively used.
Advantages of DBMS
Disadvantages of DBMS
It's Complexity
Except MySQL, which is open source, licensed DBMSs are generally costly.
They are large in size.
Components of DBMS
The database management system can be divided into five major components, they are:
1. Hardware
2. Software
3. Data
4. Procedures
5. Database Access Language
Let's have a simple diagram to see how they all fit together to form a database management system.
DBMS Components: Hardware
When we say Hardware, we mean computer, hard disks, I/O channels for data, and any other physical
component involved before any data is successfully stored into the memory.
When we run Oracle or MySQL on our personal computer, then our computer's Hard Disk, our Keyboard using
which we type in all the commands, our computer's RAM, ROM all become a part of the DBMS hardware.
This is the main component, as this is the program which controls everything. The DBMS software is more like
a wrapper around the physical database, which provides us with an easy-to-use interface to store, access and
update data.
The DBMS software is capable of understanding the Database Access Language and intrepret it into actual
database commands to execute them on the DB.
Data is that resource, for which DBMS was designed. The motive behind the creation of DBMS was to store
and utilise data.
In a typical Database, the user saved Data is present and meta data is stored.
Metadata is data about the data. This is information stored by the DBMS to better understand the data stored in
it.
For example: When I store my Name in a database, the DBMS will store when the name was stored in the
database, what is the size of the name, is it stored as related data to some other data, or is it independent, all this
information is metadata.
Procedures refer to general instructions to use a database management system. This includes procedures to setup
and install a DBMS, To login and logout of DBMS software, to manage databases, to take backups, generating
reports etc.
Database Access Language is a simple language designed to write commands to access, insert, update and
delete data stored in any database.
A user can write commands in the Database Access Language and submit it to the DBMS for execution, which
is then translated and executed by the DBMS.
User can create new databases, tables, insert data, fetch stored data, update data and delete the data using the
access language.
Users
Database Administrators: Database Administrator or DBA is the one who manages the complete
database management system. DBA takes care of the security of the DBMS, it's availability, managing
the license keys, managing user accounts and access etc.
Application Programmer or Software Developer: This user group is involved in developing and
desiging the parts of DBMS.
End User: These days all the modern applications, web or mobile, store user data. How do you think
they do it? Yes, applications are programmed in such a way that they collect user data and store the data
on DBMS systems running on their server. End users are the one who store, retrieve, update and delete
data.
The database model sets the rule, relationships, constraints, etc. to define how data is stored in the
database.
It's like creating a blueprint of your Database.
There are different types of Database models and each one has its own set of features.
You can define how you want to structure the application data using a database model.
In this tutorial you will learn about the 7 database model that are popularly used.
Type of Database models
There are several different Database model types, some of them are old, while some of them are new, to cater to
the new age requirements. Here is a list of the 7 popular Database models:
1. Hierarchical Model
2. Network Model
3. Entity-relationship Model
4. Relational Model
5. Object-oriented Model
1. Hierarchical Model
The hierarchical database model organizes data into a tree-like structure,, with a single root, to which
all the other data is linked.
The hierarchy starts from the Root data, and expands like a tree, adding child nodes to
the parent nodes.
In this model, a child node will only have a single parent node.
This model efficiently describes many real
real-world relationships like the index of a book,
book etc.
IBM's Information Management System (IMS) is based on this model.
Data is organized into a tree-like
like structure with a one-to-many relationship between two different types
of data, for example, one department can have many courses, many teachers,, and of course
many students(like
(like shown in the diagram below).
2. Network Model
3. Entity-relationship Model
In this database model, relationships are created by dividing objects of interest into entities and their
characteristics into attributes.
Different entities are related using relationships.
ER Models are defined to represent the relationships in pictorial form to make it easier for different
stakeholders to understand.
This model is good to design a database, which can then be turned into tables in a relational model
(explained below).
Let's take an example,, If we have to design a School Database, then the Student will be
an entity with attributes name, ageage, address, etc. As an Address is generally complex, it can be
another entity with attributes street
street, pincode, city, etc, and there will be a relationship between them.
Relationships can also be of different types. You can learn about ER Diagrams in detail if you want to
learn about entities and relationships.
Advantages of the ER Model
1. It is easy
sy to understand and design.
2. Using the ER model we can represent data structures easily.
3. As the ER model cannot be directly implemented into a database model, it is just a step toward
designing the relational database model.
4. Relational Model
3. It supports SQL using which you can easily query the data.
RDBMS is used to manage Relational database. Relational database is a collection of organized set of tables
related to each other, and from which data can be accessed easily. Relational Database is the most commonly
used database these days.
RDBMS: What is Table ?
In Relational database model, a table is a collection of data elements organised in terms of rows and columns.
A table is also considered as a convenient representation of relations. But a table can have duplicate row of data
while a true relation cannot have duplicate data. Table is the most simplest form of data storage. Below is an
example of an Employee table.
1 Adam 34 13000
2 Alex 28 15000
3 Stuart 20 18000
4 Ross 42 19020
A single entry in a table is called a Tuple or Record or Row. A tuple in a table represents a set of related data.
For example, the above Employee table has 4 tuples/records/rows.
1 Adam 34 13000
A table consists of several records(row), each record can be broken down into several smaller parts of data
known as Attributes. The above Employee table consist of four attributes, ID, Name, Age and Salary.
When an attribute is defined in a relation(table), it is defined to hold only a certain type of values, which is
known as Attribute Domain.
Hence, the attribute Name will hold the name of employee for every tuple. If we save employee's address there,
it will be violation of the Relational database model.
Name
Adam
Alex
Ross
A relation schema describes the structure of the relation, with the name of the relation(name of table), its
attributes and their names and type.
A relation key is an attribute which can uniquely identify a particular tuple(row) in a relation(table).
Every relation in a relational database model should abide by or follow a few constraints to be a valid relation,
these constraints are called as Relational Integrity Constraints.
1. Key Constraints
2. Domain Constraints
The Key attribute should never be NULL or same for two different row of data.
For example, in the Employee table we can use the attribute ID to fetch data for each of the employee. No value
of ID is null and it is unique for every row, hence it can be our Key attribute.
Domain Constraint
Domain constraints refers to the rules defined for the values that can be stored for a certain attribute.
Like we explained above, we cannot store Address of employee in the column for Name.
If a table reference to some data from another table, then that table and that data should be present for
referential integrity constraint to hold true.
A Key can be a single attribute or a group of attributes, where the combination may act as a key.
In real world applications, number of tables required for storing the data is huge, and the different tables are
related to each other as well.
Also, tables store a lot of data in them. Tables generally extends to thousands of records stored in them,
unsorted and unorganised.
Now to fetch any particular record from such dataset, you will have to apply some conditions, but what if there
is duplicate data present and every time you try to fetch some data by applying certain condition, you get the
wrong data. How many trials before you get the right data?
To avoid all this, Keys are defined to easily identify any row of data in a table.
Let's try to understand about all the keys using a simple example.
student_id name phone age
1 Akon 9876723452 17
2 Akon 9991165674 19
3 Bkon 7898756543 18
4 Ckon 8987867898 19
5 Dkon 9990080080 17
Super Key
Super Key is defined as a set of attributes within a table that can uniquely identify each record within a table.
Super Key is a superset of Candidate key.
In the table defined above super key would include student_id, (student_id, name), phone etc.
Confused? The first one is pretty simple as student_id is unique for every row of data, hence it can be used to
identity each row uniquely.
Next comes, (student_id, name), now name of two students can be same, but their student_id can't be same
hence this combination can also be a key.
Similarly, phone number for every student will be unique, hence again, phone can also be a key.
Candidate Key
Candidate keys are defined as the minimal set of fields which can uniquely identify each record in a table. It is
an attribute or a set of attributes that can act as a Primary Key for a table to uniquely identify each record in that
table. There can be more than one candidate key.
In our example, student_id and phone both are candidate keys for table Student.
A candiate key can never be NULL or empty. And its value should be unique.
Primary Key
Primary key is a candidate key that is most appropriate to become the main key for any table. It is a key that can
uniquely identify each record in a table.
For the table Student we can make the student_id column as the primary key.
Composite Key
Key that consists of two or more attributes that uniquely identify any record in a table is called Composite key.
But the attributes which together form the Composite key are not a key independentely or individually.
In the above picture we have a Score table which stores the marks scored by a student in a particular subject.
In this table student_id and subject_id together will form the primary key, hence it is a composite key.
The candidate key which are not selected as primary key are known as secondary keys or alternative keys.
Non-key Attributes
Non-key attributes are the attributes or fields of a table, other than candidate key attributes/fields in a table.
Non-prime Attributes
Introduction to SQL
Structure Query Language(SQL) is a database query language used for storing and managing data in Relational
DBMS. SQL was the first commercial language introduced for E.F Codd's Relational model of database.
Today almost all RDBMS(MySql, Oracle, Infomix, Sybase, MS Access) use SQL as the standard database
query language. SQL is used to perform all types of data operations in RDBMS.
SQL Command
All DDL commands are auto-committed. That means it saves all the changes permanently in the database.
DML commands are used for manipulating the data stored in the table and not the table itself.
DML commands are not auto-committed. It means changes are not permanent to database, they can be rolled
back.
Command Description
These commands are to keep a check on other commands and their affect on the database. These commands can
annul changes made by other commands by rolling the data back to its original state. It can also make any
temporary change permanent.
Command Description
Data control language are the commands to grant and take back authority from any database user.
Command Description
Data query language is used to fetch data from tables based on conditions that we can easily apply.
Command Description
Creating a Database
The above command will create a database named Test, which will be an empty schema without any table.
To create tables in this newly created database, we can again use the create command.
Creating a Table
create command can also be used to create tables. Now when we create a 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.
);
create table command will tell the database system to create a new table with the given table name and column
information.
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:
Here we have listed some of the most commonly used datatypes used for columns in tables.
Datatype Use
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).
Using ALTER command we can add a column to any existing table. Following is the syntax,
column_name datatype);
Copy
address VARCHAR(200)
);
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,
The above command will add three new columns to the student table
ALTER command can add a new column to an existing table with a default value too. The default value is used
when no value is inserted in the column. Following is the syntax,
);
);
The above command will add a new column with a preset default value to the table student.
ALTER command can also be used to modify data type of any existing column. Following is the syntax,
column_name datatype
);
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
address TO location;
ALTER command can also be used to drop or remove columns. Following is the syntax,
column_name);
address);
The above command will drop the address column from the table student.
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 table its (auto-increment) primary key is also initialized.
Following is its syntax,
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
DROP command completely removes a table from the database. This command will also destroy the table
structure and the data stored in it. Following is its syntax,
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,
The above query will drop the database with name Test from the system.
RENAME query
RENAME command is used to set a new name for any existing table. Following is the syntax,
RENAME TABLE old_table_name to new_table_name
Talking about the Insert command, whenever we post a Tweet on Twitter, the text is stored in some table, and
as we post a new tweet, a new record gets inserted in that table.
INSERT command
Insert command is used to insert data into a table. Following is its general syntax,
Copy
The above command will insert a new record into student table.
101 Adam 15
Insert value into only specific columns
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,
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.
101 Adam 15
102 Alex
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
UPDATE command is used to update any record of data in a table. Following is its general syntax,
Copy
WHERE is used to add a condition to any SQL query, we will soon study about it in detail.
101 Adam 15
102 Alex
103 chris 14
Copy
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.
We can also update values of multiple columns using a single UPDATE statement.
101 Adam 15
102 Alex 18
103 Abhi 17
Copy
The above command will update two columns of the record which has s_id 103.
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
101 Adam 15
102 Alex 18
103 Abhi 17
The above command will delete all the records from the table student.
In our student table if we want to delete a single record, we can use the WHERE clause to provide a condition
in our DELETE statement.
Copy
The above command will delete the record where s_id is 103 from the table student.
101 Adam 15
102 Alex 18
Isn't DELETE same as TRUNCATE
TRUNCATE command is different from DELETE command. The delete command will delete all the rows from
a table whereas truncate command not only deletes all the records stored in the table, but it also re-initializes the
table(like a newly created table).
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 will
start from 11. But in case of TRUNCATE command, primary key is re-initialized, and it will again start from 1.
Before moving forward with TCL commands, check these topics out first
DML commands
DDL COMMAND
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
COMMIT command is used to permanently save any transaction into the database.
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.
To avoid that, we use the COMMIT command to mark the changes as permanent.
COMMIT;
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.
SAVEPOINT command
SAVEPOINT command is used to temporarily save a transaction so that you can rollback to that point
whenever required.
SAVEPOINT savepoint_name;
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.
When we specify a condition using the WHERE clause then the query executes only for those records for which
the condition specified by the WHERE clause is true.
Here is how you can use the WHERE clause with a DELETE statement, or any other statement,
The WHERE clause is used at the end of any SQL query, to specify a condition for execution.
Now we will use the SELECT statement to display data of the table, based on a condition, which we will add to
our SELECT query using WHERE clause.
Let's write a simple SQL query to display the record for student with s_id as 101.
SELECT s_id,
name,
age,
address
FROM student WHERE s_id = 101;
SELECT s_id,
name,
age,
address
FROM student WHERE name = 'Adam';
Following will be the result of the above query.
s_id name age address