0% found this document useful (0 votes)
11 views12 pages

SQL Tutorial Queries

The document provides a comprehensive overview of SQL commands, including SELECT queries, WHERE clauses, JOIN operations, and various functions such as GROUP BY and ORDER BY. It also covers advanced topics like subqueries, window functions, common table expressions (CTEs), temporary tables, stored procedures, triggers, and events. Additionally, it addresses interview questions related to SQL concepts such as primary keys, foreign keys, and types of joins.

Uploaded by

Chicken chief
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views12 pages

SQL Tutorial Queries

The document provides a comprehensive overview of SQL commands, including SELECT queries, WHERE clauses, JOIN operations, and various functions such as GROUP BY and ORDER BY. It also covers advanced topics like subqueries, window functions, common table expressions (CTEs), temporary tables, stored procedures, triggers, and events. Additionally, it addresses interview questions related to SQL concepts such as primary keys, foreign keys, and types of joins.

Uploaded by

Chicken chief
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

Basic SELECT Queries

SELECT * FROM parks_and_recreation.employee_demographics;

select first_name,
last_name,
birth_Date,
age,
age+100
from employee_demographics;

select distinct gender


from employee_demographics;
select distinct first_name,gender
from employee_demographics;

WHERE Clause

select *
from employee_salary
where dept_id=1;

select *
from employee_salary
where salary<=50000;

select *
from employee_demographics
where gender!='Male';

select *
from employee_demographics
where birth_date>'1985-01-01';

select *
from employee_demographics
where birth_date >'1985-01-01'
and gender='Male';

select *
from employee_demographics
where birth_date>'1985-01-01'
and not gender='Male';

select *
from employee_demographics
where (birth_date>'1979-01-01' and age=44) or age>60;

LIKE Statement

select *
from employee_demographics
where first_name LIKE 'A%';

select *
from employee_demographics
where first_name LIKE '%n__';

select *
from employee_demographics
where birth_date LIKE '198%';

GROUP BY Statement

select gender
from employee_demographics
group by gender;

select gender,avg(age)
from employee_demographics
group by gender;

select occupation,salary
from employee_salary
group by occupation,salary;

select gender,avg(age),max(age),min(age),count(age)
from employee_demographics
group by gender;
ORDER BY Statement

select *
from employee_demographics
order by first_name;

select *
from employee_demographics
order by first_name desc;

select *
from employee_demographics
order by gender desc,age;

HAVING vs WHERE

select gender, avg(age)


from employee_demographics
group by gender
having avg(age)>40;

select occupation,avg(salary)
from employee_salary
where occupation like '%manager%'
group by occupation
having avg(salary)>75000;

LIMIT & Aliasing

select *
from employee_demographics
order by age desc
limit 3;

select (select distinct salary


from Employee
order by salary Desc
LIMIT 1 OFFSET 1) as SecondHighestSalary;
select gender,avg(age) as new_age
from employee_demographics
group by gender
having new_age>40;

Joins

-- INNER JOIN
select ed.employee_id,ed.first_name,birth_date,age,gender,occupation,salary,dept_id
from employee_demographics as ed
Inner join employee_salary as es
on ed.employee_id=es.employee_id;

-- LEFT JOIN
select *
from employee_demographics as ed
LEFT OUTER join employee_salary as es
on ed.employee_id=es.employee_id;

-- RIGHT JOIN
select *
from employee_demographics as ed
RIGHT OUTER join employee_salary as es
on ed.employee_id=es.employee_id;

Self Join

select *
from employee_salary as emp1
join employee_salary as emp2
on emp1.employee_id=emp2.employee_id;

select emp1.employee_id,emp1.first_name,emp2.employee_id,emp2.first_name
from employee_salary as emp1
join employee_salary as emp2
on emp1.employee_id+1=emp2.employee_id;
Multiple Joins

select
ed.employee_id,ed.first_name,ed.last_name,ed.age,birth_date,occupation,salary,es.dept_id,de
partment_name
from employee_demographics as ed
inner join employee_salary as es
ON ed.employee_id=es.employee_id
inner join parks_departments as pd
on es.dept_id=pd.department_id;

Union

select age,gender
from employee_demographics
union
select first_name,last_name
from employee_salary;

select first_name,last_name
from employee_demographics
union
select first_name,last_name
from employee_salary;

select first_name,last_name
from employee_demographics
union all
select first_name,last_name
from employee_salary;

select employee_id,last_name,'old man' as label


from employee_demographics
where age>40 and gender='Male'
union
select employee_id,last_name,'old lady' as label
from employee_demographics
where age>40 and gender='female'
union
select employee_id,last_name,'high salaried' as label
from employee_salary
where salary>70000
order by employee_id;

String Functions

select length('skyfall');

select first_name,length(first_name) as length_of_name


from employee_demographics
order by length_of_name;

select upper('shivashlok');
select lower('ShiVASHlok');

select trim(' shiva ');


select ltrim(' shiva ');
select rtrim(' shiv ');

select first_name, left(first_name,3),


right(first_name,3),
substring(first_name,3,2),
birth_date,substring(birth_date,6,2) as month
from employee_demographics;

select first_name,replace(first_name,'a','@')
from employee_demographics;

select locate('x','Alex');

select first_name,
last_name,
concat(first_name,' ',last_name) as fullName
from employee_demographics;

