Topic 08 : SQL - 2

Preview:

DESCRIPTION

 

Citation preview

SQL - 2

Er. Pradip Kharbuja

What is NULL?

NULL means Unknown or nonexistent.

NULL is not a value.

It is not zero or blank or an “empty string”.

NULL is a special marker used in SQL to indicate that a data value does not exist in the database.

If A and B are NULL, what is the result of A = B?

Data Definition

CREATE TABLE departments (

dept_no INTEGER NOT NULL,

department_name VARCHAR(30),

location VARCHAR(30)

PRIMARY KEY (dept_no)

);

Primary Key

Unique Value + Not NULL = Primary Key

A primary key cannot allow NULL.

Each table can have at most one primary key.

Modifying Tables Using SQL

Add an extra column

Drop a column from a table

Modify the maximum length of the column

Add a new constraint like Primary Key, Unique Key

Drop a constraint

Set a default value for a column

Drop a default value for a column

Adding & Removing new column

ALTER TABLE departments ADD department_head VARCHAR(30);

ALTER TABLE departments ALTER COLUMN department_head VARCHAR(50);

ALTER TABLE departments DROP COLUMN department_head;

Data Retrieving

Select

Order By

Aggregate functions

Group by

Subqueries

Joins

SELECT

SELECT * FROM departments;

SELECT * FROM departments WHERE dept_no = 1;

SELECT dept_no, department_name FROM departments;

SELECT department_name FROM departments WHERE dept_no = 2;

ORDER BY

to get result in ascending or descending order.

SELECT * FROM departments ORDER BY dept_no;

SELECT * FROM departments ORDER BY dept_no ASC;

SELECT * FROM departments ORDER BY dept_no DESC;

SELECT department_name, location FROM departments WHERE dept_no = 1 ORDER BY department_name DESC;

workers Table

Column Name Type Length NULL Key

emp_no Integer Not Null Primary Key

first_name Varchar 30

last_name Varchar 30

job_title varchar 30

age Integer

dept_no Integer

workers Table Creation Query

workers Table

emp_no first_name last_name job_title age dept_no

1 Kiran Mishra Manager 56 1

2 Sandeep Khanal Manager 33 2

3 Srijana Shrestha Manager 32 3

4 Aashish Magar Packer 23 1

5 Krishna Dhakal Packer 24 1

6 Hari Shakya Accountant 56 2

7 Sarala Shrestha Admin Assistant 34 3

8 Amul Dahal Packer 26 NULL

Insert Queries

SQL Comparison Operators

1. =

2. <

3. >

4. <=

5. >=

6. <> or !=

SELECT * FROM workers;

SELECT * FROM workers WHERE age = 56;

SELECT * FROM workers WHERE age > 23;

SELECT * FROM workers WHERE age >= 23;

SELECT * FROM workers WHERE age < 56;

SELECT * FROM workers WHERE age <= 56;

SELECT * FROM workers WHERE age <> 56;

SELECT * FROM workers WHERE age != 56;

SQL Logical Operators

1. AND

2. OR

3. IN

4. NOT

5. BETWEEN

6. IS NULL

SELECT * FROM workers WHERE age = 56 AND dept_no = 1;

SELECT * FROM workers WHERE age = 56 OR dept_no = 1;

SELECT * FROM workers WHERE first_name = 'Hari' OR first_name ='Sarala' OR first_name = 'Kiran' OR first_name = 'Sandeep';

SELECT * FROM workers WHERE first_name IN ('Hari', 'Sarala', 'Kiran','Sandeep');

SELECT * FROM workers WHERE first_name NOT IN ('Hari', 'Sarala','Kiran', 'Sandeep');

SQL Logical Operators

SELECT * FROM workers WHERE age >= 32 AND age <= 56;

SELECT * FROM workers WHERE age BETWEEN 32 AND 56;

SELECT * FROM workers WHERE dept_no IS NULL;

SELECT * FROM workers WHERE dept_no IS NOT NULL;

1. AND

2. OR

3. IN

4. NOT

5. BETWEEN

6. IS NULL

LIKE Operator

SELECT * FROM workers WHERE job_title = 'Manager';

SELECT * FROM workers WHERE job_title LIKE 'Manager';

