SQL Server Tutorial - Part 1
SQL Server Tutorial - Part 1
SQL Server Tutorial - Part 1
CHAPTER
SQL Overview
S QL tutorial gives unique learning on Structured Query Language and it helps to make practice on SQL
commands which provides immediate results. SQL is a language of database, it includes database creation,
deletion, fetching rows and modifying rows etc.
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 use SQL as standard database
language.
Why SQL?
Allows users to access data in relational database management systems.
Allows users to define the data in database and manipulate that data.
Allows to embed within other languages using SQL modules, libraries & pre-compilers.
SATYAJIT'S CLASSES
Simply Easy Learning
Allows users to create view, stored procedure, functions in a database.
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.
SATYAJIT'S CLASSES
Simply Easy Learning
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:
DROP Deletes an entire table, a view of a table or other object in the database.
SATYAJIT'S CLASSES
Simply Easy Learning
CHAPTER
R DBMS 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 data0 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:
+----+----------+-----+-----------+----------+
+----+----------+-----+-----------+----------+
| 6 | Komal | 22 | MP | 4500.00 |
+----+----------+-----+-----------+----------+
SATYAJIT'S CLASSES
Simply Easy Learning
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.
+----+----------+-----+-----------+----------+
+----+----------+-----+-----------+----------+
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 |
+----+------+
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.
SATYAJIT'S CLASSES
Simply Easy Learning
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.
Constraints could be column level or table level. Column level constraints are applied only to one column, whereas
table level constraints are applied to the whole table.
Example:
For example, the following SQL creates a new table called CUSTOMERS and adds five columns, three of which,
ID and NAME and AGE, specify not to accept NULLs:
);
If CUSTOMERS table has already been created, then to add a NOT NULL constraint to SALARY column in Oracle
and MySQL, you would write a statement similar to the following:
SATYAJIT'S CLASSES
Simply Easy Learning
DEFAULT Constraint:
The DEFAULT constraint provides a default value to a column when the INSERT INTO statement does not provide
a specific value.
Example:
For example, the following SQL creates a new table called CUSTOMERS and adds five columns. Here, SALARY
column is set to 5000.00 by default, so in case INSERT INTO statement does not provide a value for this column.
then by default this column would be set to 5000.00.
);
If CUSTOMERS table has already been created, then to add a DFAULT constraint to SALARY column, you would
write a statement similar to the following:
UNIQUE Constraint:
The UNIQUE Constraint prevents two records from having identical values in a particular column. In the
CUSTOMERS table, for example, you might want to prevent two or more people from having identical age.
Example:
For example, the following SQL creates a new table called CUSTOMERS and adds five columns. Here, AGE
column is set to UNIQUE, so that you can not have two records with same age:
SATYAJIT'S CLASSES
Simply Easy Learning
NAME VARCHAR (20) NOT NULL,
);
If CUSTOMERS table has already been created, then to add a UNIQUE constraint to AGE column, you would write
a statement similar to the following:
You can also use following syntax, which supports naming the constraint in multiple columns as well:
If you are using MySQL, then you can use the following syntax:
PRIMARY Key:
A primary key is a field in a table which uniquely identifies each row/record in a database table. Primary keys must
contain unique values. A primary key column cannot have NULL values.
A table can have only one primary key, which may consist of single or multiple fields. When multiple fields are used
as a primary key, they are called a composite key.
If a table has a primary key defined on any field(s), then you can not have two records having the same value of
that field(s).
Note: You would use these concepts while creating database tables.
SATYAJIT'S CLASSES
Simply Easy Learning
CREATE TABLE CUSTOMERS(
);
To create a PRIMARY KEY constraint on the "ID" column when CUSTOMERS table already exists, use the
following SQL syntax:
NOTE: If you use the ALTER TABLE statement to add a primary key, the primary key column(s) must already have
been declared to not contain NULL values (when the table was first created).
For defining a PRIMARY KEY constraint on multiple columns, use the following SQL syntax:
);
To create a PRIMARY KEY constraint on the "ID" and "NAMES" columns when CUSTOMERS table already exists,
use the following SQL syntax:
SATYAJIT'S CLASSES
Simply Easy Learning
FOREIGN Key:
A foreign key is a key used to link two tables together. This is sometimes called a referencing key.
Foreign Key is a column or a combination of columns whose values match a Primary Key in a different table.
The relationship between 2 tables matches the Primary Key in one of the tables with a Foreign Key in the
second table.
If a table has a primary key defined on any field(s), then you can not have two records having the same value of
that field(s).
Example:
Consider the structure of the two tables as follows:
CUSTOMERS table:
CREATE TABLE CUSTOMERS(
);
ORDERS table:
CREATE TABLE ORDERS (
DATE DATETIME,
AMOUNT double,
);
If ORDERS table has already been created, and the foreign key has not yet been set, use the syntax for specifying
a foreign key by altering a table.
SATYAJIT'S CLASSES
Simply Easy Learning
DROP a FOREIGN KEY Constraint:
To drop a FOREIGN KEY constraint, use the following SQL:
CHECK Constraint:
The CHECK Constraint enables a condition to check the value being entered into a record. If the condition
evaluates to false, the record violates the constraint and isn’t entered into the table.
Example:
For example, the following SQL creates a new table called CUSTOMERS and adds five columns. Here, we add a
CHECK with AGE column, so that you can not have any CUSTOMER below 18 years:
);
If CUSTOMERS table has already been created, then to add a CHECK constraint to AGE column, you would write
a statement similar to the following:
You can also use following syntax, which supports naming the constraint in multiple columns as well:
SATYAJIT'S CLASSES
Simply Easy Learning
INDEX:
The INDEX is used to create and retrieve data from the database very quickly. Index can be created by using
single or group of columns in a table. When index is created, it is assigned a ROWID for each row before it sorts
out the data.
Proper indexes are good for performance in large databases, but you need to be careful while creating index.
Selection of fields depends on what you are using in your SQL queries.
Example:
For example, the following SQL creates a new table called CUSTOMERS and adds five columns:
);
Now, you can create index on single or multiple columns using the following syntax:
To create an INDEX on AGE column, to optimize the search on customers for a particular age, following is the SQL
syntax:
ON CUSTOMERS ( AGE );
Data Integrity:
The following categories of the data integrity exist with each RDBMS:
SATYAJIT'S CLASSES
Simply Easy Learning
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.
Database Normalization
Database normalization is the process of efficiently organizing data in a database. There are two reasons of the
normalization process:
Eliminating redundant data, for example, storing the same data in more than one table.
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.
Define the data items required, because they become the columns in a table. Place related data items 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.
SATYAJIT'S CLASSES
Simply Easy Learning
CREATE TABLE CUSTOMERS(
ORDERS VARCHAR(155)
);
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 two
parts and join them using a key as follows:
CUSTOMERS table:
CREATE TABLE CUSTOMERS(
);
ORDERS table:
CREATE TABLE ORDERS(
ORDERS VARCHAR(155),
SATYAJIT'S CLASSES
Simply Easy Learning
PRIMARY KEY (ID)
);
ID CUSTOMER_ID ORDERS
Consider a customer-order relation and you want to store customer ID, customer name, order ID and order detail,
and date of purchase:
SALE_DATE DATETIME,
);
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 purchased. Order detail and purchase 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.
SATYAJIT'S CLASSES
Simply Easy Learning
CREATE TABLE CUSTOMERS(
);
);
Finally, create a third table storing just CUST_ID and ORDER_ID to keep track of all the orders for a customer:
SALE_DATE DATETIME,
);
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.
DOB DATE,
STREET VARCHAR(200),
SATYAJIT'S CLASSES
Simply Easy Learning
CITY VARCHAR(100),
STATE VARCHAR(100),
ZIP VARCHAR(12),
EMAIL_ID VARCHAR(256),
);
The dependency 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:
ZIP VARCHAR(12),
STREET VARCHAR(200),
CITY VARCHAR(100),
STATE VARCHAR(100),
);
DOB DATE,
ZIP VARCHAR(12),
EMAIL_ID VARCHAR(256),
);
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.
SATYAJIT'S CLASSES
Simply Easy Learning