Sql язык уроки. Упражнения по SQL

Именинники:
Миняйлов В.С. (Volodya111)
Перевозчиков А.В. (angolmya)
Здоровья и успехов!
На сайте имеются упражнения по оператору SELECT (141 упражнение на обучающем этапе и 226 - на рейтинговых) и по другим операторам манипуляции данными - INSERT, UPDATE, DELETE - (сейчас 33 упражнения). По упражнениям на SELECT ведется рейтинг участников. Смотри
Условия тестирования

Сегодня у нас 84 участников (17 новых).
Решено задач на рейтинговом этапе: 19
(2
по SELECT и 17 по DML),
на обучающем этапе - 259

Практическое владение языком SQL

Сайт поможет каждому, кто хочет приобрести или повысить свои навыки в написании операторов манипуляции данными языка SQL . Суть обучения состоит в том, что вы сами пишете операторы, которые должны вернуть или изменить данные, требуемые заданием. При этом в случае неправильного ответа вы сможете узнать, какие данные возвращает правильный запрос, а также увидеть, что вернул ваш запрос. Кроме того, есть возможность выполнять любые операторы DML к имеющимся базам данных, отключив опцию проверки. Упражнения имеют разный уровень сложности (от 1 до 5), который проставлен во втором столбце списка упражнений. Предлагаются упражнения на выборку данных (оператор SELECT ) и упражнения на модификацию данных (операторы INSERT, UPDATE, DELETE ). По результатам решения задач на сайте ведется рейтинг участников. При этом упражнения на выборку разбиты на три этапа: первый (9 упражнений) без контроля времени на выполнение отдельного задания, второй (начиная с 10 упражнения) - с контролем времени на выполнение каждого задания. На третьем этапе, который называется оптимизационным и начинается с задачи 139, требуется не только правильно решить задачу, но и время выполнения запроса должно быть соизмеримым с временем выполнения авторского решения.
Упражнения первого этапа доступны без регистрации, причем задания можно решать в любом порядке. Для выполнения остальных упражнений требуется регистрация. Регистрация бесплатна , как и все остальные сервисы сайта. В третьем столбце списка упражнений будут отмечаться ("OK") номера правильно выполненных упражнений для зарегистрировавшихся посетителей. Посетив наш сайт впоследствии, вам не нужно будет вспоминать, какие упражнения вами уже выполнены, а какие - нет. Однажды зарегистрировавшись, вы впоследствии вводите логин и пароль, указанные при регистрации. При входе без авторизации система не будет отслеживать ваши успехи. Для авторизованных пользователей доступен форум, на котором можно обсудить решения предложенных упражнений.

ЗАМЕЧАНИЕ: неправильно сформулированный запрос может вернуть "правильные" данные на текущем состоянии базы данных. Поэтому не стоит удивляться, если результаты неверного запроса совпадут с правильными результатами, но при этом запрос будет оценен системой проверки как неверный.

ВНИМАНИЕ: для корректной работы сайта браузер должен разрешать использование Cookie и JavaScript.
Поскольку страницы справки открываются в подчиненном окне, ваш Web-фильтр, если он используется, должен разрешать открытие подчиненных окон.

Сертификация

По результатам тестирования на сайте можно заказать сертификат "SQL Data Manipulation Language Specialist", подтверждающий вашу квалификацию. Качество сертификата мы поддерживаем периодической заменой задач и повышением сертификационных требований.

Используемый синтаксис SQL

Запросы посетителей фактически исполняются сервером SQL, что накладывает ограничения на допустимый синтаксис операторов. В настоящее время на рейтинговых этапах мы используем Microsoft SQL Server 2012 , а на обучающем этапе - дополнительно MySQL 5.5.11 , PostgreSQL 9.0 и Oracle Database 11g . Поэтому пользователю нужно придерживаться синтаксиса данных реализаций при написании своих запросов. Отметим, что синтаксис языка SQL, реализованный в Microsoft SQL Server, достаточно близок к стандарту SQL-92 . Однако есть ряд отклонений, среди которых можно отметить отсутствие естественного соединения таблиц (NATURAL JOIN). Имеющаяся на сайте справка по языку манипуляции данными SQL, выдержанная в соответствии со стандартом, содержит необходимую информацию для изучения языка и выполнения упражнений. Там же можно найти особенности используемой реализации (SQL Server).

Лучшие результаты

Person Scores Days Days_2 Days_3 Scores_3
Красовский Е.А. (pegoopik) 639 2698 209.861 13.752 233
>Boiko D. (Angellore) 637 3762 5230.239 3819.121 231

