- •Раздел 1 Утилита sql*Plus, простые запросы выборки столбцов и строк
- •7839 King president 17-nov-81 5000 10
- •7900 James 950
- •7 Rows selected.
- •7 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •9 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •6 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •7369 Smith 800
- •Функции Oracle sql
- •9 Rows selected.
- •Раздел 3 Выборка данных из нескольких таблиц
- •20 Smith 800
- •30 James 950
- •10 Miller 1300
- •6 Rows selected.
- •6 Rows selected.
- •6 Rows selected.
- •8 Rows selected.
- •8 Rows selected.
- •14 Rows selected.
- •9 Rows selected.
- •9 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •6 Rows selected.
- •15 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •14 Rows selected.
- •7 Rows selected.
- •Раздел 4 Другие команды языка манипулирования данными dмl и обработка транзакций
- •7902 Ford analyst 7566 03-dec-81 3000 20
- •7788 Scott analyst 7566 09-dec-82 3000 20
- •Раздел 5 Создание и изменение таблиц средствами ddl
- •Раздел 6 Другие объекты базы данных
- •7934 Miller 10
- •16 Rows selected.
9 Rows selected.
Q2_7
Выбор по критерию в HAVING для GROUP BY
Должности по которым максимальная зарплата не меньше 3000
SQL> select job,max(sal) from EMP
group by job
having max(sal) >= 3000;
JOB MAX(SAL)
--------- ---------
ANALYST 3000
PRESIDENT 5000
Q2_8
Определить, сколько раз символ «S» встречается в названиях отделов
SQL> select dname from dept;
DNAME
--------------
ACCOUNTING
RESEARCH
SALES
OPERATIONS
SQL> select length(dname) from dept;
LENGTH(DNAME)
-------------
10
8
5
10
--Функция translate в строке, содержащейся в поле dname, заменяет символы из этой
-- строки, если они встречаются в списке 'AS' на символы из списка 'A'. При такой
--замене 'A' "меняется" на 'A', 'S' меняется на ..., а вот для 'S' нет замены, так как
--список замен включает только одну букву 'A'. В этом случае (когда нет замены)
--Oracle убирает букву 'S' из строки, содержащейся в поле dname.
SQL> select translate(dname,'AS','A') from dept;
TRANSLATE (DNAM)
--------------
ACCOUNTING
REEARCH
ALE
OPERATION
SQL> select length(translate(dname,'AS','A')) from dept;
LENGTH(TRANSLATE(DNAME,'AS','A'))
---------------------------------
10
7
3
9
SQL> select length(dname) - length(translate(dname,'AS','A')) as NS from dept;
NS
---------
0
1
2
1
--Функция TRANSLATE
--Syntax
-- TRANSLATE(char, from, to)
--Purpose
-- Returns char with all occurrences of each character in from replaced by its corresponding
--character in to. Characters in char that are not in from are not replaced. The argument from
--can contain more characters than to. In this case, the extra characters at the end of from
--have no corresponding characters in to. If these extra characters appear in char, they are
--removed from the return value. You cannot use an empty string for to to remove all
--characters in from from the return value. Oracle interprets the empty string as null, and if
--this function has a null argument, it returns null.
--Example
SELECT TRANSLATE('2KRW229',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'0123456789')
"Translate example"
FROM DUAL;
Translate example
-----------------
2229
Раздел 3 Выборка данных из нескольких таблиц
3.1. Подзапросы
Q3_1
Использование подзапросов
Найти служащих , получающих минимальную зарплату
SQL> select ename name,sal from EMP
where sal=(select min(sal) from EMP);
NAME SAL
---------- ---------
SMITH 800
Q3_2
Сотрудники отдела продаж (SALES) , занимающих ту же должность , что и служащий SMITH
SQL> select EMPNO,ename,job,sal
from EMP
where job=(select job from EMP
where ename='SMITH')
and DEPTNO=(select DEPTNO from DEPT
where dname='SALES');
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7900 JAMES CLERK 950
Q3_3
Служащие получающие минимальный оклад в своем отделе
SQL> select DEPTNO dept,ename name,sal from EMP
where (sal,DEPTNO) in (select min(sal),DEPTNO
from EMP
group by DEPTNO);
DEPTNO NAME SAL
--------- ---------- ---------
