SQL
SQL
i
SQL
SQL is a database computer language designed for the retrieval and management of data
in a relational database. SQL stands for Structured Query Language.
This tutorial will give you a quick start to SQL. It covers most of the topics required for a
basic understanding of SQL and to get a feel of how it works.
This tutorial is prepared for beginners to help them understand the basic as well as the
advanced concepts related to SQL languages. This tutorial will give you enough
understanding on the various components of SQL along with suitable examples.
Before you start practicing with various types of examples given in this tutorial, I am
assuming that you are already aware about what a database is, especially the RDBMS and
what is a computer programming language.
If you are willing to compile and execute SQL programs with Oracle 11g RDBMS but you
have a setup for the same, do not worry. Coding Ground is available on a high-end
dedicated server giving you real programming experience. It is free and is available online
for everyone.
All the content and graphics published in this e-book are the property of Tutorials Point (I)
Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish
any contents or a part of contents of this e-book in any manner without written consent
of the publisher.
We strive to update the contents of our website and tutorials as timely and as precisely as
possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt.
Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our
website or its contents including this tutorial. If you discover any errors on our website or
in this tutorial, please notify us at contact@tutorialspoint.com
i
SQL
1. ......................................................................................................................................... 1
What is SQL? .................................................................................................................................................... 1
SQL Process ..................................................................................................................................................... 2
SQL Commands................................................................................................................................................ 3
2. ............................................................................................................................. 5
What is RDBMS? .............................................................................................................................................. 5
SQL Constraints ............................................................................................................................................... 6
Data Integrity ................................................................................................................................................... 7
Database Normalization .................................................................................................................................. 7
Database First Normal Form (1NF) ............................................................................................................... 8
Database Second Normal Form (2NF) ........................................................................................................ 10
Database Third Normal Form (3NF) ............................................................................................................ 11
3. ......................................................................................................................... 14
MySQL ........................................................................................................................................................... 14
MS SQL Server ............................................................................................................................................... 15
ORACLE .......................................................................................................................................................... 16
MS ACCESS..................................................................................................................................................... 17
5. .................................................................................................................................... 24
9. ............................................................................................................. 46
10. .................................................................................................. 47
ii
SQL
11. ................................................................................................................................ 48
SQL - Creating a Table from an Existing Table ............................................................................................... 49
12. ................................................................................................................... 51
13. ................................................................................................................................ 53
14. ................................................................................................................................ 56
15. ............................................................................................................................... 59
16. ................................................................................................. 62
The AND Operator ......................................................................................................................................... 62
The OR Operator ........................................................................................................................................... 63
17. .............................................................................................................................. 66
18. ................................................................................................................................ 69
19. .................................................................................................................................... 72
20. .................................................................................................... 76
21. ........................................................................................................................... 79
22. ....................................................................................................................................... 82
24. ........................................................................................................................... 89
25. .................................................................................................................................... 92
SQL - NOT NULL Constraint ........................................................................................................................... 92
SQL - DEFAULT Constraint ............................................................................................................................. 93
SQL - UNIQUE Constraint ............................................................................................................................... 94
.......................................................................................................................................... 95
.......................................................................................................................................... 96
................................................................................................................................ 98
SQL ................................................................................................................................. 99
Dropping Constraints ................................................................................................................................... 101
Integrity Constraints .................................................................................................................................... 101
iv
1. SQL Overview SQL
SQL is Structured Query Language, which is a computer language for storing, manipulating
and retrieving data stored in a relational database.
SQL is the standard language for Relational Database System. All the Relational Database
Management Systems (RDMS) like MySQL, MS Access, Oracle, Sybase, Informix, Postgres
and SQL Server use SQL as their standard database language.
Why SQL?
SQL is widely popular because it offers the following advantages:
Allows users to define the data in a database and manipulate that data.
Allows to embed within other languages using SQL modules, libraries &
pre-compilers.
1978 IBM worked to develop Codd's ideas and released a product named
System/R.
1
SQL
1986 IBM developed the first prototype of relational database and standardized
by ANSI. The first relational database was released by Relational Software which
later came to be known as Oracle.
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 this process.
Query Dispatcher
Optimization Engines
Classic Query Engine
SQL Query Engine, etc.
A classic query engine handles all the non-SQL queries, but a SQL query engine won't
handle logical files.
2
SQL
The standard SQL commands to interact with relational databases are CREATE, SELECT,
INSERT, UPDATE, DELETE and DROP. These commands can be classified into the following
groups based on their nature:
Command Description
Command Description
Command Description
3
2. SQL RDBMS Concepts SQL
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.
What is a table?
The data in an RDBMS is stored in database objects which are called as tables. This table
is basically a collection of related data entries and it consists of numerous columns and
rows.
Remember, a table is the most common and simplest form of data storage in a relational
database. The following program is an 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 a 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.
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
What is a 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 be as shown below:
+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+
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 the one that has been left blank
during a record creation.
Constraints are the rules enforced on data columns on a 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.
Constraints can either be column level or table level. Column level constraints are applied
only to one column whereas, table level constraints are applied to the entire table.
5
SQL
Following are some of the most commonly used constraints available in SQL:
NOT NULL Constraint: Ensures that a column cannot have a NULL value.
DEFAULT Constraint: Provides a default value for a column when none is specified.
UNIQUE Constraint: Ensures that all the values in a column are different.
CHECK Constraint: The CHECK constraint ensures that all values in a column satisfy
certain conditions.
INDEX: Used to create and retrieve data from the database very quickly.
Domain Integrity: Enforces valid entries for a given column by restricting the
type, the format, or the range of values.
Referential integrity: Rows cannot be deleted, which are used by other records.
User-Defined Integrity: Enforces some specific business rules that do not fall
into entity, domain or referential integrity.
Eliminating redundant data. For example, storing the same data in more than one
table.
Both these reasons are worthy goals as they reduce the amount of space a database
consumes and ensures 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 a 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 the third normal form.
It is your choice to take it further and go to the fourth normal form, fifth normal form and
so on, but in general, the third normal form is more than enough.
6
SQL
The First normal form (1NF) sets basic rules for an organized database:
Define the data items required, because they become the columns in a 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.
So, if we populate this table for a single customer having multiple orders, then it would be
something as shown below:
7
SQL
But as per the 1NF, we need to ensure that there are no repeating groups of data. So, let
us break the above table into two parts and then join them using a key as shown in the
following program:
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
CREATE TABLE ORDERS(
ID INT NOT NULL,
CUSTOMER_ID INT NOT NULL,
ORDERS VARCHAR(155),
PRIMARY KEY (ID)
);
ID CUSTOMER_ID ORDERS
8
SQL
The 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 the date of purchase:
This table is in the first normal form; in that it obeys all the rules of the first normal form.
In this table, the primary key consists of the CUST_ID and the ORDER_ID. Combined, they
are unique assuming the same customer would hardly order the same thing.
However, the table is not in the 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 purchased. The order detail
and purchase date are also dependent on the ORDER_ID, but they are not dependent on
the CUST_ID, because there is no link between a CUST_ID and an ORDER_DETAIL or their
SALE_DATE.
To make this table comply with the second normal form, you need to separate the columns
into three tables.
First, create a table to store the customer details as shown in the code block below:
9
SQL
);
The next step is to create a table to store the details of each order:
Finally, create a third table storing just the CUST_ID and the ORDER_ID to keep a track
of all the orders for a customer:
A table is in a third normal form when the following conditions are met:
The dependency of these non-primary fields is between the data. For example, in the
following table the street name, city and the state are unbreakably bound to their zip
code.
10
SQL
);
The dependency between the zip code and the address is called as a transitive dependency.
To comply with the third normal form, all you need to do is to move the Street, City and
the State fields into their own table, which you can call as the Zip Code table.
The advantages of removing transitive dependencies are mainly two-fold. 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 is a big risk
of updating only some of the data, especially if it is spread out in many different places in
the database.
For example, if the address and the zip code data were stored in three or four different
tables, then any changes in the zip codes would need to ripple out to every record in those
three or four tables.
11
3. SQL RDBMS Databases SQL
There are many popular RDBMS available to work with. This tutorial gives a brief overview
of some of the most popular RDBMS . This would help you to compare their basic features.
MySQL is supporting many different platforms including Microsoft Windows, the major
Linux distributions, UNIX, and Mac OS X.
MySQL has free and paid versions, depending on its usage (non-commercial/commercial)
and features. MySQL comes with a very fast, multi-threaded, multi-user and robust SQL
database server.
History
Development of MySQL by Michael Widenius & David Axmark beginning in 1994.
Windows Version was released on the 8th January 1998 for Windows 95 and NT.
Version 3.23: beta from June 2000, production release January 2001.
Version 4.0: beta from August 2002, production release March 2003 (unions).
Version 4.01: beta from August 2003, Jyoti adopts MySQL for database tracking.
Version 4.1: beta from June 2004, production release October 2004.
Version 5.0: beta from March 2005, production release October 2005.
Features
High Performance.
High Availability.
Management Ease.
T-SQL
ANSI SQL
History
1987 - Sybase releases SQL Server for UNIX.
1989 - Microsoft, Sybase, and Aston-Tate release SQL Server 1.0 for OS/2.
1990 - SQL Server 1.1 is released with support for Windows 3.0 clients.
2001 - Microsoft releases XML for SQL Server Web Release 1 (download).
2002 - Microsoft releases SQLXML 2.0 (renamed from XML for SQL Server).
Features
High Performance
High Availability
Database mirroring
Database snapshots
CLR integration
Service Broker
DDL triggers
Ranking functions
XML integration
13
SQL
TRY...CATCH
Database Mail
Oracle works to efficiently manage its resources, a database of information among the
multiple clients requesting and sending data in the network.
It is an excellent database server choice for client/server computing. Oracle supports all
major operating systems for both clients and servers, including MSDOS, NetWare,
UnixWare, OS/2 and most UNIX flavors.
History
Oracle began in 1977 and celebrating its 32 wonderful years in the industry (from 1977 to
2009).
1977 - Larry Ellison, Bob Miner and Ed Oates founded Software Development
Laboratories to undertake development work.
1979 - Version 2.0 of Oracle was released and it became first commercial relational
database and first SQL database. The company changed its name to Relational
Software Inc. (RSI).
1983 - Oracle released version 3.0, rewritten in C language and ran on multiple
platforms.
1984 - Oracle version 4.0 was released. It contained features like concurrency
control - multi-version read consistency, etc.
1985 - Oracle version 4.0 was released. It contained features like concurrency
control - multi-version read consistency, etc.
2007 - Oracle released Oracle11g. The new version focused on better partitioning,
easy migration, etc.
Features
Concurrency
Read Consistency
Locking Mechanisms
Quiesce Database
Portability
Self-managing database
SQL*Plus
14
SQL
ASM
Scheduler
Resource Manager
Data Warehousing
Materialized views
Bitmap indexes
Table compression
Parallel Execution
Analytic SQL
Data mining
Partitioning
This is one of the most popular Microsoft products. Microsoft Access is an entry-level
database management software. MS Access database is not only inexpensive but also a
powerful database for small-scale projects.
MS Access uses the Jet database engine, which utilizes a specific SQL language dialect
(sometimes referred to as Jet SQL).
MS Access comes with the professional edition of MS Office package. MS Access has easy-
to-use intuitive graphical interface.
1993 - Access 1.1 released to improve compatibility with inclusion the Access Basic
programming language.
2007 - Access 2007, a new database format was introduced ACCDB which supports
complex data types such as multi valued and attachment fields.
Features
Users can create tables, queries, forms and reports and connect them together with
macros.
Option of importing and exporting the data to many formats including Excel,
Outlook, ASCII, dBase, Paradox, FoxPro, SQL Server, Oracle, ODBC, etc.
There is also the Jet Database format (MDB or ACCDB in Access 2007), which can
contain the application and data in one file. This makes it very convenient to
distribute the entire application to another user, who can run it in disconnected
environments.
Microsoft Access offers parameterized queries. These queries and Access tables can
be referenced from other programs like VB6 and .NET through DAO or ADO.
15
SQL
The desktop editions of Microsoft SQL Server can be used with Access as an
alternative to the Jet Database Engine.
16
4. SQL Syntax SQL
SQL is followed by a 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
(;).
The most important point to be noted here is that SQL is case insensitive, which means
SELECT and select have same meaning in SQL statements. Whereas, MySQL makes
difference in table names. So, if you are working with MySQL, then you need to give table
names as they exist in the database.
All the examples given in this tutorial have been tested with a MySQL server.
17
SQL
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;
18
SQL
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name
HAVING (arithematic function condition);
DESC table_name;
19
SQL
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
USE database_name;
COMMIT;
20
SQL
ROLLBACK;
21
5. SQL Data Types SQL
SQL Data Type is an attribute that specifies the type of data of any object. Each column,
variable and expression has a related data type in SQL. You can use these data types while
creating your tables. You can choose a data type for a table column based on your
requirement.
SQL Server offers six categories of data types for your use which are listed below
tinyint 0 255
bit 0 1
22
SQL
Note
minute accuracy.
23
SQL
24
SQL
25