CASE Statement

select first_name,age,
case
when age<=30 then 'YOUNG'
when age between 31 and 50 then 'old'
when age>50 then 'almost dead'
end as status
from employee_demographics;

Case Study

select employee_id,first_name,last_name,salary,
case
when salary<=50000 then salary+(0.05*salary)
when salary>50000 then salary+(0.07*salary)
end as newsalary,
case
when department_name like 'Finance' then 0.10*salary
end as bonus
from employee_salary
join parks_departments
on employee_salary.dept_id=parks_departments.department_id ;

Subqueries

select *
from employee_demographics
where employee_id in (
select employee_id
from employee_salary
where dept_id in (
select department_id
from parks_departments
where department_name like 'parks and recreation'
)
);

select employee_id,first_name,last_name,salary,
(select avg(salary) from employee_salary) as average_sal
from employee_salary;

select avg(avgage)
from (
select gender, avg(age) as avgage,max(age) as maxage,min(age) as minage,count(age)
as countage
from employee_demographics
group by gender
) as agg_table;

Window Functions

select ed.first_name,ed.last_name,AVG(salary) over (partition by gender)


from employee_demographics as ed
join employee_salary as es
on ed.employee_id=es.employee_id;

select ed.first_name,ed.last_name,
gender,salary,
sum(salary) over(partition by gender order by ed.employee_id) as rolling_sum
from employee_demographics as ed
join employee_salary as es
on ed.employee_id=es.employee_id;

select ed.employee_id,ed.first_name,ed.last_name,
gender,salary,
row_number() over(partition by gender order by salary desc) as rno,
rank() over(partition by gender order by salary desc) as rankk,
dense_rank() over(partition by gender order by salary desc) as dense_rankk
from employee_demographics as ed
join employee_salary as es
on ed.employee_id=es.employee_id;

CTEs

with CTE_Example as (
select ed.gender,avg(salary) as avg_sal,max(salary) as max_Sal
from employee_demographics as ed
join employee_salary as es
on ed.employee_id=es.employee_id
group by gender
)
select avg(avg_sal) as avg_Sal_M_F
from CTE_Example;

with cte_ex1 as
(
select employee_id,gender,birth_date
from employee_demographics
where birth_date>'1985-01-01'
),
cte_ex2 as
(
select employee_id,salary
from employee_salary
where salary>50000
)
select employee_id,gender,birth_date,salary
from cte_ex1
join cte_ex2
on cte_ex1.employee;

Temporary Tables

create temporary table temp_table(


first_name varchar(50),
last_name varchar(50),
favourite_movie varchar(100)
);

insert into temp_table


values('shiv','shlok','shutterIsland');

create temporary table sal_over_50k


select *
from employee_salary
where salary>50000;

select *
from sal_over_50k;

Stored Procedures

create procedure large_sal()


select *
from employee_salary
where salary>50000;

call large_sal();

DELIMITER $$
create procedure sal_2()
begin
SELECT *
FROM employee_salary
where salary>50000;
select *
from employee_salary
where salary>10000;
end $$
DELIMITER ;

call sal_2();

DELIMITER $$
create procedure sal_3(huggymuff INT)
begin
SELECT salary
FROM employee_salary
where employee_id=huggymuff;
end $$
DELIMITER ;

call sal_3(1);

Triggers and Events

DELIMITER $$
create trigger employee_insert
after INSERT on employee_salary
for each row
begin
insert into employee_demographics(employee_id,first_name,last_name)
values(NEW.employee_id,new.first_name,NEW.last_name);
end $$
DELIMITER ;
insert into employee_salary
values(13,'shlok','shiv','PR',100000,null);

DELIMITER $$
create event delete_retirees
on schedule every 30 second
do
Begin
delete
from employee_demographics
where age>=60;
end $$
DELIMITER ;

show variables like 'event%';

Interview Question

1. What are the main types of SQL commands?

 DDL (Data Definition Language): CREATE, ALTER, DROP, TRUNCATE.

 DML (Data Manipulation Language): SELECT, INSERT, UPDATE, DELETE.

 DCL (Data Control Language): GRANT, REVOKE.


 TCL (Transaction Control Language): COMMIT, ROLLBACK, SAVEPOINT.

2. What is a primary key?


A primary key is a unique identifier for each record in a table. It ensures that
no two rows have the same value in the primary key column(s), and it does not
allow NULL values.

3. What is a foreign key?


A foreign key is a column in one table that refers to the primary key in another
table. It establishes and enforces a relationship between the two tables,
ensuring data integrity.

4. What is a view in SQL?


A view is a virtual table created by a SELECT query. It does not store data itself,
but presents data from one or more tables in a structured way. Views simplify
complex queries, improve readability, and enhance security by restricting
access to specific rows or columns.

5. What are the different types of joins in SQL?


 INNER JOIN: Returns rows that have matching values in both tables.
 LEFT JOIN (LEFT OUTER JOIN): Returns all rows from the left table, and
matching rows from the right table.
 RIGHT JOIN (RIGHT OUTER JOIN): Returns all rows from the right table, and
matching rows from the left table.
 FULL JOIN (FULL OUTER JOIN): Returns all rows when there is a match in
either table.
 CROSS JOIN: Produces the Cartesian product of two tables.

You might also like