Учебники

Оператор SQL SELECT

SQL — это всеобъемлющий язык баз данных. SQL, произносится как Sequel или просто SQL, является языком компьютерного программирования, используемым для запросов к реляционным базам данных с использованием непроцедурного подхода. Когда вы извлекаете информацию из базы данных с помощью SQL, это называется запросом к базе данных.

Реляционная база данных реализуется с использованием системы управления реляционными базами данных (RDBMS). СУБД выполняет все основные функции программного обеспечения СУБД, упомянутые выше, наряду с множеством других функций, которые облегчают понимание и реализацию реляционной модели. Пользователи СУБД манипулируют данными с помощью специального языка манипулирования данными. Структуры базы данных определяются с помощью языка определения данных. Команды, которые системные пользователи выполняют для хранения и извлечения данных, могут быть введены в терминале с интерфейсом СУБД путем ввода команд или введены с использованием графического интерфейса некоторого типа. Затем СУБД обрабатывает команды.

Возможности оператора SELECT

Извлечение данных из базы данных осуществляется посредством правильного и эффективного использования SQL. Три понятия из реляционной теории охватывают возможности оператора SELECT: проекция, выбор и объединение.

  • Проекция: операция проекта выбирает только определенные столбцы (поля) из таблицы. Таблица результатов имеет подмножество доступных столбцов и может включать в себя что угодно от одного столбца до всех доступных столбцов.

  • Выбор: операция выбора выбирает подмножество строк (записей) в таблице (отношение), которые удовлетворяют условию выбора. Возможность выбора строк из полного набора результатов называется «Выбор». Это включает в себя условную фильтрацию и размещение данных. Подмножество может варьироваться от ни одной строки, если ни одна из строк не удовлетворяет условию выбора, до всех строк в таблице.

  • Объединение. Операция объединения объединяет данные из двух или более таблиц на основе одного или нескольких общих значений столбцов. Операция соединения позволяет пользователю информационной системы обрабатывать отношения, существующие между таблицами. Операция объединения является очень мощной, поскольку она позволяет пользователям системы исследовать отношения между элементами данных, которые могут не ожидаться во время разработки базы данных.

Проекция: операция проекта выбирает только определенные столбцы (поля) из таблицы. Таблица результатов имеет подмножество доступных столбцов и может включать в себя что угодно от одного столбца до всех доступных столбцов.

Выбор: операция выбора выбирает подмножество строк (записей) в таблице (отношение), которые удовлетворяют условию выбора. Возможность выбора строк из полного набора результатов называется «Выбор». Это включает в себя условную фильтрацию и размещение данных. Подмножество может варьироваться от ни одной строки, если ни одна из строк не удовлетворяет условию выбора, до всех строк в таблице.

Объединение. Операция объединения объединяет данные из двух или более таблиц на основе одного или нескольких общих значений столбцов. Операция соединения позволяет пользователю информационной системы обрабатывать отношения, существующие между таблицами. Операция объединения является очень мощной, поскольку она позволяет пользователям системы исследовать отношения между элементами данных, которые могут не ожидаться во время разработки базы данных.

Сценарий объединения таблицы РАБОТНИКОВ и ОТДЕЛОВ

Рассмотрим приведенные выше структуры таблиц. Из таблицы EMPLOYEES выбирается имя, имя_подразделения и зарплата для одного сотрудника. Извлечение сведений о сотруднике, чья зарплата составляет менее 5000, из таблицы EMPLOYEES — Выбор. Выбор сотрудника по имени, названию отдела путем присоединения к СОТРУДНИКАМ и ОТДЕЛЕНИЯМ — Присоединение.

Базовый оператор SELECT

Основной синтаксис для оператора SELECT представлен ниже.

SELECT  [DISTINCT | ALL] {* | select_list}
FROM {table_name [alias] | view_name} 
    [{table_name [alias]  | view_name}]...  
[WHERE  condition]
[GROUP BY  condition_list]
[HAVING  condition]
[ORDER BY  {column_name | column_#  [ ASC | DESC ] } ...

Предложение SELECT является обязательным и выполняет операцию реляционного проекта.

Предложение FROM также является обязательным. Он идентифицирует одну или несколько таблиц и / или представлений, из которых можно извлечь данные столбца, отображаемые в таблице результатов.

Предложение WHERE является необязательным и выполняет операцию реляционного выбора. Он указывает, какие строки должны быть выбраны.

Предложение GROUP BY не является обязательным. Он организует данные в группы по одному или нескольким именам столбцов, перечисленным в предложении SELECT.

Необязательное предложение HAVING устанавливает условия относительно того, какие группы включать в таблицу результатов. Группы определяются предложением GROUP BY.

Предложение ORDER BY не является обязательным. Он сортирует результаты запроса по одному или нескольким столбцам в порядке возрастания или убывания.

Арифметические выражения и значения NULL в инструкции SELECT

Арифметическое выражение может быть создано с использованием имен столбцов, операторов и постоянных значений для встраивания выражения в оператор SELECT. Оператор, применимый к столбцу, зависит от типа данных столбца. Например, арифметические операторы не будут соответствовать буквенным значениям символов. Например,

SELECT employee_id, sal * 12 ANNUAL_SAL
FROM employees;

Приведенный выше запрос содержит арифметическое выражение (sal * 12) для расчета годовой зарплаты каждого сотрудника.

Арифметические операторы

Операторы действуют на столбцы (известные как операнды), чтобы привести к другому результату. В случае нескольких операторов в выражении порядок эваляции определяется приоритетом оператора. Вот элементарные правила приоритета —

  • Умножение и деление происходят до сложения и вычитания.

  • Операторы с одинаковым приоритетом оцениваются слева направо.

  • Используйте паретезы, чтобы переопределить поведение операторов по умолчанию.

Умножение и деление происходят до сложения и вычитания.

Операторы с одинаковым приоритетом оцениваются слева направо.

Используйте паретезы, чтобы переопределить поведение операторов по умолчанию.

Ниже в таблице приведены приоритеты операторов в таких случаях. Операция Символ оператора уровня приоритета

Description   Operator	Precedence	   
Addition	+	Lowest	   
Subtraction	-	Lowest	   
Multiplication	*	Medium	   
Division	/	Medium	   
Brackets	( )	Highest	 

Изучите приведенные ниже запросы (а), (б) и (в)

  • SQL> SELECT 2*35 FROM DUAL;
  • SQL> SELECT salary + 1500 FROM employees;
  • SQL> SELECT first_name, salary, salary + (commission_pct* salary) FROM employees;

Запрос (а) умножает два числа, в то время как (б) показывает прибавку 1500 долларов к зарплате всех сотрудников. Запрос (c) показывает добавление комиссионного компонента к зарплате сотрудника. В соответствии с предыдущим, первая комиссия будет рассчитываться на зарплату, а затем добавляется к зарплате.

Колонка Псевдоним

Псевдоним используется для переименования столбца или выражения во время отображения. Псевдоним столбца или выражения отображается как заголовок в выводе запроса. Это полезно для обеспечения значимого заголовка для длинных выражений в запросе SELECT. По умолчанию псевдоним отображается в верхнем регистре в выводе запроса без пробелов. Чтобы переопределить это поведение, псевдоним должен быть заключен в двойные кавычки, чтобы сохранить регистр и пробелы в имени псевдонима.

SELECT price * 2 as DOUBLE_PRICE, price * 10 "Double Price"
FROM products;

DOUBLE_PRICE	Double Price
------------	------------
39.9			39.9
60			60
51.98			51.98

Операторы конкатенации

Оператор конкатенации можно использовать для объединения двух строковых значений или выражений в запросе SELECT. Символ двойной вертикальной черты используется в качестве оператора конкатенации строк. Это применимо только для символьных и строковых значений столбцов, приводящих к новому символьному выражению. пример

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM dual;

Приведенный выше запрос показывает объединение двух символьных литералов значений.

литералы

Любое жестко закодированное значение, которое не хранится в базе данных в предложении SELECT, известно как Literal. Это может быть число, символ или значение даты. Значения символов и даты должны быть заключены в кавычки. Рассмотрим приведенные ниже SQL-запросы. Примеры использования литералов разных типов данных в SQL-запросах.

В приведенном ниже запросе используются два символьных литерала для их объединения.

SQL> SELECT 'ORACLE'||' CERTIFICATION' FROM DUAL

В приведенном ниже запросе используются символьные литералы для печати зарплаты сотрудника.

SQL> SELECT first_name ||'earns'|| salary||' as of '|||sysdate
FROM employees

Оператор цитаты

Оператор цитаты используется для указания собственного разделителя кавычек. Вы можете выбрать удобный разделитель, добавляющий данные.

SELECT 	department_name|| ' Department' ||q'['s Manager Id: ]'|| manager_id
FROM departments;

НОЛЬ

Если столбец не имеет определенного значения, он считается равным NULL. Значение NULL обозначает неизвестный или недоступный. Это не ноль для числовых значений, не пробел для символьных значений.

Столбцы со значением NULL могут быть выбраны в запросе SELECT и могут быть частью арифметического выражения. Любое арифметическое выражение, использующее значения NULL, приводит к NULL. По этой причине столбцы со значением NULL должны обрабатываться по-разному, указывая их альтернативные значения с помощью функций Oracle, таких как NVL или NULLIF.

SQL> SELECT NULL + 1000 NUM 
FROM DUAL;

NUM
--------

DISTINCT Ключевое слово

Если ожидается, что данные будут иметь повторяющиеся результаты, используйте ключевое слово DISTINCT, чтобы устранить дубликаты и отобразить только уникальные результаты в выводе запроса. Только выбранные столбцы проверяются на дублирование, и строки будут логически исключены из результатов запроса. Следует отметить, что ключевое слово DISTINCT должно появляться сразу после предложения SELECT.

Простой запрос ниже демонстрирует использование DISTINCT для отображения уникальных идентификаторов отделов из таблицы EMPLOYEES.

SQL> SELECT DISTINCT DEPARTMENT_ID 
FROM employees;

DEPARTMENT_ID
---------------
10
20
30
40

Команда ОПИСАТЬ

Структурные метаданные таблицы могут быть получены путем запроса базы данных для списка столбцов, которые ее составляют, с помощью команды DESCRIBE. В нем будут перечислены имена используемых столбцов, их нулевое свойство и тип данных.

Синтаксис:

DESC[RIBE] [SCHEMA].object name

Например,

DESC EMPLOYEE

отобразит структуру таблицы EMPLOYEE, то есть столбцы, их типы данных, точность и свойство обнуляемости.