Practical 1: SQL for Beginners - Data Manipulation and Retrieval
2025, March 17
This explanation is designed for beginners with no prior knowledge of SQL, so that when you read the actual code later, you understand exactly what each part is meant to do.
UPDATE
command is used to change existing data in a table. In our example, it sets the department number (deptno
) to a null value for the employee whose name matches a specific condition. UPDATE
command that tells the database, “For every employee with the name 'KING', remove (or set to null) the department number.”SELECT
statement is used to retrieve data from one or more tables. SELECT
as asking the database, “Show me these pieces of information.” You can ask for all the data (all columns and rows) or just specific columns, and you can also choose to show only rows that meet certain conditions.WHERE
clause filters the data by specifying conditions that the rows must meet. WHERE
clause to check that condition.LIKE
operator allows you to search for patterns within text. %
symbol represents any sequence of characters (it’s like saying “anything goes here”). _
symbol represents any single character.ename like 'M_R_IN'
means you are looking for names that start with "M," have any single character in the second spot, then "R," another single character, and end with "IN" (which would match "MARTIN").ORDER BY
clause arranges the results in a specific order—either ascending (smallest to largest, or alphabetically) or descending (largest to smallest, or reverse alphabetical). ORDER BY
to specify that order. You can even order by a column's number (for example, order by the second column in the result).GROUP BY
collects rows that have the same values in specified columns into summary rows—like grouping employees by department. SUM
), the average salary (AVG
), or how many employees there are (COUNT
) in each department.HAVING
clause filters groups based on aggregate function results, similar to how WHERE
filters individual rows. HAVING
to show only those departments where the average salary is above 2000.When you see the code, you're looking at a set of SQL operations that together allow you to change, retrieve, summarize, and combine data from one or more tables. Each part of the code is a building block that, when combined, makes powerful data manipulation and retrieval possible:
UPDATE
), WHERE
and LIKE
), ORDER BY
), GROUP BY
along with aggregate functions and HAVING
), SQL> update emp set deptno = null where ename like 'KING';
1 row updated.
SQL> clear scree
SQL> update emp set deptno = null where ename like 'KING';
1 row updated.
SQL> select *from emp ;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select * from emp where ename like '%R';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
SQL> select * from emp where ename like 'M%R';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7934 MILLER CLERK 7782 23-JAN-82 1700 10
SQL> select * from emp where ename like 'M_R_IN';
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
SQL> select * from emp where ename = 'M_R_IN';
no rows selected
SQL> select * from emp order by sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7566 JONES MANAGER 7839 02-APR-81 3375 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7839 KING PRESIDENT 17-NOV-81 5400
14 rows selected.
SQL> select * from emp order by sal desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7566 JONES MANAGER 7839 02-APR-81 3375 20
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7369 SMITH CLERK 7902 17-DEC-80 1200 20
14 rows selected.
SQL> select * from emp order by 2 desc;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7934 MILLER CLERK 7782 23-JAN-82 1700 10
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7839 KING PRESIDENT 17-NOV-81 5400
7566 JONES MANAGER 7839 02-APR-81 3375 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
14 rows selected.
SQL> select * from emp order by deptno, sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7934 MILLER CLERK 7782 23-JAN-82 1700 10
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7839 KING PRESIDENT 17-NOV-81 5400
14 rows selected.
SQL> select * from emp order by deptno desc, sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7566 JONES MANAGER 7839 02-APR-81 3375 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7934 MILLER CLERK 7782 23-JAN-82 1700 10
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
14 rows selected.
SQL> select * from emp order by sal where deptno = 30;
select * from emp order by sal where deptno = 30
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
SQL> select * from emp where deptno = 30 order by sal;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
6 rows selected.
SQL> select deptno, sum(sal) from emp group by deptno;
DEPTNO SUM(SAL)
---------- ----------
5400
30 11800
10 4550
20 12875
SQL> select deptno, sum(sal), avg(sal), max(sal), min(sal), count(*) from emp group by deptno;
DEPTNO SUM(SAL) AVG(SAL) MAX(SAL) MIN(SAL) COUNT(*)
---------- ---------- ---------- ---------- ---------- ----------
5400 5400 5400 5400 1
30 11800 1966.66667 3250 1350 6
10 4550 2275 2850 1700 2
20 12875 2575 3400 1200 5
SQL> select deptno, count(*) from emp where sal >2000 group by deptno;
DEPTNO COUNT(*)
---------- ----------
1
30 1
10 1
20 3
SQL> select deptno, count(*) from emp group by deptno having avg(sal)>2000;
DEPTNO COUNT(*)
---------- ----------
1
10 2
20 5
SQL> select deptno, job , sum(sal) from emp group by deptno, job;
DEPTNO JOB SUM(SAL)
---------- --------- ----------
PRESIDENT 5400
30 MANAGER 3250
10 MANAGER 2850
20 MANAGER 3375
20 ANALYST 6800
20 CLERK 2700
30 SALESMAN 7200
30 CLERK 1350
10 CLERK 1700
9 rows selected.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select * from emp where sal>2000;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
6 rows selected.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select ename, dname from emp inner join dept on emp.deptno = dept.deptno;
ENAME DNAME
---------- --------------
BLAKE SALES
CLARK ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ADAMS RESEARCH
ENAME DNAME
---------- --------------
JAMES SALES
MILLER ACCOUNTING
13 rows selected.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select ename, dname from emp inner join dept on emp.deptno = dept.deptno;
ENAME DNAME
---------- --------------
BLAKE SALES
CLARK ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ADAMS RESEARCH
ENAME DNAME
---------- --------------
JAMES SALES
MILLER ACCOUNTING
13 rows selected.
SQL> select ename, dname from emp left outer join dept on emp.deptno = dept.deptno;
ENAME DNAME
---------- --------------
CLARK ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ADAMS RESEARCH
BLAKE SALES
ALLEN SALES
WARD SALES
MARTIN SALES
ENAME DNAME
---------- --------------
TURNER SALES
JAMES SALES
KING
14 rows selected.
SQL> select ename, dname from emp right outer join dept on emp.deptno = dept.deptno;
ENAME DNAME
---------- --------------
BLAKE SALES
CLARK ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ADAMS RESEARCH
ENAME DNAME
---------- --------------
JAMES SALES
MILLER ACCOUNTING
OPERATIONS
14 rows selected.
SQL> select ename, dname from emp full outer join dept on emp.deptno = dept.deptno;
ENAME DNAME
---------- --------------
KING
BLAKE SALES
CLARK ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ENAME DNAME
---------- --------------
ADAMS RESEARCH
JAMES SALES
MILLER ACCOUNTING
OPERATIONS
15 rows selected.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select w.ename worker, m.ename manager from emp w inner join emp m where w.mgr = m.empno;
select w.ename worker, m.ename manager from emp w inner join emp m where w.mgr = m.empno
*
ERROR at line 1:
ORA-00905: missing keyword
SQL> select w.ename worker, m.ename manager from emp w inner join emp m on w.mgr = m.empno;
WORKER MANAGER
---------- ----------
BLAKE KING
CLARK KING
JONES KING
ALLEN BLAKE
WARD BLAKE
MARTIN BLAKE
TURNER BLAKE
JAMES BLAKE
MILLER CLARK
SCOTT JONES
FORD JONES
WORKER MANAGER
---------- ----------
ADAMS SCOTT
SMITH FORD
13 rows selected.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7566 JONES MANAGER 7839 02-APR-81 3375 20
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
7369 SMITH CLERK 7902 17-DEC-80 1200 20
7499 ALLEN SALESMAN 7698 20-FEB-81 2000 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1650 500 30
7654 MARTIN SALESMAN 7698 28-SEP-81 1650 1400 30
7844 TURNER SALESMAN 7698 08-SEP-81 1900 30
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-MAY-87 1500 20
7900 JAMES CLERK 7698 03-DEC-81 1350 30
7934 MILLER CLERK 7782 23-JAN-82 1700 10
14 rows selected.
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select ename, dname from emp, dept;
ENAME DNAME
---------- --------------
KING ACCOUNTING
BLAKE ACCOUNTING
CLARK ACCOUNTING
JONES ACCOUNTING
SCOTT ACCOUNTING
FORD ACCOUNTING
SMITH ACCOUNTING
ALLEN ACCOUNTING
WARD ACCOUNTING
MARTIN ACCOUNTING
TURNER ACCOUNTING
ENAME DNAME
---------- --------------
ADAMS ACCOUNTING
JAMES ACCOUNTING
MILLER ACCOUNTING
KING RESEARCH
BLAKE RESEARCH
CLARK RESEARCH
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN RESEARCH
ENAME DNAME
---------- --------------
WARD RESEARCH
MARTIN RESEARCH
TURNER RESEARCH
ADAMS RESEARCH
JAMES RESEARCH
MILLER RESEARCH
KING SALES
BLAKE SALES
CLARK SALES
JONES SALES
SCOTT SALES
ENAME DNAME
---------- --------------
FORD SALES
SMITH SALES
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ADAMS SALES
JAMES SALES
MILLER SALES
KING OPERATIONS
BLAKE OPERATIONS
ENAME DNAME
---------- --------------
CLARK OPERATIONS
JONES OPERATIONS
SCOTT OPERATIONS
FORD OPERATIONS
SMITH OPERATIONS
ALLEN OPERATIONS
WARD OPERATIONS
MARTIN OPERATIONS
TURNER OPERATIONS
ADAMS OPERATIONS
JAMES OPERATIONS
ENAME DNAME
---------- --------------
MILLER OPERATIONS
56 rows selected.
SQL> select ename, dname from emp natural join dept;
ENAME DNAME
---------- --------------
BLAKE SALES
CLARK ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
FORD RESEARCH
SMITH RESEARCH
ALLEN SALES
WARD SALES
MARTIN SALES
TURNER SALES
ADAMS RESEARCH
ENAME DNAME
---------- --------------
JAMES SALES
MILLER ACCOUNTING
13 rows selected.
SQL> select * from student;
ROLL NAME CITY
---------- ---------- ----------
1 Roshan Bangluru
2 Srijan Dhanbad
SQL> select dname, name from dept natural join student;
DNAME NAME
-------------- ----------
ACCOUNTING Roshan
RESEARCH Roshan
SALES Roshan
OPERATIONS Roshan
ACCOUNTING Srijan
RESEARCH Srijan
SALES Srijan
OPERATIONS Srijan
8 rows selected.
SQL> select d1.dname, d2.dname from dept d1 natural join dept d2;
select d1.dname, d2.dname from dept d1 natural join dept d2
*
ERROR at line 1:
ORA-25155: column used in NATURAL join cannot have qualifier
SQL> select max(sal) from emp;
MAX(SAL)
----------
5400
SQL> select * from emp where sal = (select max(sal) from emp);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 17-NOV-81 5400
SQL> select * from emp e where sal = (select max(sal) from emp f where e.deptno = f.deptno);
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 01-MAY-81 3250 30
7782 CLARK MANAGER 7839 09-JUN-81 2850 10
7788 SCOTT ANALYST 7566 19-APR-87 3400 20
7902 FORD ANALYST 7566 03-DEC-81 3400 20
SQL> select w.ename worker, m.ename manager from emp w inner join emp m on w.mgr = m.empno;
WORKER MANAGER
---------- ----------
BLAKE KING
CLARK KING
JONES KING
ALLEN BLAKE
WARD BLAKE
MARTIN BLAKE