В статье рассказывается:
- Особенности языка SQL
- Понятие реляционной СУБД
- Популярные сервисы для работы с SQL
- Основные команды SQL
-
Пройди тест и узнай, какая сфера тебе подходит:
айти, дизайн или маркетинг.Бесплатно от Geekbrains
Работу с базами данных SQL, как структурированный язык запросов, выполняет практически идеально. Более того, он считается основным инструментом для взаимодействия с реляционными БД, позволяющим проводить с ними самые разные манипуляции.
И пусть возраст SQL насчитывает уже несколько десятилетий, он до сих пор используется весьма широко. Создать без него нечто серьезное весьма затруднительно.
Особенности языка SQL
SQL является непроцедурным языком программирования, предназначенным в первую очередь для описания данных, их выборки из реляционных БД и последующей обработки. Таким образом, SQL оперирует исключительно базами данных, и использовать только его для создания полноценного приложения нельзя.
В этом случае потребуются инструменты других языков, поддерживающих встраивание SQL-команд. Именно по причине своей специфичности SQL считают вспомогательным средством, позволяющим обрабатывать данные. Этот язык на практике используется только совместно с другими языками.
В общем случае прикладные средства программирования подразумевают создание процедур. SQL такими возможностями не обладает. Здесь нельзя указать способы решения задач — задается лишь смысл каждой конкретной задачи. Иначе говоря, в работе с базами данных SQL важны результаты, а не процедуры, приводящие к этим результатам.
Понятие реляционной СУБД
Не углубляясь в детали, можно дать такое определение: реляционной называется СУБД, использующая реляционную модель управления.
Доктор Е. Ф. Кодд в 1970 году опубликовал свою работу, где впервые было дано понятие реляционной модели. В публикации описывался некий математический аппарат, структурирующий данные и оперирующий ими. Основная идея состояла в представлении любых данных в виде абстрактной модели.
В соответствии с предложенной концепцией отношение между объектами (relation) представляет собой некую таблицу с данными. При этом существуют атрибуты (или признаки) отношения, которые соответствуют столбцам рассматриваемой таблицы. Сами данные предстают в виде наборов этих признаков и формируют записи (кортежи). Последние в свою очередь соответствуют табличным строкам.
Разберем это на примере. Существует домен «Неделя», в котором содержатся значения всех дней недели («Понедельник», «Вторник», …, «Воскресенье»). Атрибут, имеющий эти значения, называется «ДеньНедели». Тогда соответствие этого атрибута домену автоматически означает, что в одноименном столбце должны содержаться только перечисленные значения. Любые другие символы и группы символов недопустимы.
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Скачивайте и используйте уже сегодня:
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Также запрещается ввод сразу нескольких значений. Кроме того, требуется соблюдение условия атомарности. Иначе говоря, значения нельзя объединять друг с другом и разбивать их на более мелкие составляющие, сохранив при этом смысл. В случае присутствия в ячейке атрибута сразу двух значений и более (например, «Вторник» и «Среда») атомарность теряется. Тут можно выделить две части, сохранив смысл, но при дальнейшем разбитии слов на отдельные символы исходный смысл также утратится.
Популярные сервисы для работы с SQL
Как язык работы с базами данных, SQL предполагает обязательное наличие установленной БД с доступом для подключения и выполнения запросов.
- LiveSQL
С помощью данного сервиса все SQL-операции можно выполнять в облаке. Это достаточно серьезное преимущество, ведь программистам здесь нет необходимости устанавливать и настраивать СУБД на локальную машину. Достаточно лишь зарегистрироваться.
Читайте также!
В целом процесс работы весьма простой. После регистрации необходимо войти под созданной учетной записью и выбрать пункт «SQL WorkSheet» в боковом меню слева. Откроется рабочее окно, куда, собственно, и нужно вводить SQL-запросы. Для выполнения запросов следует нажать кнопку «Run» над полем ввода текста.
- SQL Fiddle
Это еще одна популярная программа для работы с SQL базами данных, работающая как сервис и поддерживающая множество форматов БД. Регистрация здесь не требуется.
При входе на SQL Fiddle в первую очередь нужно выбрать подходящую для работы БД (например, Oracle). Далее создается схема из таблиц путем ввода текста специального ddl-скрипта. После нажатия на кнопку «Build Schema» можно приступать к выполнению SQL-запросов. Для их ввода используется панель «Query Panel», расположенная справа. Выполнение запроса осуществляется нажатием на «Run Sql». Результаты работы будут видны под рабочими панелями.
Основные команды SQL
Помимо трех основных команд (CREATE, UPDATE и DELETE), используются и несколько других. Перечислим их ниже с примерами для MySQL (поэтому везде после операторов стоит точка с запятой).
Итак, прежде всего создаем базу данных с текстовым наполнением.
Далее необходимо скачать файлы DLL.sql и InsertStatements.sql, а затем установить на компьютер СУБД MySQL. После чего в командной строке нужно ввести mysql -u root -p для входа в консоль MySQL.
Скачать файлВводим пароль и в консоли выполняем ряд команд для создания БД с названием «study»:
CREATE DATABASE study;
USE study;
SOURCE <path_of_DLL.sql_file>;
SOURCE <path_of_InsertStatements.sql_file>;
Здесь перечислим основные команды, которые пригодятся нам в работе.
- SHOW DATABASES — просмотр доступных БД
- CREATE DATABASE — создание новой БД
- USE <database_name> — выбор БД для дальнейшей работы
- SOURCE <file.sql> — выполнение одной или нескольких команд, содержащихся в указанном файле.
- DROP DATABASE — удаление всей БД
- SHOW TABLES — вывод всех доступных таблиц в активной БД
- CREATE TABLE — создание новой таблицы в активной БД. Пример:
CREATE TABLE <table_name1> (
<column_name1><column_type1>,
<column_name2><column_type2>,
<column_name3><column_type3>
PRIMARY KEY(<column_name1>),
FOREIGN KEY(<column_name2>) REFERENCES <table_name2>(<column_name2>)
);
В коде также приведены команды, вносящие определенные ограничения для конкретных столбцов для создаваемой таблицы:
- Запрещается заполнение ячеек значениями NULL.
- Конструкция PRIMARY KEY(column_name1, column_name2, …) определяет первичный ключ.
- Конструкция FOREIGN KEY(column_namex1, …, column_namexn) REFERENCES table_name(column_namex1, …, column_namexn) определяет внешний ключ.
на обучение «Разработчик» до 24 ноября
Допускается создание нескольких первичных ключей, которые в итоге образуют один составной первичный ключ.
Покажем это на очередном примере:
CREATE TABLE instructor (
ID CHAR(5),
name VARCHAR(20) NOT NULL,
dept_name VARCHAR(20),
salary NUMERIC(8,2),
PRIMARY KEY (ID),
FOREIGN KEY (dept_name) REFERENCES department(dept_name)
);
- DESCRIBE <table_name> — просмотр различных параметров столбцов рассматриваемой таблицы (допустимый тип значений, наличие флага «ключ» и т. п.)
- INSERT INTO <table_name> — добавление в указанную таблицу новых данных
Пример:
INSERT INTO <table_name> (<column_name1>, <column_name2>, <column_name3>, …)
VALUES (<value1>, <value2>, <value3>, …);
Указание имен столбцов здесь не является обязательным.
INSERT INTO <table_name>
VALUES (<value1>, <value2>, <value3>, …);
- UPDATE <table_name> — обновление данных в указанной таблице.
UPDATE <table_name>
SET <col_name1> = <value1>, <col_name2> = <value2>, …
WHERE <condition>;
- DELETE FROM <table_name> — удаление данных из указанной таблицы.
- DROP TABLE — удаление всей таблицы
Ниже будут приведены команды для непосредственной обработки данных.
- SELECT — вывод данных из указанной таблицы
Для получения данных из конкретных столбцов:
SELECT <column_name1>, <column_name2>, …
FROM <table_name>;
Для получения всех данных из таблицы:
SELECT * FROM <table_name>;
- SELECTDISTINCT — вывод неповторяющихся значений из указанной таблицы
Для получения данных из конкретных столбцов:
SELECT DISTINCT <column_name1>, <column_name2>, …
FROM <table_name>;
Читайте также!
- WHERE — условный оператор
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
WHERE <condition>;
В качестве условия могут быть результаты сравнения чисел, текста или логических операций (AND, OR, NOT)
- GROUP BY — группировка результатов для вывода, зачастую с использованием агрегатных функций ( COUNT, MAX, MIN, SUM, AVG)
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
GROUP BY <column_namex>;
- HAVING — аналог ключевого слова WHERE специально для работы с агрегатными функциями
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
GROUP BY <column_namex>
HAVING <condition>
- ORDER BY — сортировка результатов запроса
Значения сортируются по возрастанию, если явно не указан оператор сортировки ASC или DESC.
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
ORDER BY <column_name1>, <column_name2>, … ASC|DESC;
- BETWEEN — оператор задания диапазона, из которого выбираются значения
Допускается задавать числа, текст и даты.
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
WHERE <column_namex> BETWEEN <value1> AND <value2>;
- LIKE — дополнительный оператор условия WHERE, задающий шаблон поиска похожего значения
Здесь можно указывать условия для выбора одного символа (_) либо для выбора любого количества символов (%).
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
WHERE <column_namex> LIKE <pattern>;
- IN — дополнительный оператор условия WHERE для указания нескольких значений
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
WHERE <column_namen> IN (<value1>, <value2>, …);
- JOIN — связывание нескольких таблиц через общие атрибуты
В SQL существует несколько способов такого объединения.
SELECT <column_name1>, <column_name2>, …
FROM <table_name1>
JOIN <table_name2>
ON <table_name1.column_namex> = <table2.column_namex>;
- CREATE VIEW — создание виртуальной таблицы для отображения самой актуальной информации из БД
Своими столбцами и строками такая таблица напоминает обычную.
CREATE VIEW <view_name> AS
SELECT <column_name1>, <column_name2>, …
FROM <table_name>
WHERE <condition>;
Удалить виртуальную таблицу можно аналогичной командой:
DROP VIEW <view_name>;
- Агрегатные функции
Выведем эти команды в отдельную группу. Эти функции предназначены для получения какого-то общего результата после операций с данными.
- MAX(column_name) — возврат наибольшего значения из указанного столбца;
- MIN(column_name) — возврат наименьшего значения из указанного столбца;
- AVG(column_name) — возврат среднего значения указанного столбца;
- SUM(column_name) — возврат суммы значений в указанном столбце;
- COUNT(column_name) — возврат количества строк.
Читайте также!
- Вложенные запросы
К ним относятся результаты команд SELECT, FROM и WHERE, вложенных в запрос более верхнего уровня.
Любой программный код при работе с БД использует SQL-запросы, даже если это явно не видно. Например, вместо открытого запроса может использоваться специальная библиотека, превращающая исходный код на другом языке в соответствующий SQL-код и затем выполняющая его. В той же Java подобных библиотек существует достаточно много. Подводя итоги, можно сказать, что работа с базами данных SQL для новичков в особенности очень важна, поскольку эти знания потом пригодятся везде.