Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала
- Название:Oracle SQL. 100 шагов от новичка до профессионала
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:11
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Максим Чалышев - Oracle SQL. 100 шагов от новичка до профессионала краткое содержание
Более 500 практических заданий.
Более 1000 разобранных примеров.
Учебник справочник по языку SQL.
Oracle SQL. 100 шагов от новичка до профессионала - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Можно ли в одном запросе использовать несколько проверок, проверить несколько колонок на пустые значения?
Да, разумеется; и вот пример такого запроса:
Как запретить добавлять в таблицу пустые значения?
Этот вопрос подробно рассмотрен в шаге 9.
Контрольные вопросы и задания для самостоятельного выполнения
1. Найдите ошибку в запросе:
2. Повторите запросы из примеров.
3. Выберите телефоны из таблицы AUTO. Вместо пустых телефонов выведите: NO PHONE, нет.
Шаг 24. Оператор LIKE
Введение
Для более удобной работы с текстовыми данными в запросах SQL существует специальный оператор — LIKE, который устанавливает соответствие значения текстовой ячейки некоторому заданному шаблону. LIKE — пожалуй, наиболее часто используемый оператор для поиска, фильтра текстовых данных в таблице.
Теория и практика
В зависимости от того, соответствует ли значение в заданной ячейке таблицы шаблону LIKE, строка будет выведена в запросе или нет; естественно, если значение ячейки не соответствует шаблону, строка не выводится в запросе SELECT.
Синтаксис
Шаблон LIKE несложный и состоит из следующих специальных символов:
символ подчеркивание _заменяет любой символ;
символ процент %заменяет собой любое количество различных символов.
Примеры шаблонов LIKE
«%им» — выведет все записи, где значение в заданной колонке заканчивается «им», то есть любое количество символов (%), затем «им»;
«_осква» — выведет все записи, где значение в заданной колонке заканчивается «осква»;
«%лек%' — выведет все записи, где значение в заданной колонке содержит слог «лег»;
«Москв%' — выведет все записи начинающиеся Москв — то есть Москв, а затем любые символы.
Следует помнить, что LIKE применяется только для текстовых данных в ячейке таблицы, а также то, что шаблон указывается в одинарных кавычках.
Кроме LIKE допустимо использовать конструкцию NOT LIKE.
Синтаксис
Примеры
Выбрать из таблицы Маn людей *, имена (FIRSTNAME) которых начинаются с буквы А.
Рисунок 53. Запрос к MAN с LIKE
Выбрать из таблицы Маn людей *, имена (FIRSTNAME) которых заканчиваются на «ег».
Рисунок 54. Запрос к MAN c LIKE
Выбрать из таблицы Маn имена и фамилии (FIRSTNAME, LASTNAME) людей, фамилии (LASTNAME) которых содержат слог «нов».
Рисунок 55. Запрос к MAN c LIKE
Выбрать из таблицы CITY города *, в названии (CITYNAME) которых вторая буква «л».
Рисунок 56. Запрос к CITY c LIKE
Выбрать из таблицы CITY города *, названия которых (CITYNAME) не начинаются с «K».
Рисунок 57. Запрос к CITY c NOT LIKE
Важные замечания
При использовании шаблонов с оператором LIKE в шаблоне необходимо соблюдать заглавные или строчные буквы, то есть регистр букв имеет значение при использовании LIKE.
Вопросы учеников
Приведите пример использования символа подчеркивания в шаблоне.
Да, вот пример:
Будут выбраны строки, начинающиеся с любого символа и заканчивающиеся на ИНИЙ.
Контрольные вопросы и задания для самостоятельного выполнения
1. Выберите из таблицы MAN всех людей *, чьи фамилии не начинаются со слога «Ив», напишите SQL-запрос.
2. Выберите из таблицы MAN всех людей *, в чьих именах есть русская буква «е».
3. Выберите из таблицы CITY города, где третья буква в наименовании «а».
Шаг 25. Работаем с датами
Введение
Для работы с календарным типом «дата-время» в языке SQL предусмотрено множество сервисных функций. Одни отвечают за преобразование типа «дата-время» в строку, другие позволяют выполнять операции с этим типом. Сейчас мы рассмотрим основные функции, наиболее часто применяемые на практике.
Теория и практика
Напоминаю: тип DATE содержит дату и время, это может быть, например, время заполнения накладной, дата и время создания записи в таблице.
Функция SYSDATE возвращает текущие дату и время.
Если мы попытаемся найти предыдущий день, тогда
SYSDATE-1 — предыдущий день, то же самое время;
SYSDATE-1/24*3 текущее время — 3 часа назад, то есть единица в типе данных «дата-время» (DATE) означает сутки, а 1/24 (1 час).
Функция TRUNC обрезает время из даты, оставляя только дату.
Рассмотрим еще несколько примеров.
— 01.09.2012
Первый день месяца, другая запись:
— 01.09.2012
Первый день года:
— 01.01.2012
Первый день года, другая запись:
Функция EXTRACT предназначена для того, чтобы извлечь месяц, год, день из типа «дата время» (DATE).
Примеры работы функции EXTRACT
Извлечь месяц из даты.
Извлечь день из текущей даты.
Извлечь год из текущей даты.
Преобразование даты в строку и строки в дату
Преобразование даты в строку делается с использованием функции TO_CHAR.
Синтаксис TO_CHAR (dt, формат даты):
формат даты
• YYYY — год;
• MM — месяц;
• DD — день;
• DN — день недели;
• hh24 — час;
• mi — минута;
• ss — секунда.
Преобразование строки в тип даты.
Синтаксис TO_DATE (строка, формат даты)
Примеры
Преобразовать текущую дату к строке в формате DD.MM.YYYY hh24:mi.
Преобразовать вчерашнюю дату к строке DD.MM.YYYY hh24:mi.
Преобразовать следующую строку к дате ’01.11.2011 21:11».
Преобразовать к строке в запросе SELECT даты создания всех автомобилей BMW в формате DD.MM.YYYY hh24:mi из таблицы AUTO к строке:
Важные замечания
Универсальный формат даты
В SQL ORACLE диалекта существует универсальная конструкция для работы с данными типа DATA, «дата-время» — DATE’YYYY-MM-DD», где YYYY — текущий год, ММ — месяц, DD — день.
Примеры использования универсальной конструкции
Из таблицы AUTO вывести все автомобили, выпущенные после 01.05.2011.
Из таблицы AUTO вывести все автомобили, выпущенные до 01.10.2014.
Из таблицы AUTO вывести все автомобили, выпущенные после 01.01.2010 и до 01.10.2014, используя BETWEEN.
Формат преобразования даты
Формат преобразования даты при преобразовании строки в дату должен соответствовать формату преобразуемой даты, иначе вы получите ошибку соответствия форматов.
Вопросы учеников
Как найти разницу между двумя датами в днях, часах, минутах?
В MS SQL для этого используется специальная функция DATEdiff, а в ORACLE все более сложно. Воспользуемся функцией NUMTODSINTERVAL и напишем запрос.
Как найти дату-время, которая будет на 50 секунд позже текущего момента, как написать такой запрос?
Пример такого запроса: мы знаем, что один день равен 1, соответственно час 1/24, минута 1/ (24*60) и секунда 1/ (24*60*60) = 86400. Соответственно, запрос:
А если нам нужны миллисекунды, что делать?
Для этого существует специальный тип данных TIMESTAMP, но с особенностями работы с этим типом данных мы познакомимся чуть позже.
Читать дальшеИнтервал:
Закладка: