Structured Query Language
Structured Query Language
SQL is an ANSI (American National Standards Institute) standard but there are many
different versions of the SQL language.
What is SQL?
SQL is structured Query Language which is a computer language for storing, manipulating
and retrieving data stored in relational database.
SQL is the standard language for Relation Database System. All relational database
management systems like MySQL, MS Access, Oracle, Sybase, Informix, postgres and SQL
Server uses SQL as standard database language.
Why SQL?
History:
• 1970 -- Dr. E.F. "Ted" of IBM is known as the father of relational databases. He
described a relational model for databases.
• 1974 -- Structured Query Language appeared.
• 1978 -- IBM worked to develop Codd's ideas and released a product named
System/R.
• 1986 -- IBM developed the first prototype of relational database and
standardized by ANSI. The first relational database was released by Relational
Software and its later becoming Oracle.
SQL Process:
When you are executing an SQL command for any RDBMS, the system determines the best
way to carry out your request and SQL engine figures out how to interpret the task.
There are various components included in the process. These components are Query
Dispatcher, Optimization engines, Classic Query Engine and SQL query engine etc. Classic
query engine handles all non-SQL queries but SQL query engine won't handle logical files.
SQL Commands:
The standard SQL commands to interact with relational databases are CREATE, SELECT,
INSERT, UPDATE, DELETE, and DROP. These commands can be classified into groups based
on their nature:
DDL - Data Definition Language:
Command Description
Command Description
Command Description
Command Description
RDBMS stands for Relational Database Management System. RDBMS is the basis for SQL,
and for all modern database systems like MS SQL Server, IBM DB2, Oracle, MySQL, and
Microsoft Access.
A Relational database management system (RDBMS) is a database management system
(DBMS) that is based on the relational model as introduced by E. F. Codd.
What is table ?
The data in RDBMS is stored in database objects called tables. The table is a collection of
related data entries and it consists of columns and rows.
Remember, a table is the most common and simplest form of data storage in a relational
database. Following is the example of a CUSTOMERS table:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
What is field?
Every table is broken up into smaller entities called fields. The fields in the CUSTOMERS
table consist of ID, NAME, AGE, ADDRESS and SALARY.
A field is a column in a table that is designed to maintain specific information about every
record in the table.
A record, also called a row of data, is each individual entry that exists in a table. For
example there are 7 records in the above CUSTOMERS table. Following is a single row of
data or record in the CUSTOMERS table:
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
What is column?
A column is a vertical entity in a table that contains all information associated with a
specific field in a table.
For example, a column in the CUSTOMERS table is ADDRESS which represents location
description and would consist of the following:
+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+
A NULL value in a table is a value in a field that appears to be blank which means A field
with a NULL value is a field with no value.
It is very important to understand that a NULL value is different than a zero value or a
field that contains spaces. A field with a NULL value is one that has been left blank during
record creation.
SQL Constraints:
Constraints are the rules enforced on data columns on table. These are used to limit the
type of data that can go into a table. This ensures the accuracy and reliability of the data in
the database.
Contraints could be column level or table level. Column level constraints are applied only to
one column where as table level constraints are applied to the whole table.
• NOT NULL Constraint: Ensures that a column cannot have NULL value.
• DEFAULT Constraint : Provides a default value for a column when none is specified.
• UNIQUE Constraint: Ensures that all values in a column are different.
• PRIMARY Key: Uniquely identified each rows/records in a database table.
• FOREIGN Key: Uniquely identified a rows/records in any another database table.
• CHECK Constraint: The CHECK constraint ensures that all values in a column satisfy
certain conditions.
• INDEX: Use to create and retrieve data from the database very quickly.
Data Integrity:
The following categories of the data integrity exist with each RDBMS:
>>Database Normalization
1. Eliminating redundant data, for example, storing the same data in more than one
tables.
2. Ensuring data dependencies make sense.
Both of these are worthy goals as they reduce the amount of space a database consumes
and ensure that data is logically stored. Normalization consists of a series of guidelines that
help guide you in creating a good database structure.
Normalization guidelines are divided into normal forms; think of form as the format or the
way a database structure is laid out. The aim of normal forms is to organize the database
structure so that it complies with the rules of first normal form, then second normal form,
and finally third normal form.
It's your choice to take it further and go to fourth normal form, fifth normal form, and so
on, but generally speaking, third normal form is enough.
First normal form (1NF) sets the very basic rules for an organized database:
• Define the data items required, because they become the columns in a table. Place
related data items in a table.
• Ensure that there are no repeating groups of data.
• Ensure that there is a primary key.
You must define the data items. This means looking at the data to be stored, organizing the
data into columns, defining what type of data each column contains, and finally putting
related columns into their own table.
For example, you put all the columns relating to locations of meetings in the Location table,
those relating to members in the MemberDetails table, and so on.
The next step is ensuring that there are no repeating groups of data. Consider we have
following table:
So if we populate this table for a single customer having multiple orders then it would be
something as follows:
But as per 1NF, we need to ensure that there are no repeating groups of data. So let us
break above table into to parts and join them using a key as follows:
CUSTOMERS table:
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
PRIMARY KEY (ID));
ORDERS table:
ID CUSTOMER_ID ORDERS
The final rule of the first normal form . create a primary key for each table which we have
already created.
Second normal form states that it should meet all the rules for 1NF and there must be no
partial dependences of any of the columns on the primary key:
Consider a customer-order relation and you want to store customer ID, customer name,
order ID and order detail, and date of purchage:
This table is in first normal form, in that it obeys all the rules of first normal form. In this
table, the primary key consists of CUST_ID and ORDER_ID. Combined they are unique
assuming same customer would hardly order same thing.
However, the table is not in second normal form because there are partial dependencies of
primary keys and columns. CUST_NAME is dependent on CUST_ID, and there's no real link
between a customer's name and what he purchaged. Order detail and purchage date are also
dependent on ORDER_ID, but they are not dependent on CUST_ID, because there's no link
between a CUST_ID and an ORDER_DETAIL or their SALE_DATE.
To make this table comply with second normal form, you need to separate the columns into
three tables.
A table is in Third normal form when the following conditions are met:
The dependency of nonprimary fields is between the data. For example in the below table,
street name, city, and state are unbreakably bound to the zip code.
The dependency between between zip code and address is called a transitive dependency.
To comply with third normal form, all you need to do is move the Street, City, and State
fields into their own table, which you can call the Zip Code table:
The advantages of removing transitive dependencies are mainly twofold. First, the amount
of data duplication is reduced and therefore your database becomes smaller.
The second advantage is data integrity. When duplicated data changes, there's a big risk of
updating only some of the data, especially if it's spread out in a number of different places
in the database. For example, If address and zip code data were stored in three or four
different tables, then any changes in zip codes would need to ripple out to every record in
those three or four tables.
>>SQL -Syntax
SQL is followed by unique set of rules and guidelines called Syntax. This tutorial gives you a
quick start with SQL by listing all the basic SQL Syntax:
All the SQL statements start with any of the keywords like SELECT, INSERT, UPDATE,
DELETE, ALTER, DROP, CREATE, USE, SHOW and all the statements end with a semicolon
(;).
Important point to be noted is that SQL is case insensitive which means SELECT and select
have same meaning in SQL statements but MySQL make difference in table names. So if
you are working with MySQL then you need to give table names as they exist in the
database.
SQL IN Clause:
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name;
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name
HAVING (arithematic function condition);
DESC table_name;
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
COMMIT;
ROLLBACK;
>>SQL Data Type is an attribute that specifies type of data of any object. Each column,
variable and expression has related data type in SQL.
You would use these data types while creating your tables. You would choose a particular
data type for a table column based on your requirement.
SQL Server offers six categories of data types for your use:
tinyint 0 255
bit 0 1
Operators are used to specify conditions in an SQL statement and to serve as conjunctions
for multiple conditions in a statement.
• Arithmetic operators
• Comparison operators
• Logical operators
• Operators used to negate conditions
Operator Description
The ALL operator is used to compare a value to all values in another value
ALL
set.
The AND operator allows the existence of multiple conditions in an SQL
AND
statement's WHERE clause.
The ANY operator is used to compare a value to any applicable value in the
ANY
list according to the condition.
The BETWEEN operator is used to search for values that are within a set
BETWEEN
of values, given the minimum value and the maximum value.
The NOT operator reverses the meaning of the logical operator with
NOT which it is used. Eg. NOT EXISTS, NOT BETWEEN, NOT IN etc. This is
negate operator.
IS NULL The NULL operator is used to compare a value with a NULL value.
>>SQL EXPRESSION
An expression is a combination of one or more values, operators, and SQL functions that
evaluate to a value.
SQL EXPRESSIONs are like formulas and they are written in query language. You can also
used to query the database for specific set of data.
Syntax:
There are different types of SQL expression, which are mentioned below:
SQL - Boolean Expressions:
SQL Boolean Expressions fetch the data on the basis of matching single value. Following is
the syntax:
This expression is used to perform any mathematical operation in any query. Following is the
syntax:
There are several built-in functions like avg(), sum(), count() etc.to perform what is known
as aggregate data calculations against a table or a specific table column.