После чего уже в правой части экрана SQLFIDlle вы сможете писать необходимые запросы и выполнять учебные задания.
Учебные запросы в SQLFIDdle пишутся в текстовом поле в правой части экрана.
После создания схемы напишите следующий учебный запрос:
SELECT * FROM MAN
Нажмите RUN SQL, в нижней части экрана должен появиться результат выполнения запроса.
Рисунок 2. Пробный запрос SQLFIDlle
Если все получилось, то вы можете приступать к учебе.
Вопросы учеников
Так все-таки в каком из сервисов лучше выполнять практические задания?
В любом, лично мне больше нравится сервис APEX.
Я пытаюсь залогиниться в сервис APEX, но появляется сообщение об ошибке. В чем может быть дело?
Проверьте правильность ввода имени пользователя и пароля. Самое верхнее поле должно содержать значение SQLADV.
Во время работы с сервисом SQLFIDlle при создании схемы возникает ошибка.
Проверьте, пожалуйста, правильно ли установлен переключатель СУБД – значение выпадающего списка должно быть ORACLE 11g. Также проверьте, скопирован ли скрипт при создании схемы.
Шаг 3. Подготовка к работе. Процесс обучения. Описание интерфейса ORACLE APEX
Подготовка к работе
До шага 51 все занятия и практические упражнения можно выполнить с использованием онлайн-сервисов, в шаге 51 подробно описано, какое программное обеспечение следует установить дополнительно и как это сделать.
Процесс обучения
Как я уже говорил, самое важное в процессе обучения языку SQL – это именно практика, при этом не важно, как много вы знаете. Главное – научиться использовать свои знания в работе.
Тысяча практических задач из данной книги, прорешенных вами, даст гораздо больший эффект, чем изучение одной лишь теории.
Данная книга ориентирована исключительно на практическую работу. Теория здесь поясняется практическими примерами.
Изучив теорию и синтаксис выражения, сразу приступайте к практике, чтобы понять, как работает данный синтаксис, данное выражение.
Практические задания находятся сразу после пояснения теоретических положений. Примерный текст практического задания выглядит следующим образом:
Выберите из таблицы автомобилей (AUTO) машины синего и зеленого цветов.
Попробуйте сначала самостоятельно написать запрос.
Сравните свое решение с решением, приведенным в книге.
Если сразу не получается, тогда внимательно изучите решение, приведенное в книге, и постарайтесь понять сам принцип, как решается данная задача, что является главным в решении.
После решения каждого из заданий переходите к заданиям для самостоятельного выполнения.
В данной книге рассматривается более тысячи практических примеров и упражнений по SQL.
Кроме того, в книге есть не только практические задачи – после примеров в некоторых шагах встречаются контрольные вопросы по теоретическим материалам.
Такие вопросы необходимы для более четкого понимания изучаемой темы.
Внимательно изучите вопрос и постарайтесь дать на каждый вопрос развернутый и подробный ответ.
Некоторые названия таблиц заменены их смысловыми обозначениями. Вам следует самостоятельно понять, исходя из смысла слова, в какой таблице находятся соответствующие данные.
На самом деле основных таблиц всего три, так что это будет несложно. Например, если речь идет об авто, тогда это таблица AUTO, если речь идет о людях, покупателях, тогда имеется в виду таблица MAN, если о городах – CITY.
Вот несколько практических советов, как улучшить процесс обучения SQL.
Составьте карточки
Наиболее сложные, трудно запоминаемые теоретические вопросы и ответы лучше записывать на карточки, чтобы в конце занятий повторять сложные темы.
Также рекомендуется повторять эти карточки через каждые 10 глав книги.
Данная карточка может выглядеть следующим образом. С одной стороны пишется ключевой вопрос: «Какой оператор в SQL-запросах отвечает за группировку данных?»
С другой стороны ответ: «Оператор GROUP BY».
И далее несколько примеров запросов с использованием данного оператора.
Составляйте свой список вопросов
Для себя составьте дополнительные вопросы и ответьте на них.
Например, мы изучили агрегатные функции SUM, MAX, MIN, а как работает агрегатная функция COUNT? Не бойтесь задавать себе сложные вопросы и изучать новую информацию.
Создайте свое задание
Придумайте свои практические задания и порешайте их.
В дополнение к практическим заданиям из книги продумайте свои собственные и попробуйте их решить.
Например, у вас есть практическое задание: выбрать из таблицы AUTO все автомобили марки BMW синего цвета.
Выбрать из таблицы AUTO все автомобили марки BMW синего и зеленого цветов.
Интерфейс ORACLE APEX
Онлайн-сервис ORACLE APEX обладает рядом дополнительных возможностей, которые будут нам помогать в процессе обучения. Поэтому, если вы используете для выполнения практических задач APEX, рекомендую ознакомиться с данным материалом.
К дополнительным возможностям сервиса APEX относится просмотр объектов схемы данных.
После входа в сервис APEX следует воспользоваться пунктом меню SQL Workshop, выберите подпункт меню OBJECT BROWSER.
В левой части экрана располагается список объектов, где через выпадающий список указывается, объекты какого типа отражаются в списке.
Рисунок 4. Список объектов
Выбор соответствующего типа объекта покажет список объектов заданного типа. Щелчок по заданному объекту позволяет отобразить структуру и свойства заданного объекта.
Просмотр структуры таблиц
Выберите в выпадающем списке в левой верхней части формы TABLEs. Список отразит все таблицы, которые вам доступны.
Выберите любую из таблиц.
В правой части страницы отразится структура выбранной таблицы.
Также доступны следующие вкладки, которые показывают сведения о таблице:
Просмотр кода процедур
В некоторых шагах мы обращаемся к исходному коду процедур и функций.
Выберите в выпадающем списке одно из следующих наименований: SEQUENCEs, Function, Procedures, Packages.
Рисунок 5. Исходный код функции Fn_CITY_NAME
В правой части веб-страницы будет отображен исходный код выбранного объекта.
Вопросы учеников
Сколько времени следует уделять занятиям?
Рекомендую уделять занятиям не менее четырех часов в день, тогда за 20 дней вы успеете пройти все шаги.
Если я все же не могу найти ответ на вопрос или не могу решить задание, что мне делать?
На сайте sqladv.ru есть ссылка на нашу группу в «Фейсбуке», там вы наверняка найдете ответ и решение задачи, с которой испытываете трудности.
В SQLFIDele есть такие же возможности по просмотру и редактированию таблиц, как в ORACLE APEX?
Нет, SQLFIDele – это менее сложный инструмент, тем не менее его возможностей достаточно, чтобы выполнить большинство практических заданий из этой книги.
Сколько примерно времени в пропорции уделять теории, а сколько посвятить практике?
Лучше всего из четырех часов рабочего времени следует один час уделить теории, а три часа – практике. Таким образом, примерно 80 процентов вашего учебного времени должно занимать выполнение практических задач.
Контрольные вопросы и задания для самостоятельного выполнения
Шаг 4. Таблицы в базе данных
Теория
База данных – это, прежде всего, таблицы. Таблицы базы данных можно представить как таблицы в WORD или EXCEL, где в каждой ячейке содержатся определенные данные, но также есть и некоторые отличия.
Дело в том, что таблицы в базах данных создаются по некоторым правилам, и вот основные правила для таблиц в базе данных.
Так как мы изучаем SQL-диалект ORACLE СУБД, то данные правила справедливы именно для СУБД ORACLE:
• любая таблица в базе имеет уникальное наименование в рамках схемы данных;
• у каждой таблицы всегда есть заданное количество колонок: больше нуля и меньше 1024;
• каждая колонка также должна иметь уникальное наименование, но уже в рамках данной таблицы;
• в таблице в базе данных может быть практически неограниченное количество строк, здесь ограничения касаются только объема диска базы данных;
• для данных в таблице можно создавать ограничения. Ограничения касаются всех данных в колонке, на которую установлено ограничение;
• имена таблиц, имена колонок имеют ограничения по количеству символов и не могут называться зарезервированным словом, например командой из языка SQL или PL SQL. Также наименование колонки таблицы не должно начинаться с цифр;
• имя колонки в рамках таблицы также должно быть уникальным.
Создание таблиц по указанным правилам – это первый шаг в разработке базы данных.
Таблицы в базе, состав колонок таблицы должны производиться в соответствии со стандартами проектирования реляционной базы данных.
Работа со структурой таблиц, данными в таблицах осуществляется c помощью языка запросов SQL.
Одна или несколько колонок в таблице могут быть обозначены как первичный ключ.
Первичным ключом обозначаются колонки таблицы, содержащие набор уникальных значений, по которым мы можем однозначно идентифицировать строчку в рамках этой таблицы. Первичный ключ не может содержать пустые значения, так как всегда имеет ограничение NOT NULL.
Вторичный ключ – так обозначается колонка таблицы, в которой есть данные, используемые для связи с другой таблицей.
Таблицы нашей учебной схемы
Наша учебная схема очень проста и состоит всего лишь из четырех таблиц.
Первая таблица MAN содержит сведения о людях, которые приобрели машины.
Колонки таблицы MAN:
• PHONEnum – уникальный телефонный номер человека, первичный ключ для таблицы MAN, содержит текстовые данные;
• CITYCode – код города, вторичный ключ для связи с таблицей CITY;
• FirstName – имя человека (текстовые данные);
• LAStName – фамилия человека (текстовые данные);
• YearOld – возраст человека (числовые данные).
Таблица CITY – справочник городов, состоит из трех колонок:
• CITYCODE – уникальный код города, ключевое поле для таблицы CITY (числовые данные);
• CITYNAME – наименование города (текстовые данные);
• PEOPLES – население города, количество человек, которые проживают в городе (числовые данные).
Таблица AUTO – сведения об автомобилях автосалона.
Колонки таблицы AUTO:
• REGnum – уникальный регистрационный номер автомобиля (содержит текстовые данные);
• PHONEnum – телефонный номер покупателя, вторичный ключ для связи с таблицей MAN;
• MARK – марка авто (текстовые данные);
• COLOR – цвет авто (текстовые данные);
• ReleASeDT – дата создания авто, дата/время (специальный тип данных).
Таблица AUTO1 является копией таблицы AUTO и имеет те же колонки, что и таблица AUTO, и достаточно похожие данные, эта таблица используется в нескольких учебных заданиях (так же, как CITY1, MAN1).
Следующее изображение показывает основные таблицы в учебной базе данных в виде схемы:
Рисунок 6. Учебная схема базы данных
Вопросы учеников
Вы сказали, что наименования таблиц должны быть уникальны в рамках одной схемы. Что такое схема?
В СУБД есть понятие схемы – это особая логическая область, ассоциированная с заданной учетной записью, которая объединяет несколько объектов базы данных.
Почему телефонный номер покупателя PHONEnum – текстовое поле, разве оно не должно быть числовым?
Иногда телефонный номер заполняют со скобками. Чтобы разрешить это противоречие, я использовал текстовый (VARCHAR2) тип данных для этой колонки; кроме того, так сделать правильно, так как это упрощает поиск нужных нам номеров по префиксу.
Какие команды SQL позволяют изменять структуру таблицы, добавлять новые колонки, например?
Это команда ALTER TABLE, с которой мы познакомимся чуть позже.
Контрольные вопросы и задания для самостоятельного выполнения
Шаг 5. Типы данных
Для удобства в SQL все данные разделены на различные типы: например, есть строковый тип, к которому относятся только строки и текст; есть целочисленный тип, к нему можно отнести только целые числа; определен специальный тип данных для чисел с плавающей точкой.
Каждой колонке в таблице назначается свой определенный тип данных, то есть каждая колонка таблицы может сохранять данные строго заданного типа и никаких данных другого типа, отличного от этого. Например, в одной из колонок могут находиться только строки и текст, а в другой – только числа.
Типов данных в SQL ORACLE-диалекте множество, мы же рассмотрим самые основные из них.
Теория и практика
Ниже приведена таблица основных типов данных, используемая в SQL ORACLE. В таблице колонка-размер означает, какой максимальный объем информации сможет вместить этот тип данных. Например, тип данных VARCHAR2 может вместить в строку длиной не более 4000 символов.
таблица. Типы данных
Таблица. Типы данных
Важные замечания
Для удобства (во избежание излишней путаницы) в учебных примерах для этой книги рассматриваются в основном только три типа данных, однако нам достаточно этих типов для решения большинства учебных задач и понимания учебного материала.
Основные типы данных, используемые в книге в практических задачах:
• VARCHAR2 (n) – тип для хранения текстовой информации, в скобках указывается максимальное количество символов в строке. Данный тип используется при работе со строковыми данными разной длины, память под такие данные выделяется динамически;
• NUMBER – тип данных для хранения числовой информации, причем можно использовать как для целых чисел, так и для чисел с плавающей точкой;
• DATE – специальный тип данных для сохранения специальной информации – дата-время, например дата и время создания записи, дата и время электронной подписи документа, дата и время заключения сделки.
Эти типы данных достаточно часто используются на практике и применяются в работе.
Вопросы учеников
Вы рассказали про тип данных VARCHAR2 для хранения строк, но в виде строки можно записать и числа, и даты тоже. Зачем так много разных типов, может, они не нужны?
Да, вы можете сохранять числа как строки, но в дальнейшем вам будет сложно работать с этими данными, обработка будет затруднена. Например, со строками нельзя производить математических вычислений, и вам придется применять операции преобразования, что негативно скажется на качестве и скорости работы вашей программы.
Типы данных в других SQL СУБД, отличных от ORACLE, также различаются?
Есть незначительные различия, например в MS SQL используется VARCHAR, а не VARCHAR2, или вместо CLOB используется тип TEXT. Необходимо обратиться к соответствующему разделу документации выбранной СУБД, чтобы понять, какие именно типы данных различаются.
Почему в ORACLE SQL используется именно VARCHAR2, а не просто VARCHAR, как в MS SQL-сервер?
В ORACLE SQL тоже существует тип VARCHAR, но исторически сложилось так, что в ORACLE SQL между этими двумя типами существует разница:
• VARCHAR может хранить до 2000 символов, а VARCHAR2 может хранить до 4000 символов;
• если мы объявим тип данных как VARCHAR, то будет зарезервировано место для пустых NULL VALUES.
Поэтому чаще всего на практике в ORACLE используется VARCHAR2.
Контрольные вопросы и задания для самостоятельного выполнения