SELECT * FROM workers WHERE first_name LIKE 'S%';

SELECT * FROM workers WHERE first_name LIKE '%a';

SELECT * FROM workers WHERE first_name LIKE 'S%a';

SELECT * FROM workers WHERE first_name LIKE '%ar%';

SELECT * FROM workers WHERE first_name LIKE '_ar%';

SELECT * FROM workers WHERE first_name LIKE '_ar_';

Aggregation Functions

1. Count – returns number of values in a column

2. Sum – returns the sum total of values of a column

3. Avg – returns the mean average of values in column

4. Min – returns the lowest value in a column

5. Max – returns the highest value in a column

Aggregation Functions

SELECT COUNT(emp_no) FROM workers;

SELECT COUNT(emp_no) AS number_of_workers FROM workers;

SELECT SUM(age) FROM workers;

SELECT AVG(age) FROM workers;

SELECT MAX(age) FROM workers;

SELECT MIN(age) FROM workers;

GROUP BY

Display dept_no and count the number of workers in that department.

SELECT dept_no, COUNT(emp_no) FROM workers; This query will produce an error.

SELECT dept_no, COUNT(emp_no) FROM workers GROUP BY dept_no;

GROUP BY

SELECT dept_no, COUNT(dept_no) FROM workers WHERE dept_no >=2 GROUP BY dept_no;

SELECT dept_no, COUNT(dept_no) FROM workers WHERE dept_no >=2 GROUP BY dept_no ORDER BY dept_no DESC;

Display dept_no which has more than 2 workers.

SELECT dept_no FROM workers GROUP BY dept_no HAVING COUNT(emp_no) > 2;

Sub Queries

A Subquery or Inner query or Nested query is a query within another SQL query and embedded within the WHERE clause.

Subqueries must be enclosed within parentheses.

A subquery can have only one column in the SELECT clause

Subqueries that return more than one row can only be used with multiple value operators, such as the IN operator

Sub Queries

Display the department_name of the depeartment having the highest dept_no.

SELECT department_name FROM departments WHERE dept_no = (SELECT MAX(dept_no) FROM departments);

Joins

An SQL JOIN clause is used to combine rows from two or more tables, based on condition.

Types of Join1. Cross Join or Cartesian Product

2. Inner Join

3. Left Join

4. Right Join

5. Full Join

Cartesian Join or Cross Join

Concept is like Cartesian Product.

eg. A = {1, 2, 3}, B = {a, b}

Cartesian Product will be :

A x B = {(1, a), (1, b), (2, a), (2, b), (3, a), (3, b)}

Cartesian Join or Cross Join

SELECT * FROM departments, workers;

Inner Join

SELECT * FROM departments, workers WHERE

departments.dept_no = workers.dept_no;

Using Alias

SELECT * FROM departments d, workers w WHERE d.dept_no = w.dept_no;

Select the department_name from departments and the first_name, last_name and job_title from workers.

SELECT d.department_name, w.first_name, w.last_name, w.job_titleFROM departments d, workers w WHERE d.dept_no = w.dept_no;

Database Questions

1. Select the department_name and location from departments and the first_name and last_name from workers.

2. Select the department_name and location from departments and the first_name and last_name from workers. Only select workers who are in the ‘Packing’ department.

3. Select the department_name and location from departments, and the first_name, last_name and job_title from workers, for just the managers that work in Cairo.

4. Select the job_title, age and location for all the workers who work in London.

5. Using the COUNT function and joining the two tables, count how many workers there are in Lagos.

Key clauses in an SQL SELECT statement

SELECT – specifies which columns from the table are to appear in the result

FROM – specifies which table or tables are to be used to get the results

WHERE – specifies some condition that will restrict the rows that are retrieved

GROUP BY – groups rows by some column value

HAVING – used to restrict the result that will be grouped

ORDER BY – specifies the order in which the result will appear

Query Optimisation

Making sure a query runs as efficiently and as quickly as possible

The query optimizer attempts to determine the most efficient way to execute a given query by considering the possible query plans.

eg. TOAD

Available at http://www.quest.com/toad/

ANY QUESTIONS?

References

http://www.tutorialspoint.com/sql/sql-operators.htm

Recommended