sql queries
DESCRIPTION
SQL QueriesTRANSCRIPT
SQL QUERIES
SELECT last_name, salary, salary + 300
FROM employees;
SELECT last_name, salary, 12*salary+100
FROM employees;
SELECT last_name, salary, 12*(salary+100)
FROM employees;
SELECT last_name, job_id, salary, commission_pct
FROM employees;
SELECT last_name, 12*salary*commission_pct
FROM employees;
SELECT last_name AS name, commission_pct comm
FROM employees;
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;
SELECT last_name||job_id AS "Employees"
FROM employees;
SELECT last_name ||' is a '||job_id AS "Employee Details"
FROM employees;
SELECT department_id
FROM employees;
SELECT DISTINCT department_id
FROM employees;
DESCRIBE employees
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen';
Operator
=
>
>=
<
<=
<>
SELECT last_name, salary
FROM employees
WHERE salary <= 3000;
Operator
BETWEEN
...AND...
IN(set)
LIKE
IS NULL
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201);
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL;
Operator
AND
OR
NOT
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%';
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
Order Evaluated Operator
1 Arithmetic operators
2 Concatenation operator
3 Comparison conditions
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 NOT logical condition
7 AND logical condition
8 OR logical condition
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
SELECT employee_id, last_name, salary*12 annsal
FROM employees
ORDER BY annsal;
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, alias} [ASC|DESC]];
SELECT employee_id, last_name, department_id
FROM employees
WHERE last_name = 'higgins';
SELECT employee_id, last_name, department_id
FROM employees
WHERE LOWER(last_name) = 'higgins';
SELECT employee_id, CONCAT(first_name, last_name) NAME,
job_id, LENGTH (last_name),
INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, 4) = 'REP';
SELECT ROUND(45.923,2), ROUND(45.923,0),
ROUND(45.923,-1)
FROM DUAL;
SELECT TRUNC(45.923,2), TRUNC(45.923),
TRUNC(45.923,-2)
FROM DUAL;
SELECT last_name, salary, MOD(salary, 5000)
FROM employees
WHERE job_id = 'SA_REP';
SELECT last_name, hire_date
FROM employees
WHERE last_name like 'G%';
SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;
TO_CHAR(date, 'format_model')
SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM employees;
TO_CHAR(number, 'format_model')
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
TO_NUMBER(char[, 'format_model'])
TO_DATE(char[, 'format_model'])
SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90', 'DD-Mon-RR');
SELECT last_name,
NVL(TO_CHAR(manager_id), 'No Manager')
FROM employees
WHERE manager_id IS NULL;
SELECT last_name, salary, NVL(commission_pct, 0),
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM employees;
SELECT last_name, salary, commission_pct,
NVL2(commission_pct,
'SAL+COMM', 'SAL') income
FROM employees WHERE department_id IN (50, 80);
SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) result
FROM employees;
SELECT last_name,
COALESCE(commission_pct, salary, 10) comm
FROM employees
ORDER BY commission_pct;
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM employees;
DECODE(col|expression, search1, result1
[, search2, result2,...,]
[, default])
SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;
SELECT last_name, salary,
DECODE (TRUNC(salary/2000, 0),
0, 0.00,
1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45) TAX_RATE
FROM employees
WHERE department_id = 80;
SQL COMMANDS
To copy a table from
existing table
: INSERT INTO LSG(ARMYNO, NAME, EMPLOYMENT, MGR,
DOE, PAY, DA, DEPTNO)
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL,
COMM, DEPTNO
FROM EMP
WHERE DEPTNO = 20;
5 rows created.
INSERT INTO LSG(ARMYNO, NAME, EMPLOYMENT, MGR,
DOE, PAY, DA, DEPTNO)
SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL,
COMM, DEPTNO
FROM EMP
WHERE HIREDATE LIKE '23-JAN-82';
To create a table from
an existing table.
: create table class (empno,ename, job, mgr, hiredate,
sal, comm, deptno)
2 as select armyno, name, employment, mgr, doe, pay,
da, deptno
3 from lsg
4 where deptno = 40;
Table created.
To delete a row : delete from lsg
where armyno like 7934;
To update/modify the
info present in a table
: EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
7934 MILLER CLERK 7782 23-JAN-82 1300 10
update class
set job = (select job from emp where EMPNO = 7902),
SAL = (SELECT SAL FROM EMP WHERE EMPNO = 7902)
WHERE JOB = 'CLERK';
1 row updated.SQL> SELECT *FROM CLASS;
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
7934 MILLER ANALYST 7782 23-JAN-82 3000 10
DISTINCT SQL> SELECT DISTINCT DEPTNO
2 FROM LSG;
DEPTNO
---------
10
20
30
COUNT WITH DISTINCT AND
COUNT FOR ALL & FOR A
PARTICULAR FIELD
: SQL> SELECT COUNT(DISTINCT DEPTNO)
2 FROM LSG;
COUNT(DISTINCTDEPTNO)
---------------------
3
SQL> SELECT COUNT(*)
2 FROM EMP;
COUNT(*)
---------
14
SQL> SELECT COUNT (*) COMM
2 FROM EMP;
COMM
---------
14
TO CONVERT DATE
DATETYPE TO CHAR VALUE: SQL> SELECT EMPNO, ENAME, TO_CHAR(HIREDATE, 'MONTH DD,
YYYY HH:MI:SS A.M.') "NEW DATE"
2 FROM CLASS
3 WHERE EMPNO = 7934;
EMPNO ENAME NEW DATE
--------- ---------- --------------------------------
7934 MILLER JANUARY 23, 1982 12:00:00 A.M.
ROUND : SQL> SELECT ROUND (SYSDATE, 'MONTH')
2 FROM DUAL;
ROUND(SYS
---------
01-DEC-05
SQL> SELECT ROUND (SYSDATE, 'YEAR')
2 FROM DUAL;
ROUND(SYS
---------
01-JAN-06
SQL> SELECT ROUND(43.923, 2)
2 FROM DUAL;
ROUND(43.923,2)
---------------
43.92
SQL> SELECT ROUND (43.923, -1)
2 FROM DUAL;
ROUND(43.923,-1)
----------------
40
SQL> SELECT ROUND (43.923, -2)
2 FROM DUAL;
ROUND(43.923,-2)
----------------
0
TRUNC : SQL> SELECT TRUNC (SYSDATE, 'MONTH')
2 FROM DUAL;
TRUNC(SYS
---------
01-DEC-05
SQL> SELECT TRUNC (SYSDATE, 'YEAR')
2 FROM DUAL;
TRUNC(SYS
---------
01-JAN-05
ADD_MONTHS : SQL> SELECT ADD_MONTHS (DOE, 4)
2 FROM LSG;
ADD_MONTH
---------
17-APR-81
20-JUN-81
MONTHS_BETWEEN : SQL> SELECT MONTHS_BETWEEN ('08-SEP-81','23-JAN-82')
2 FROM LSG;
MONTHS_BETWEEN('08-SEP-81','23-JAN-82')
---------------------------------------
-4.483871
SQL> SELECT MONTHS_BETWEEN ('23-JAN-82', '08-SEP-81')
2 FROM LSG;
MONTHS_BETWEEN('23-JAN-82','08-SEP-81')
---------------------------------------
4.483871
NEXT_DAY : SQL> SELECT NEXT_DAY ('23-JAN-82', 'SUNDAY')
2 FROM DUAL;
3 NEXT_DAY
4 ---------
5 25-JAN-82
SQL> SELECT DOE, DOE+7
2 FROM LSG;
DOE DOE+7
--------- ---------
17-DEC-80 24-DEC-80
CHARACTER FUNCTIONS
LOWER
UPPER
INITCAP
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE LOWER(ENAME) = 'smith';
EMPNO ENAME SAL DEPTNO
----- ---------- --------- ---------
7369 SMITH 800 20
SQL> SELECT EMPNO, ENAME, SAL, DEPTNO
2 FROM EMP
3 where initcap(ename) = 'Smith';
EMPNO ENAME SAL DEPTNO
--------- ---------- --------- ---------
7369 SMITH 800 20
select empno, ename, sal, deptno
from EMP
WHERE UPPER(ENAME)='SMITH';
EMPNO ENAME SAL DEPTNO
----- ---------- --------- ---------
7369 SMITH 800 20
ORDERBY
ASCENDING OR DESCENDING: SQL> SELECT ENAME, SAL, DEPTNO
2 FROM EMP
3 ORDER BY DEPTNO DESC;
ENAME SAL DEPTNO
---------- --------- ---------
ALLEN 1600 30
WARD 1250 30
MARTIN 1250 30
JAMES 950 30
NOT IN : SQL> SELECT *FROM EMP
2 WHERE DEPTNO NOT IN(10,20);
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
IN : SQL> SELECT *FROM EMP
2 WHERE DEPTNO IN (10,20);
EMPNO ENAME JOB MGR HIREDATE SAL COMM
DEPTNO
--------- ---------- --------- --------- --------- --------- --------- ---------
7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
BETWEEN : SQL> SELECT ENAME, SAL, DEPTNO FROM EMP
2 WHERE SAL BETWEEN 1500 AND 5000;
ENAME SAL DEPTNO
---------- --------- ---------
ALLEN 1600 30
JONES 2975 20
NOT BETWEEN : SQL> SELECT ENAME, SAL, DEPTNO FROM EMP
2 WHERE SAL NOT BETWEEN 1500 AND 5000;
ENAME SAL DEPTNO
---------- --------- ---------
SMITH 800 20
WARD 1250 30
MARTIN 1250 30
LIKE : SQL> SELECT ENAME, JOB, SAL, DEPTNO FROM EMP
2 WHERE JOB LIKE '%AN%';
ENAME JOB SAL DEPTNO
---------- --------- --------- ---------
ALLEN SALESMAN 1600 30
WARD SALESMAN 1250 30
JONES MANAGER 2975 20
NOT LIKE : SQL> SELECT ENAME, JOB, SAL, DEPTNO FROM EMP
2 WHERE JOB NOT LIKE '%MAN';
ENAME JOB SAL DEPTNO
---------- --------- --------- ---------
SMITH CLERK 800 20
JONES MANAGER 2975 20
BLAKE MANAGER 2850 30
CLARK MANAGER 2450 10
GROUP FUNCTION
AVG, SUM, MAX, MIN,
COUNT,
: SQL> SELECT AVG(SAL), MAX(SAL), MIN(SAL), SUM(SAL)
2 FROM EMP
3 WHERE DEPTNO = 10
4 ORDER BY DEPTNO;
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)
--------- --------- --------- ---------
2916.6667 5000 1300 8750
NVL : SQL> SELECT NVL(COMM,1)
2 FROM EMP;
NVL(COMM,1)
-----------
1
300
500
1
1400
1
SQL> SELECT NVL(COMM, (COMM*12))
2 FROM EMP;
NVL(COMM,(COMM*12))
-------------------
300
500
1400
0
GROUPT BY FUNCTION : SQL> SELECT DEPTNO, JOB, SUM(SAL)
2 FROM EMP
3 GROUP BY DEPTNO, JOB ;
DEPTNO JOB SUM(SAL)
--------- --------- ---------
10 CLERK 1300
10 MANAGER 2450
SQL> SELECT DEPTNO, JOB, SUM(SAL)
2 FROM EMP
3 GROUP BY JOB, DEPTNO ;
DEPTNO JOB SUM(SAL)
--------- --------- ---------
20 ANALYST 6000
10 CLERK 1300