SQL обычно описывается как стандартный язык, используемый для взаимодействия с реляционными базами данных(см. ниже). Однако SQL не является языком программирования, как С, C++ или РНР. Скорее, это интерфейсное средство для выполнения различных операций с базами данных, предоставляющее в распоряжение пользователя стандартный набор команд. Возможности SQL не ограничиваются выборкой данных из базы. В SQL поддерживаются разнообразные возможности для взаимодействия с базой данных, в том числе:

  • определение структуры данных - определение конструкций, используемых при хранении данных;
  • выборка данных - загрузка данных из базы и их представление в формате, удобном для вывода;
  • обработка данных - вставка, обновление и удаление информации;
  • контроль доступа - возможность разрешения/запрета выборки, вставки, обновления и удаления данных на уровне отдельных пользователей;
  • контроль целостности данных - сохранение структуры данных при возникновении таких проблем, как параллельные обновления или системные сбои.

Обратите внимание: в определении SQL было сказано, что этот язык предназначен для работы с реляционными базами данных. В реляционных СУБД данные организуются в виде набора взаимосвязанных таблиц. Связи между таблицами реализуются в виде ссылок на данные других таблиц. Таблицу можно представить себе как двухмерный массив, в котором расположение каждого элемента характеризуется определенными значениями строки и столбца. Пример реляционной базы данных изображен на рис. 11.1.

Рис. 11.1. Пример реляционной базы данных

Как видно из рис. 11.1, каждая таблица состоит из строк(записей) и столбцов(полей). Каждому полю присваивается уникальное(в рамках данной таблицы) имя. Обратите внимание на связь между таблицами customer и orders, обозначенную стрелкой. В информацию о заказе включается короткий идентификатор клиента, что позволяет избежать избыточного хранения имени и прочих реквизитов клиента. В изображенной базе данных существует еще одна связь - между таблицами orders и products. Эта связь устанавливается по полю prod_id, в котором хранится идентификатор товара, заказанного данным клиентом(определяемого полем custjd). Наличие этих связей позволяет легко ссылаться на полные данные клиента и товара по простым идентификаторам. Правильно организованная база данных превращается в мощное средство организации и эффективного хранения данных с минимальной избыточностью. Запомните эту базу данных, я буду часто ссылаться на нее в дальнейших примерах.

Итак, как же выполняются операции с реляционными базами данных? Для этого в SQL существует специальный набор общих команд - таких, как SELECT, INSERT, UPDATE и DELETE. Например, если вам потребуется получить адрес электронной почты клиента с идентификатором 2001cu(см. рис. 11.1), достаточно выполнить следующую команду SQL:

SELECT cust_email FROM customers WHERE custjd = "2001cu"

Все вполне логично, не правда ли? В обобщенном виде команда выглядит так:

SELECT имя_поля FROM имя_таблицы [ WHERE условие ]

Квадратные скобки означают, что завершающая часть команды является необязательной. Например, для получения адресов электронной почты всех клиентов из таблицы customers достаточно выполнить следующий запрос:

SELECT cust_email FROM customers

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

INSERT into products VALUES("1009pr", "Red Tomatoes", "1.43");

Если позднее эти данные потребуется удалить, воспользуйтесь следующей командой:

DELETE FROM products WHERE prod_id = 1009r";

Существует много разновидностей команд SQL, и полное их описание выходит за рамки этой книги. На эту тему вполне можно написать отдельную книгу! Я постарался сделать так, чтобы команды SQL, используемые в примерах, были относительно простыми, но достаточно реальными. В Web существует много учебной информации и ресурсов, посвященных SQL. Некоторые ссылки приведены в конце этого раздела.

Записывать команды SQL символами верхнего регистра необязательно. Впрочем, я предпочитаю именно такую запись, поскольку она помогает различать компоненты запроса.

Раз вы читаете эту книгу, вероятно, вас интересует вопрос, как же организуется работа с базами данных в среде Web? Как правило, сначала при помощи какого-либо интерфейсного языка(РНР, Java или Perl) создается соединение с базой данных, после чего программа обращается к базе с запросами, используя стандартный набор средств. Интерфейсный язык можно рассматривать как своего рода «клей», связывающий базу данных с Web. Я перехожу к своему любимому интерфейсному языку - РНР.



 

Пожалуйста, поделитесь этим материалом в социальных сетях, если он оказался полезен!