Очень простой SQL
Для работы с реляционными базами данных придуман специальный структурированный язык запросов — Structured Query Language (сокращенно SQL). Иногда в шутку его называют Simple Query Language — «простой язык запросов»: SQL — это одна из самых сложных технологий, с которыми программистам приходится постоянно работать.
Любое взаимодействие с базой данных происходит посредством запросов на языке SQL. Запрос — это команда: «база данных, сделай то-то и то-то».
Например:
- Покупатель сделал заказ в интернет-магазине — к БД отправляется SQL-запрос: «в таблицу buyer в новую строку записать данные покупателя; в таблице basket отметить заказанные товары».
- Пользователь запросил подборку статей по тегу "What is SQL" — к БД отправляется SQL-запрос: «выбрать из таблицы articles те статьи, у которых в поле tag есть запись "What is SQL" и вернуть для каждой статьи содержимое полей title, date, main_image, description, tag; для каждой статьи запросить имя автора из таблицы author; статьи отсортировать по полю date, от новых к старым».
- В социальной сети зарегистрировался новый пользователь — к БД отправляется SQL-запрос: «в таблицу users добавить новую строку с данными пользователя».
В течении этого урока мы очень поверхностно затронем практические возможности баз данных, потому что документация по каждой из популярных баз занимает тысячи страниц.
Запрос — это текст, команда, которая отправляется к базе данных.
Пример запроса:
Скопировать кодSQL
SELECT * FROM author;
Пример ответа:
Скопировать кодSQL
id name birth_year
1 Человек без селезенки 1860
2 Владимир Набоков 1899
3 Лев Толстой 1828
4 Насон Грядущий 3019
Можно отправить запросы на чтение, изменение и добавление данных. Также существуют служебные запросы, например — запрос на создание новой таблицы.
Каждый запрос обязательно заканчивается точкой с запятой ;
. Ключевые слова запросов пишут заглавными буквами. Можно писать и строчными, но обычно так не делают: читаемость кода ухудшается.
Создание таблицы
Синтаксис для создания таблицы выглядит так:
Скопировать кодSQL
CREATE TABLE <имя таблицы> (
<имя столбца1> <тип столбца> [дополнительные условия],
<имя столбца2> <тип столбца> [дополнительные условия],
);
Вот настоящий запрос на создание таблицы:
Скопировать кодSQL
CREATE TABLE author(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
birth_year INTEGER
);
Эта команда создаёт новую таблицу author
со столбцами id
, name
и birth_year
. У id
и birth_year
тип допустимых значений — integer
, целое число.
Для столбца id
указано условие: это primary key
, первичный ключ. Это значит, что каждой записи в таблице будет присвоен уникальный номер, по которому потом можно будет её найти.
Уникальный номер налогоплательщика, номер паспорта, заводской VIN-код автомобиля, государственный номер автомобиля — всё это уникальные, не повторяющиеся идентификаторы. Такой же уникальный идентификатор есть и у каждой записи в БД.
Особые правила для числовых первичных ключей:
- Если при добавлении новой записи в таблицу не указать первичный ключ, то база сама присвоит его.
- Если удалить запись, то её первичный ключ не будет повторно использован при автоматическом присвоении ключей. Но можно добавить новую запись с ключом удалённой записи, если при создании записи указать ключ явно.
Для хранения цитат писателей создадим новую таблицу quote с полями id (уникальный идентификатор записи), author_id (связь с таблицей авторов) и citation (текст цитаты). Выберите, какой код будет правильно работать.