В наши дни компании собирают тонны данных, и работа с большими массивами данных или базами данных часто требует знания SQL, или языка структурированных запросов. SQL — это основной способ, с помощью которого специалисты по анализу данных, администраторы баз данных и инженеры баз данных извлекают данные из реляционных баз данных и манипулируют ими.
Синтаксис SQL может быть легко прочитан любым человеком, который знает анатомию SQL-запроса и то, что делают самые важные команды. Эти команды помогут вам выполнять такие распространенные задачи, как создание и удаление баз данных, добавление и удаление таблиц, а также вставка и извлечение данных.
Сегодня мы рассмотрим различные компоненты реляционной базы данных, подмножества языка SQL, общую структуру оператора SQL и некоторые примеры важных операторов SQL, которые можно использовать при управлении собственной базой данных.
Давайте приступим!
Мы рассмотрим:
- Что такое реляционная база данных?
- Подмножества языка SQL
- Анатомия типичной команды SQL
- Лучшие команды SQL, которые необходимо изучить
- 1. CREATE DATABASE и ALTER DATABASE
- 2. ИСПОЛЬЗОВАТЬ
- 3. CREATE TABLE, ALTER TABLE и DROP TABLE
- 4. INSERT INTO
- 5. UPDATE
- 6. DELETE
- 7. SELECT
- 8. ПОРЯДОК ПО
- 9. GROUP BY
- 10. HAVING
- 11. UNION и UNION ALL
- 12. JOIN
- 13. CREATE INDEX и DROP INDEX
- 14. GRANT и REVOKE
- 15. LIKE
- Подведение итогов и следующие шаги
- Что такое реляционная база данных?
- Подмножества SQL
- Анатомия типичного SQL-запроса
- Основные команды SQL, которые необходимо выучить
- 1. CREATE DATABASE и ALTER DATABASE
- 2. USE
- 3. CREATE TABLE, ALTER TABLE и DROP TABLE
- 4. INSERT INTO
- 5. UPDATE
- 6. DELETE
- 7. SELECT и FROM
- 8. ПОРЯДКОВЫЙ НОМЕР
- 9. ГРУППА ПО
- 10. HAVING
- 11. UNION и UNION ALL
- 12. JOIN
- 13. CREATE INDEX и DROP INDEX
- 14. GRANT и REVOKE
- 15. LIKE
- Подведение итогов и следующие шаги
- Продолжайте изучать SQL на сайте Educative
- Начать обсуждение
Что такое реляционная база данных?
Реляционная база данных организует данные в структурированные таблицы для поиска общих точек данных. Таблицы похожи на папки в традиционной файловой системе, и каждая таблица хранит набор информации.
SQL — это язык, используемый для взаимодействия с реляционными базами данных. Команды SQL используются для выполнения основных операций с базой данных, таких как создание, чтение, обновление и удаление (CRUD) всего, что связано с базой данных.
Реляционные базы данных являются наиболее популярным типом баз данных, используемых на предприятиях. Эти базы данных помогают работать некоторым крупнейшим компаниям в мире, включая Facebook, Amazon и Google.
Подмножества SQL
Команды SQL также используются для создания, изменения и удаления баз данных и таблиц. В этой статье речь пойдет о командах SQL, часто используемых в управлении базами данных.
Эти команды будут разделены на четыре категории:
- Команды языка манипулирования данными (DML)
- Команды языка определения данных (DDL)
- Команды языка управления данными (DCL)
- Операторы управления транзакциями (TCS)
Команды DML используются для манипулирования и выполнения операций над данными в базе данных. Примеры команд DML включают SELECT
, INSERT
и UPDATE
.
Команды DDL используются для определения структуры базы данных. Вы можете изменить схему базы данных, создавая новые таблицы и объекты или изменяя их атрибуты (такие как тип данных, имя таблицы и т.д.). Примеры команд DDL включают CREATE
и ALTER
.
Команды DCL используются для управления разрешениями пользователей и доступом к базе данных. Примеры команд DCL включают GRANT
и REVOKE
.
Команды TCS используются для управления транзакциями в базе данных. Транзакции — это единицы работы, которые могут быть зафиксированы или откатаны. Примеры команд TCS включают COMMIT
и ROLLBACK
.
Теперь, когда мы рассмотрели различные типы команд SQL, давайте подробнее рассмотрим пример типичного SQL-запроса.
Анатомия типичного SQL-запроса
SQL-запросы пишутся с использованием определенного синтаксиса и порядка. Запросы обычно состоят из нескольких команд (клаузул), которые (почти) всегда пишутся с заглавной буквы.
Хотя команды SQL не чувствительны к регистру, считается хорошей практикой писать их в верхнем регистре.
Большинство SQL-запросов выполняются в виде DML-запросов.[1], и основной синтаксис для него следующий:
SELECT column_name AS alias_name
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY column_name DESC;
Давайте разберем каждую часть этого синтаксиса:
-
- Вы можете задать столбцу временный псевдоним, используя ключевое слово
AS
и указав имя псевдонима.
- Вы можете задать столбцу временный псевдоним, используя ключевое слово
- Пункт
WHERE
можно использовать в сочетании сAND
,OR
,BETWEEN
,IN
,LIKE
для создания запросов.
Примечание: Это основной синтаксис для многих запросов SQL! Не все запросы следуют именно этому синтаксису, но знание этой структуры поможет в управлении базами данных, анализе и многом другом.
Основные команды SQL, которые необходимо выучить
1. CREATE DATABASE и ALTER DATABASE
Команда CREATE DATABASE
создает новую базу данных. База данных должна быть создана для хранения любых таблиц или данных.
Синтаксис:
CREATE DATABASE database_name;
Пример:
CREATE DATABASE fruit_database;
Команда ALTER DATABASE
изменяет существующую базу данных. Например, команда ALTER DATABASE
может добавить или удалить файлы из базы данных.
Синтаксис:
ALTER DATABASE database_name action;
Пример:
ALTER DATABASE fruit_database ADD FILE 'mango.txt';
2. USE
USE
— это выбор базы данных. Эта команда часто используется для начала работы с только что созданной базой данных.
Синтаксис:
USE database_name;
Пример:
USE fruit_database;
После выбора базы данных все последующие SQL-команды будут выполняться на этой базе данных.
Следует помнить, что команда USE
может выбирать только те базы данных, которые уже были созданы.
Если база данных с указанным именем не существует, то будет выдана ошибка.
3. CREATE TABLE, ALTER TABLE и DROP TABLE
Команда CREATE TABLE
создает новую таблицу в базе данных. Таблица должна быть создана до того, как в нее можно будет вставить какие-либо данные.
Синтаксис:
CREATE TABLE table_name (
column_name data_type,
column_name data_type,
...
);
Пример:
CREATE TABLE people_table (
id INTEGER,
name VARCHAR(255),
age INTEGER
);
В этом примере мы создаем таблицу people_table
с тремя колонками: id
, name
и age
.
Для каждого столбца необходимо указать тип данных. Некоторые распространенные типы данных включают INTEGER
, VARCHAR
и DATE
.
Команда ALTER TABLE
изменяет существующую таблицу. Например, команда ALTER TABLE
может использоваться для добавления или удаления столбцов из таблицы.
Синтаксис:
ALTER TABLE table_name action;
Пример:
ALTER TABLE people_table
ADD email VARCHAR(255);
В этом примере мы добавляем новый столбец email
в таблицу people_table
. Необходимо указать тип данных для нового столбца.
Также можно использовать команду ALTER TABLE
для изменения типа данных существующего столбца.
Синтаксис:
ALTER TABLE table_name
MODIFY COLUMN column_name data_type;
Пример:
ALTER TABLE people_table
MODIFY COLUMN last_name
VARCHAR(128);
В этом примере мы изменяем столбец last_name
на тип данных VARCHAR(128)
.
Обратите внимание, что вы не можете использовать команду ALTER TABLE
для изменения типа данных столбца, если в нем хранятся какие-либо данные.
Чтобы изменить тип данных столбца, необходимо сначала удалить все данные из этого столбца.
Синтаксис:
ALTER TABLE table_name
DROP COLUMN column_name;
Пример:
ALTER TABLE people_table
DROP COLUMN email;
В этом примере мы удаляем столбец email
из таблицы people_table
. Обратите внимание, что эта команда навсегда удалит все данные, хранящиеся в этом столбце.
Команда DROP TABLE
удаляет всю таблицу из базы данных. Эта команда навсегда удалит все данные, хранящиеся в таблице.
Синтаксис:
DROP TABLE table_name;
Пример:
DROP TABLE people_table;
В этом примере мы удаляем таблицу people_table
из базы данных.
Важно быть осторожным при использовании команды DROP TABLE
, так как ее нельзя отменить! После удаления таблицы все данные, хранящиеся в ней, будут навсегда потеряны.
Альтернативой команде DROP TABLE
является команда TRUNCATE TABLE
. Эта команда удалит все данные из таблицы, но не удалит саму таблицу.
Синтаксис:
TRUNCATE TABLE table_name;
Пример:
TRUNCATE TABLE people_table;
В этом примере мы удаляем все данные из таблицы people_table
. Сама таблица не удаляется, поэтому информация из столбцов сохраняется.
4. INSERT INTO
Команда INSERT INTO
вставляет данные в таблицу.
Синтаксис:
INSERT INTO table_name (column_name, column_name, ...)
VALUES (value, value, ...);
Пример:
INSERT INTO people_table (id, name, age)
VALUES (NULL, 'Crystal', 64);
В этом примере мы вставляем новую строку в таблицу people_table
. Первый столбец в таблице — id
. Мы указали, что этот столбец должен быть установлен в NULL
, что означает, что база данных автоматически сгенерирует уникальный идентификатор для этой строки.
Второй и третий столбцы таблицы — name
и age
, соответственно. Мы указали, что эти столбцы должны быть установлены в значения 'Crystal'
и 64
для этой строки.
5. UPDATE
Команда UPDATE
изменяет данные, уже хранящиеся в таблице.
Синтаксис:
UPDATE table_name
SET column_name = value, column_name = value, ...
WHERE condition;
Пример:
UPDATE people_table
SET name = 'Crystal Sequel', age = 65
WHERE id = 100;
В этом примере мы обновляем строку с id = 100
в таблице people_table
. Мы устанавливаем столбец name
в 'Crystal Sequel'
и столбец age
в 65
.
Важно: Оговорка WHERE
необходима при использовании команды UPDATE
. Без предложения WHERE
все строки в таблице будут обновлены!
6. DELETE
Команда DELETE
удаляет данные из таблицы.
Синтаксис:
DELETE FROM table_name
WHERE condition;
Пример:
DELETE FROM people_table
WHERE id = 100;
В этом примере мы удаляем строку с id=100 из таблицы people_table
.
Как и в случае с командой UPDATE
, важно отметить, что при использовании команды DELETE
требуется условие WHERE
. Как вы уже догадались, все строки в таблице будут удалены без предложения WHERE
.
7. SELECT и FROM
Команда SELECT
запрашивает данные FROM
таблицы.
Синтаксис:
SELECT column_name, column_name, ...
FROM table_name
WHERE condition;
Пример:
SELECT name, age
FROM people_table
WHERE id = 100;
В этом примере мы запрашиваем people_table
для получения имени и возраста строки, в которой id=100
.
Команды SELECT
и FROM
— две наиболее важные команды SQL, поскольку они позволяют задавать и извлекать данные из базы данных.
8. ПОРЯДКОВЫЙ НОМЕР
Команда ORDER BY
сортирует результаты запроса.
Синтаксис:
SELECT column_name, column_name, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC | DESC];
Пример:
SELECT name, age
FROM people_table
WHERE id = 100
ORDER BY age DESC;
В этом примере мы запрашиваем people_table
для получения имени и возраста строки с id=100
. Затем мы сортируем результаты по возрасту в порядке убывания.
Команда ORDER BY
часто используется в сочетании с командой SELECT
для получения данных из таблицы в определенном порядке.
Важно отметить, что команда ORDER BY
работает не только с числовыми данными — ее также можно использовать для сортировки текстовых данных по алфавиту!
ASC
: По умолчанию порядок сортировки будет возрастающим (A, B, C, … Z).
DESC
: Нисходящий порядок (Z, Y, X, . . . A).
9. ГРУППА ПО
Команда GROUP BY
группирует результаты запроса по одному или нескольким столбцам.
Синтаксис:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name;
Пример:
SELECT name, count(*)
FROM people_table
WHERE country='US'
GROUP BY names;
В этом примере мы запрашиваем people_table
для всех уникальных имен в таблице. Затем мы используем функцию COUNT()
, чтобы подсчитать, сколько раз встречается каждое имя.
Команда GROUP BY
часто используется с агрегатными функциями (такими как COUNT()
, MIN()
, MAX()
, SUM()
и т.д.), чтобы сгруппировать данные и рассчитать итоговое значение.
Столбцы, указанные в предложении GROUP BY
, также должны быть включены в предложение SELECT
.
10. HAVING
Команда HAVING
фильтрует результаты запроса на основе одной или нескольких агрегатных функций.
Синтаксис:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition;
Пример:
SELECT name, count(*)
FROM people_table
WHERE country='US'
GROUP BY names
HAVING count(*) > 0;
В этом примере мы запрашиваем people_table
для всех уникальных имен в таблице. Затем мы используем функцию COUNT()
, чтобы подсчитать, сколько раз встречается каждое имя.
Наконец, мы используем предложение HAVING
, чтобы отфильтровать все имена, которые не встречаются в таблице хотя бы один раз.
Подобно предложению GROUP BY
, мы также можем использовать предложение HAVING
вместе с агрегатными функциями для фильтрации результатов запроса.
Агрегатные функции:
Колонки, указанные в предложении GROUP BY
, должны быть также включены в предложение SELECT
.
HAVING
очень похож на WHERE
, но есть несколько важных отличий:
11. UNION и UNION ALL
Команда UNION
объединяет результаты двух или более запросов в один набор данных. Она часто используется для объединения данных из нескольких таблиц в один набор данных.
Синтаксис:
SELECT column_name FROM table_name1
UNION
SELECT column_name FROM table_name2;
Пример:
SELECT names FROM employee_table
UNION
SELECT email FROM people_table;
В этом примере мы используем SELECT
и UNION
для запроса имен из таблицы employee_table
, а затем объединяем их с электронными адресами из таблицы people_table
в один набор результатов.
Количество и порядок столбцов должны быть одинаковыми во всех операторах SELECT
, объединяемых с помощью UNION
. Кроме того, все столбцы должны иметь одинаковый тип данных.
Чтобы объединить данные из нескольких таблиц, в которых количество и порядок столбцов не совпадают, в один набор данных, используйте UNION ALL
вместо UNION
.
Синтаксис:
SELECT column_name FROM table_name_one
UNION ALL
SELECT column_name FROM table_name_two;
Пример:
SELECT names FROM people_table
UNION ALL ALL
SELECT email FROM people_table;
В этом примере мы запрашиваем people_table
для всех уникальных имен в таблице. Затем мы используем команду UNION ALL
для объединения этого набора данных с другим набором данных, содержащим все уникальные адреса электронной почты в таблице.
12. JOIN
Команда JOIN
— это способ объединения данных из двух или более таблиц в одну новую таблицу. Объединяемые таблицы называются левой и правой таблицами.
Наиболее распространенным типом объединения является ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ
. Внутреннее соединение объединяет только те строки из левой таблицы, которые имеют совпадения в правой таблице.
Синтаксис:
SELECT column_name FROM left_table
INNER JOIN right_table
ON left_table.column_name = right_table.column_name;
Пример:
SELECT name, email FROM people_table
INNER JOIN employee_table
ON people_table.id = yourtable.id;
В этом примере мы используем INNER JOIN
для объединения данных из people_table
и employee_table
. Мы объединяем таблицы с помощью столбца id
.
Хотя внутренние соединения являются наиболее распространенным типом соединения, существуют и другие типы соединений, о которых вы должны знать.
LEFT OUTER JOIN
: Левое соединение объединяет все строки из левой таблицы, даже если в правой таблице нет совпадений.
Синтаксис:
SELECT column_name(s) FROM left_table
LEFT OUTER JOIN right_table
ON left_table.column_name = right_table.column_name;
RIGHT OUTER JOIN
: Правое соединение объединяет все строки из правой таблицы, даже если в левой таблице нет совпадений.
Синтаксис:
SELECT column_name(s) FROM left_table
RIGHT OUTER JOIN right_table ON left_table.column_name = right_table.column_name;
FULL OUTER JOIN
: Полное внешнее соединение объединяет все строки из обеих таблиц, даже если ни в одной из них нет совпадений.
Синтаксис:
SELECT column_name(s) FROM left_table
FULL OUTER JOIN right_table ON left_table.column_name = right_table.column_name;
Объединения могут быть очень полезны при объединении данных из нескольких таблиц в один набор результатов. Однако важно отметить, что соединения могут ограничивать производительность и должны использоваться редко.
13. CREATE INDEX и DROP INDEX
Индекс — это структура данных, которая может быть использована для повышения производительности запросов SQL. Индексы могут ускорить получение данных из таблицы, позволяя базе данных быстро находить нужные данные без необходимости сканирования всей таблицы. Создание индекса для столбца — относительно простой процесс.
Синтаксис:
CREATE INDEX index_name ON table_name (column_name);
Пример:
CREATE INDEX people ON employee_table (names);
После создания индекса база данных может использовать его для ускорения выполнения SQL-запросов. Индексы — это важный инструмент, о котором должны знать администраторы баз данных, и они могут быть полезны для повышения производительности SQL-запросов.
Синтаксис:
DROP INDEX index_name ON table_name;
Пример:
DROP INDEX people ON employee_table;
После удаления индекса он больше не может использоваться базой данных для ускорения выполнения SQL-запросов.
14. GRANT и REVOKE
Команды GRANT
и REVOKE
управляют разрешениями в базе данных.
Команда GRANT
дает пользователю разрешение на выполнение действия, например, создание таблицы или вставку данных в таблицу.
Синтаксис:
GRANT permission_type ON object_name TO user;
Пример:
GRANT CREATE TABLE ON important_database TO bob;
Команда REVOKE
удаляет разрешение пользователя на выполнение действий.
Синтаксис:
REVOKE permission_type ON object_name FROM user;
Пример:
REVOKE CREATE TABLE ON important_database FROM bob;
Управление разрешениями в базе данных является важной задачей для администраторов баз данных. Команды GRANT
и REVOKE
являются двумя наиболее важными командами для управления разрешениями.
15. LIKE
Оператор LIKE используется для поиска данных, которые соответствуют определенному значению.
Синтаксис:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
Пример:
SELECT first_name
FROM class_roster
WHERE first_name LIKE '%a';
В приведенном примере запрос возвращает все записи из таблицы class_roster
, в которых столбец first_name
содержит значение, заканчивающееся на букву a
.
Размещение модуля %
после буквы a
вернет все записи, в которых столбец first_name содержит значение, начинающееся с буквы a
.
Помещение модуля %
до и после буквы «a» вернет все записи, в которых столбец first_name содержит значение, содержащее букву «a».
Подведение итогов и следующие шаги
Изучение SQL — ценный навык для всех, кто работает с данными. В этой статье мы рассмотрели некоторые из наиболее важных команд SQL, которые необходимо знать для управления базами данных.
Если вы хотите узнать больше о SQL, мы рекомендуем вам продолжать практиковаться с реальными наборами данных. Чем больше вы будете использовать SQL, тем лучше вы будете писать SQL-запросы!
Чтобы начать изучать эти и другие понятия, ознакомьтесь с курсом Educative «Вводное руководство по SQL».
Успешного обучения!
Продолжайте изучать SQL на сайте Educative
- Что такое соединения SQL? Объяснение типов соединений SQL
- Разберитесь в 40 лучших вопросах для собеседования по SQL
- Учебник по MySQL: Руководство для начинающих по использованию MySQL
Начать обсуждение
Есть ли еще какие-нибудь важные команды SQL, которые мы упустили? Была ли эта статья полезной? Сообщите нам об этом в комментариях ниже!