Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 модуль.docx
Скачиваний:
19
Добавлен:
02.11.2018
Размер:
186.24 Кб
Скачать

17.3. Язык запросов sql

В то время, когда реляционные базы данных и СУБД только начинали развиваться, практически каждая СУБД предлагала свой язык для работы с базами данных, но со временем был стандартизирован один язык для работы с БД — структурированный язык запросов (Structured Query Language, SQL), который был принят как международный стандарт (ANSI SQL-92).

Хотя многие программные продукты сейчас поддерживают SQL, программный код редко можно перенести с одной СУБД на другую без модификаций, так как разработчики расширяют язык новыми командами, типами данных или не полностью реализуют стандарт.

Язык SQL включает:

  • операторы описания данных (создание/удаление/модификация таблиц, индексов, пакетов и т. п.);

  • операторы манипуляции данными (выборка, добавление, удаление, модификация записей в таблицах);

  • операторы определения доступа к данным;

  • операторы управления транзакциями.

В качестве примера рассмотрим несколько SQL-выражений на диалекте СУБД MySQL:

  • Создание таблицы STUDENT с четырьмя полями:

    • id целого числового типа (INT), обязательно непустое (NOT NULL), при необходимости автоматически генерируется на единицу больше последнего использованного значения (AUTO_INCREMENT), первичный ключ таблицы (PRIMARY_KEY(id));

    • first_name строкового типа VARCHAR длиной до 25 символов, может хранить пустое значение (NULL);

    • last_name строкового типа VARCHAR длиной до 45 символов, может хранить пустое значение (NULL);

    • faculty_id — целого числового типа, может хранить пустое значение.

CREATE TABLE STUDENT (

id INT NOT NULL AUTO_INCREMENT,

first_name VARCHAR(25) NULL,

last_name VARCHAR(45) NULL,

faculty_id INT NULL,

PRIMARY KEY (id)

)

  • Добавление записи о студенте: в выражении задан набор передаваемых полей (first_name, last_name) и их соответствующие значения ('Иван', 'Иванов'), поле id в этом случае получает автоматически сгенерированное значение, поле faculty_id остается пустым.

INSERT INTO STUDENT (first_name, last_name) VALUES ('Иван', 'Иванов')

  • Выборка записей о студентах с фамилией Иванов: в выражении указывается список возвращаемых полей id, first_name, last_name из таблицы STUDENT и условие для отбора записей WHERE last_name='Иванов'.

SELECT id, first_name, last_name

FROM STUDENT

WHERE last_name='Иванов'

  • Получение списка студентов с названиями факультетов:

    • выборка производится из двух таблиц STUDENT и FACULTY,

    • для таблиц заданы синонимы s и f соответственно;

    • так как в таблицах есть поля с одинаковым названием id, чтобы их различать, поля указываются с префиксом таблицы s.id, s.last_name, s.first_name, f.name;

    • оператор LEFT JOIN ON означает, что производится выборка всех записей из таблицы STUDENT, для каждой из них в таблице FACULTY находится строка для которой s.faculty_id = f.id, если такой строки нет или s.faculty_id содержит пустое значение, то f.name будет содержать пустое значение (NULL).

SELECT s.id, s.last_name, s.first_name, f.name

FROM STUDENT s LEFT JOIN FACULTY f ON s.faculty_id = f.id

  • Корректировка имени студента с идентификатором 1:

UPDATE STUDENT SET first_name='Петр' WHERE id=1

  • Удаление записи о студенте с идентификатором 1:

DELETE FROM STUDENT WHERE id=1

  • Удаление таблицы:

DROP TABLE STUDENT

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]