Найти в Дзене
IT для начинающих

Язык SQL. Команды. СУБД. SQLite

Ознакомившись в предыдущей статье с теоретической основой мира баз данных (БД), сегодня переходим к практике.

Есть определенные команды БД, их мы рассмотрим чуть ниже. Сперва несколько необходимых слов о системах управления базами данных (СУБД), о которых упоминала ранее. Если говорить о реляционных БД, то есть разные варианты, не пугайтесь при столкновении с такими названиями:

  • MySQL,
  • PostgreSQL,
  • SQLite

    СУБД довольно много.

Система управления БД - это программа для Вашего устройства + некоторые другие элементы. В начале достаточно понять, что за страшными словами и аббревиатурой СУБД кроется программа на ПК, через которую Вы управляете данными в базе, и самой базой.

Вполне подходящий и понятный аналог: текстовый документ можно открывать и редактировать в Microsoft Office, LibreOffice или блокноте (при этом последние годы они вполне взаимозаменяемы, но у каждого есть свой "родной" формат, в мире БД с взаимозаменяемостью хуже, но принцип такой же).

Команды (запросы) SQL.

Знакомьтесь, SQL online IDE даст возможность попробовать команды онлайн, не скачивая дополнительного ПО. Тренироваться для начала мы будем на наиболее понятной и удобной (на мой взгляд) SQlite. Итак, приступим!

Прежде всего, нам нужно создать Базу Данных, если мы находимся в СУБД SQLite - DB Browser for SQLIte - там есть специальная кнопка для этого. Так же, как для создания таблиц и всего прочего, поэтому останавливаться на этом мы не будем.

как видите, есть русифицированный интерфейс и предельно просто ориентироваться в программе
как видите, есть русифицированный интерфейс и предельно просто ориентироваться в программе

Для создания БД в Online DB нужно будет просто в конце работы нажать Save DB. У каждой БД есть имя. Допустим, потренируемся на мифической "школе", поэтому название у БД может быть schoolDB.

Нюанс: при подключении к DB (data base), например, из java-кода, если она отсутствует (подключение к несуществующей), то она будет создана.

Следующий элемент БД: Таблица.

Как мы помним из предыдущей статьи, особенность реляционных БД - табличный вид. Если мы тренируемся на школе, тут уместно 2 таблицы: сотрудники и учащиеся. Поэтому в нашей базе данных schoolDB мы можем создать две таблицы: staffTable и studentsTable. Таблицы создаются совершенно одинаково. Давайте попробуем.

CREATE TABLE STUDENTSTABLE (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL);

Как мы можем понять из перевода, то это создание таблицы со столбцами: id (числовое значение), имя (текстовое/строка), возраст (числовое). При этом id и возраст не равны нулю. Кратко по id - возможно, в этой школе учатся 2 Маши Ивановых. Очень удобно, когда у каждого элемента в БД есть уникальный ключ, который позволяет быстро и безошибочно его находить. Такими ключами обычно бывают id.

При запуске нашей команды в online IDE, у нас прекрасно создалась таблица:

смотрите слева. со столбцами id, name, age. пустая
смотрите слева. со столбцами id, name, age. пустая

Давайте же заполним таблицу данными! Что для этого нужно?

ВСТАВИТЬ В нее данные в соответствующие разделы! (Как мы помним, данные в базах данных должны быть предельно точно упорядочены).

INSERT INTO STUDENTSTABLE (ID,NAME,AGE) VALUES (1, 'John', 10);

Мы видим, что после слов "вставить в *имя таблицы*" идут наши же столбцы, которые мы создали ранее, после чего мы пишем ЗНАЧЕНИЯ точно соответствующие столбцам.

Давайте посмотрим, что получится! Как?
Если Вы уже ввели команду в online IDE, то увидели, что операция благополучно выполнена, но результата нигде нет. Как раз для этого есть команда:

SELECT * FROM STUDENTSTABLE ;
вуаля, в центре под командой - содержимое таблицы.
вуаля, в центре под командой - содержимое таблицы.

Почему ВЫБЕРИТЕ? Это действительно команда выбора. При значке "*" после нее он выберет и выведет в таблице все данные.

Предлагаю Вам самостоятельно добавить еще 2-3 ученика разного возраста. И вывести таблицу снова таким же образом.

я добавила Мэри и Веру 17 и 13 лет
я добавила Мэри и Веру 17 и 13 лет

Итак, у нас добавилось еще несколько учеников. Кстати, как Вы видите, у меня они расположены с id не по числовому значению, а в порядке добавления. Добавлять людей с id хаотично можно (только зачем? уже другой вопрос), но вот добавить двух людей с одним id не получится. В некоторых БД можно сделать автоматическое присваивание id.

Так же мы можем ОБНОВИТЬ какое-либо значение:

UPDATE STUDENTSTABLE set AGE = 11 where ID=1;
-6

Все получилось. Возраст 11 установлен элементу таблицы с ID = 1.

Таким же образом можно кого-нибудь удалить.

DELETE from STUDENTSTABLE where ID=2;
что равнозначно в данном случае
DELETE from STUDENTSTABLE where NAME='Mary';

Проверять и демонстрировать удаление бедной Мэри из нашей школы мы не будем.:) Если бы у нас было несколько учениц с именем Mary в школе, то при запуске второй команды удалились бы все. Именно поэтому удобно пользоваться id.

Предлагаю в качестве тренировки аналогично создать и заполнить таблицу staffTable :) Добавив в нее по желанию еще некоторые поля, например, пол, должность сотрудника и соц. положение.

В нашей "школе" мы разделили данные на две категории - учащиеся и сотрудники. В реальной же школе было бы, например, удобней, создавать таблицы по классам.

Как только Вы будете удовлетворены результатом практики, нажимаете в IDE: File -> Save DB, после чего наша база данных сохраняется на компьютер. После чего Вы можете открыть этот файл на компьютере в DB Browser for SQLIte и изучить, потренироваться уже там.

Поздравляю, Вы научились создавать базы данных и управлять ими!

P.S. Еще важные моменты.

  • Мы использовали в примере только текстовые и целочисленные значения. Текстовые значения в SQL заключаются в одинарные кавычки, числовые значения пишутся без них. Есть еще числа с плавающей точкой (дробные), символы и еще некоторые типы данных. Я обязательно про них еще расскажу. Это общее для всего программирования, различается только оформление.
  • Мы изучили основные команды. Есть еще - для более тонких манипуляций. Советую их изучить в той же Online IDE (ищите слева внизу Syntax).
  • Полезная ссылка для продвинутых. Как обращаться с SQLite из java-кода.
  • По запросу рассмотрим подробно разные СУБД. Жду отклика:) В некоторых могут начаться сложности уже на этапе установки.