Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИО.ЛР.3.SQL.Манипулирование данными.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
350.21 Кб
Скачать
    1. Тип множества SET

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

      • Например, столбец определенных как SET(‘один’, ‘два’) NOT NULL может принимать такие значения: «один», «два», «один, два»

      • Множество SET может иметь максимум 64 различных элемента.

  1. Методические указания по выполнению практической части лабораторной работы на тему «Разработка базы данных в субд MySql»

В разработанной ЛР создание и наполнение БД предлагается выполнить с помощью командной строки. Это менее удобный и реже используемый способ, но он позволяет увидеть процесс моделирования БД «изнутри», более полно понять назначение операторов языка SQL, без знания которых проектирование с помощью специальных инструментов может быть затруднительным.

Предлагаемую ЛР можно условно разделить на три части:

  1. Выполнение одиночного оператора SELECT;

  2. Выполнение операции;

  3. Упорядочение результата.

В процессе выполнения работы будут подробно изучены следующие операторы:

  • FROM

  • WHERE

  • GROUP BY

  • HAVING

  • SELECT

  • UNION

  • NATURAL JOIN

  • INNER JOIN

  • OUTER JOIN

  • ORDER BY

И использованы следующие типы данных:

  • Числовые типы данных

  • Символьные типы данных

4.1 На что следует обратить внимание перед началом работы

  1. Большинство возникающих ошибок вызываются некорректным синтаксисом. Всегда следует проверять запросы. И настоятельно рекомендуется сперва писать запрос в «Блокноте», (а еще лучше в «Notepad++» и лишь потом копировать их в командную строку.

  2. Следует отличать ` ` и ‘ ’ . Это два разных символа. Первый в латинской раскладке на месте буквы «ё», второй на месте русской «э».

` ` - используется для названий атрибутов, БД, таблиц и т.д. В принципе, данные кавычки можно опускать, они необходимы лишь в случае использования в названии каких-либо символов (тире, пробел и т.д.)

‘ ’ – Используется для выделения строковых данных и данных даты и времени.

  1. MySQL по умолчанию НЕ чувствителен к регистру. Но принято любые команды писать большими буквами, а любые данные – мелкими. (Если не указать специально, то абсолютно не важно, с маленькой или с большой буквы вводятся названия таблиц, БД, атрибутов).

  2. Связь может быть реализована между атрибутами с абсолютно идентичными типами данных. INT UNSIGNED и INT – разные типы данных.

  3. Комментарии выделены двумя способами:

-- Комментарий

В случае комментирования строки

/*

Комментарий

*/

В случае комментирования нескольких строк

  1. Текст запросов помещен в рамку.

4.2 Начало работы с MySql

  1. Запустить командную строку ,выбрав в системном меню Пуск – Программы – MySQL – MySQL Server 6.0 – MySQL Command Line Client.

Открывшееся окно выглядеть так, как это показано на рис. 1.

Рис.1

  1. На предложение ввести пароль нажмите клавишу <Enter>. После того как появилось приглашение mysql> выглядеть так, как показано на рис.2.

Рис.2

4.3 Построение простых запросов

4.3.1 FROM

  • Выбрать все данные из таблицы поставщиков (ключевые слова SELECTFROM…):

SELECT *

FROM P; -- получим новую таблицу.

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

4.3.2 WHERE

  • Выбрать все строки из таблицы поставщиков, удовлетворяющих некоторому условию (ключевое слово WHERE…):

SELECT *

FROM P

WHERE P.PNUM > 2; -- выбрать все строки, удовлетворяющих условию

  • В качестве условия в разделе WHERE можно использовать сложные логические выражения, использующие поля таблиц, константы, сравнения (>, <, = и т.д.), скобки, союзы AND и OR, отрицание NOT.

4.3.3 GROUP BY

Упорядочение результатов запроса (ключевое слово ORDER BY…):

Использовать GROUP BY имеет смысл только вместе с одной из аналитических групповых функций

MAX() - максимальное значение в колонке

MIN()- минимальное значение в колонке

COUNT() - количество значений в колонке

SUM() - сумма всех значений в колонке

AVG() - среднее значение

SELECT

PD.PNUM, --выбранная колонка.

SUM(PD.VOLUME) AS SM --сумма всех значений в колонке.

FROM PD --получим новую таблицу.

GROUP BY PD.DNUM; --упорядочить результата запроса.

Этот запрос будет выполняться следующим образом.

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

  • Потом внутри каждой группы будет просуммировано поле VOLUME.

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

Исходная таблица PD

Результат после группировки :

4.3.4 HAVING

  • Получить номера деталей, суммарное поставляемое количество которых превосходит 400 (ключевое слово HAVING…):

SELECT

PD.DNUM,

SUM(PD.VOLUME) AS SM

GROUP BY PD.DNUM

HAVING SUM(PD.VOLUME) > 400; -- отбор групп.

В результате получим следующую таблицу из исходной таблицы PD:

Замечание. В одном запросе могут встретиться как условия отбора строк в разделе WHERE, так и условия отбора групп в разделе HAVING. Условия отбора групп нельзя перенести из раздела HAVING в раздел WHERE. Аналогично и условия отбора строк нельзя перенести из раздела WHERE в раздел HAVING, за исключением условий, включающих поля из списка группировки GROUP BY.