В этом учебном материале по Oracle вы узнаете, как использовать оператор SELECT с синтаксисом, примерами и практическими упражнениями.
Описание
Oracle оператор SELECT используется для извлечения записей из одной или нескольких таблиц или представлений в базе данных Oracle.
Синтаксис
FROM tables
[WHERE conditions];
Параметры или аргументы
expressions - поля или расчеты, которые вы хотите получить.
tables – таблицы из которых вы хотите выгрузить данные. После оператора FROM должна быть указана хотя бы одна таблица.
WHERE conditions. Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны. Если не предусмотрено никаких условий, то будут выбраны все записи.
ПРИМЕР – ВЫБОР ВСЕХ ПОЛЕЙ ИЗ ОДНОЙ ТАБЛИЦЫ
Рассмотрим пример, показывающий как использовать Oracle оператор SELECT, который выбирает все поля из таблицы.
1 2 3 4 |
SELECT * FROM suppliers WHERE city = 'London' ORDER BY city DESC; |
В этом примере Oracle оператора SELECT, мы использовали *
, чтобы просмотреть все поля из таблицы suppliers, где suppliers проживает в городе London. Результирующий набор сортируется по городу в порядке убывания.
ПРИМЕР - ВЫБОР ОТДЕЛЬНЫХ ПОЛЕЙ ИЗ ОДНОЙ ТАБЛИЦЫ
Вы также можете использовать Oracle оператор SELECT для выбора отдельных полей из таблицы.
1 2 3 4 5 6 |
SELECT supplier_name, city, state FROM suppliers WHERE supplier_id > 1000 ORDER BY supplier_name ASC, city DESC; |
Этот пример Oracle SELECT возвратит только поля supplier_name, city, state из таблицы suppliers, где значение supplier_id превышает 1000. Результаты сортируются по supplier_name в порядке возрастания, а city в порядке убывания.
ПРИМЕР - ВЫБОР ПОЛЕЙ ИЗ НЕСКОЛЬКИХ ТАБЛИЦ
Вы также можете использовать Oracle оператор SELECT для извлечения полей из нескольких таблиц.
1 2 3 4 5 6 |
SELECT orders.order_id, suppliers.supplier_name FROM suppliers INNER JOIN orders ON suppliers.supplier_id = orders.supplier_id ORDER BY order_id; |
Этот Oracle пример SELECT соединяет в результирующий набор две таблицы, показывает поля order_id и supplier_name, где значение supplier_id находятся как в таблице suppliers, так и в таблице orders. Результаты сортируются по order_id в порядке возрастания.
Подробнее о Oracle joins.
Практическое упражнение №1
На основании таблицы employees (служащих) ниже, выберите все поля, чья зарплата меньше или равна $ 52,500 (сортировка не требуется):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--создаем таблицу employees CREATE TABLE employees ( employee_number int NOT NULL, employee_name char(50) NOT NULL, salary int, CONSTRAINT employees_pk PRIMARY KEY (employee_number) ); --вставляем записи в таблицу employees insert into employees values (1,'Kuzjakin',3500); insert into employees values (2,'Bakini',7200); insert into employees values (3,'Galingen',51000); insert into employees values (4,'Medajan',68000); insert into employees values (5,'Simkhan',85200); |
Содержимое таблицы employees:
employee_number | employee_name | salary |
---|---|---|
1 | Kuzjakin | 3500 |
2 | Bakini | 7200 |
3 | Galingen | 51000 |
4 | Medajan | 68000 |
5 | Simkhan | 85200 |
Решение для практического упражнения № 1:
Следующий Oracle оператор SELECT будет выбирать записи из таблицы employees:
1 2 3 |
SELECT * FROM employees WHERE salary <= 52500; |
В результате выборки получим:
employee_number | employee_name | salary |
---|---|---|
1 | Kuzjakin | 3500 |
2 | Bakini | 7200 |
3 | Galingen | 51000 |
Практическое упражнение №2
На основании таблицы suppliers ниже, выберите уникальные значения city, которые находятся в штате Florida и упорядочить результаты в порядке убывания по city (городам):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--создаем таблицу suppliers CREATE TABLE suppliers ( supplier_id int NOT NULL, supplier_name char(50) NOT NULL, city char(50), state char(25), CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) ); --вставляем записи в таблицу suppliers insert into suppliers values (1,'Mari','Houston','Texas'); insert into suppliers values (2,'Frida',' Melbourne', 'Florida'); insert into suppliers values (3,'Madlen','Phoenix','Arizona'); insert into suppliers values (4,'Valentina','San Diego','California'); insert into suppliers values (5,'Amba','Jacksonville','Florida'); |
Содержимое таблицы suppliers:
1 | Mari | Houston | Texas |
2 | Frida | Philadelphia | Pennsylvania |
3 | Madlen | Phoenix | Arizona |
4 | Valentina | SanDiego | California |
5 | Amba | Jacksonville | Florida |
Решение для практического упражнения № 2:
Следующий Oracle оператор SELECT выберет записи из таблицы suppliers:
1 2 3 4 |
SELECT DISTINCT city FROM suppliers WHERE state = 'Florida' ORDER BY city DESC; |
В результате выборки получим:
city |
---|
Jacksonville |
Melbourne |
Практическое упражнение №3
На основании таблиц suppliers и orders ниже, выберите поля supplier_id и supplier_name из таблицы suppliers, и выберите поле order_date из таблицы orders, где значение поля supplier_id в таблице suppliers соответствует значению поля supplier_id в таблице orders. Сортировать результаты по supplier_id в порядке убывания.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
--создаем таблицу suppliers CREATE TABLE suppliers ( supplier_id int NOT NULL, supplier_name char(50) NOT NULL, city char(50), state char(25), CONSTRAINT suppliers_pk PRIMARY KEY (supplier_id) ); --вставляем записи в таблицу suppliers insert into suppliers values (1,'Mari','Houston','Texas'); insert into suppliers values (2,'Frida',' Melbourne', 'Florida'); insert into suppliers values (3,'Madlen','Phoenix','Arizona'); insert into suppliers values (4,'Valentina','San Diego','California'); insert into suppliers values (5,'Amba','Jacksonville','Florida'); |
Содержимое таблицы suppliers:
1 | Mari | Houston | Texas |
2 | Frida | Philadelphia | Pennsylvania |
3 | Madlen | Phoenix | Arizona |
4 | Valentina | SanDiego | California |
5 | Amba | Jacksonville | Florida |
1 2 3 4 5 6 7 8 9 10 11 12 |
--создаем таблицу orders CREATE TABLE orders ( order_id int NOT NULL, supplier_id int NOT NULL, order_date date NOT NULL, quantity int, CONSTRAINT orders_pk PRIMARY KEY (order_id) ); --вставляем записи в таблицу orders insert into orders values (1,1,'05.05.2014',100); insert into orders values (2,3,'12.02.2015',300); insert into orders values (3,5,'12.01.2016',500); |
Содержимое таблицы orders:
1 | 1 | 05.05.2014 | 100 |
2 | 3 | 12.02.2015 | 300 |
3 | 5 | 12.01.2016 | 500 |
Решение для практического упражнения № 3:
Следующий Oracle оператор SELECT выберет записи из таблиц suppliers и orders (с помощью SQL INNER JOIN):
1 2 3 4 5 6 7 |
SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date FROM suppliers INNER JOIN orders ON suppliers.supplier_id = orders.supplier_id ORDER BY supplier_id DESC; |
В результате выборки получим:
5 | Amba | 12.01.2016 |
3 | Madlen | 12.02.2015 |
1 | Mari | 05.05.2014 |