Как управлять базой данных SQL

Шпаргалка по SQL

Вступление

Базы данных SQL устанавливаются со всеми командами, необходимыми для добавления, изменения, удаления и запроса ваших данных. Это руководство по стилю шпаргалки предоставляет краткий справочник по некоторым наиболее часто используемым командам SQL.

Как пользоваться этим руководством:

  • Это руководство в формате шпаргалки с отдельными фрагментами командной строки

  • Перейти к любому разделу, который имеет отношение к задаче, которую вы пытаетесь выполнить

  • Когда вы видитеhighlighted text в командах этого руководства, имейте в виду, что этот текст должен относиться к столбцам, таблицам и данным в базе данныхyour own.

  • В этом руководстве все приведенные в качестве примера значения данных заключены в апострофы ('). В SQL необходимо обернуть любые значения данных, которые состоят из строк, в апострофах. Это не требуется для числовых данных, но также не вызовет никаких проблем, если вы включите апострофы.

Обратите внимание, что, хотя SQL признан стандартом, большинство программ баз данных SQL имеют собственные проприетарные расширения. В этом руководстве MySQL используется в качестве примера системы управления реляционными базами данных (RDBMS), но данные команды будут работать с другими программами реляционных баз данных, включая PostgreSQL, MariaDB и SQLite. Там, где между СУБД есть существенные различия, мы включили альтернативные команды.

Открытие подсказки базы данных (с использованием аутентификации Socket / Trust)

По умолчанию в Ubuntu 18.04 пользователь MySQLroot может пройти аутентификацию без пароля, используя следующую команду:

sudo mysql

Чтобы открыть приглашение PostgreSQL, используйте следующую команду. В этом примере вы войдете в систему как пользовательpostgres, который является включенной ролью суперпользователя, но вы можете заменить ее любой уже созданной ролью:

sudo -u postgres psql

Открытие подсказки базы данных (с использованием аутентификации по паролю)

Если ваш пользователь MySQLroot настроен на аутентификацию с паролем, вы можете сделать это с помощью следующей команды:

mysql -u root -p

Если вы уже настроили учетную запись пользователя без полномочий root для своей базы данных, вы также можете использовать этот метод для входа в систему от имени этого пользователя:

mysql -u user -p

Приведенная выше команда предложит вам ввести пароль после его запуска. Если вы хотите указать свой пароль как часть команды, сразу же после параметра-p укажите свой пароль без пробелов между ними:

mysql -u root -ppassword

Создание базы данных

Следующая команда создает базу данных с настройками по умолчанию.

CREATE DATABASE database_name;

Если вы хотите, чтобы ваша база данных использовала набор символов и параметры сортировки, отличные от значений по умолчанию, вы можете указать те, которые используют этот синтаксис:

CREATE DATABASE database_name CHARACTER SET character_set COLLATE collation;

Список баз данных

Чтобы увидеть, какие базы данных существуют в вашей установке MySQL или MariaDB, выполните следующую команду:

SHOW DATABASES;

В PostgreSQL вы можете увидеть, какие базы данных были созданы с помощью следующей команды:

\list

Удаление базы данных

Чтобы удалить базу данных, включая любые таблицы и данные, содержащиеся в ней, выполните команду, которая имеет следующую структуру:

DROP DATABASE IF EXISTS database;

Создание пользователя

Чтобы создать профиль пользователя для вашей базы данных без указания каких-либо привилегий для нее, выполните следующую команду:

CREATE USER username IDENTIFIED BY 'password';

PostgreSQL использует похожий, но немного другой синтаксис:

CREATE USER user WITH PASSWORD 'password';

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

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Обратите внимание на ключевое словоPRIVILEGES в предыдущем оператореGRANT. В большинстве РСУБД это ключевое слово является необязательным, и этот оператор можно эквивалентно записать в виде:

GRANT ALL ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

Однако имейте в виду, что ключевое словоPRIVILEGES требуется для предоставления подобных привилегий, когдаStrict SQL mode включен.

Удаление пользователя

Используйте следующий синтаксис для удаления профиля пользователя базы данных:

DROP USER IF EXISTS username;

Обратите внимание, что эта команда по умолчанию не удаляет таблицы, созданные удаленным пользователем, и попытки доступа к таким таблицам могут привести к ошибкам.

Выбор базы данных

Прежде чем вы сможете создать таблицу, вы должны сначала сообщить СУБД базу данных, в которой вы хотите ее создать. В MySQL и MariaDB сделайте это со следующим синтаксисом:

USE database;

В PostgreSQL вы должны использовать следующую команду для выбора нужной базы данных:

\connect database

Создание таблицы

Следующая структура команд создает новую таблицу с именемtable и включает два столбца, каждый со своим собственным определенным типом данных:

CREATE TABLE table ( column_1 column_1_data_type, column_2 column_2_data_taype );

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

Чтобы полностью удалить таблицу, включая все ее данные, выполните следующее:

DROP TABLE IF EXISTS table

Вставка данных в таблицу

Используйте следующий синтаксис для заполнения таблицы одной строкой данных:

INSERT INTO table ( column_A, column_B, column_C ) VALUES ( 'data_A', 'data_B', 'data_C' );

Вы также можете заполнить таблицу несколькими строками данных, используя одну команду, например:

INSERT INTO table ( column_A, column_B, column_C ) VALUES ( 'data_1A', 'data_1B', 'data_1C' ),  ( 'data_2A', 'data_2B', 'data_2C' ), ( 'data_3A', 'data_3B', 'data_3C' );

Удаление данных из таблицы

Чтобы удалить строку данных из таблицы, используйте следующую структуру команд. Обратите внимание, чтоvalue должно быть значением, содержащимся в указанномcolumn в строке, которую вы хотите удалить:

DELETE FROM table WHERE column='value';

[.Примечание]##

Note: Если вы не включите предложениеWHERE в операторDELETE, как в следующем примере, он удалит все данные, содержащиеся в таблице, но не столбцы или таблицу сам:

DELETE FROM table;

Изменение данных в таблице

Используйте следующий синтаксис для обновления данных, содержащихся в данной строке. Обратите внимание, что предложениеWHERE в конце команды сообщает SQL, какую строку следует обновить. value - это значение, содержащееся вcolumn_A, которое соответствует строке, которую вы хотите изменить.

[.note] #Note: Если вы не включите предложениеWHERE в операторUPDATE, команда заменит данные, содержащиеся в каждой строке таблицы.
#

UPDATE table SET column_1 = value_1, column_2 = value_2 WHERE column_A=value;

Вставка столбца

Следующий синтаксис команды добавит новый столбец в таблицу:

ALTER TABLE table ADD COLUMN column data_type;

Удаление столбца

Команда, следующая этой структуре, удалит столбец из таблицы:

ALTER TABLE table DROP COLUMN column;

Выполнение основных запросов

Чтобы просмотреть все данные из одного столбца в таблице, используйте следующий синтаксис:

SELECT column FROM table;

Чтобы запросить несколько столбцов из одной таблицы, разделите имена столбцов запятой:

SELECT column_1, column_2 FROM table;

Вы также можете запросить каждый столбец в таблице, заменив имена столбцов звездочкой (*). В SQL звездочки действуют как заполнители для представления «всего»:

SELECT * FROM table;

Использование предложений WHERE

Вы можете сузить результаты запроса, добавив операторSELECT с предложениемWHERE, например:

SELECT column FROM table WHERE conditions_that_apply;

Например, вы можете запросить все данные из одной строки с помощью следующего синтаксиса. Обратите внимание, чтоvalue должно быть значением, содержащимся как в указанномcolumn, так и в строке, которую вы хотите запросить:

SELECT * FROM table WHERE column = value;

Работа с операторами сравнения

Оператор сравнения в предложенииWHERE определяет, как указанный столбец должен сравниваться со значением. Вот некоторые распространенные операторы сравнения SQL:

оператор Что оно делает

=

тесты на равенство

!=

тесты на неравенство

<

тесты на менее чем

>

тесты на более чем

<=

тесты на меньше или равно

>=

тесты на больше или равно

BETWEEN

проверяет, находится ли значение в заданном диапазоне

IN

проверяет, содержится ли значение строки в наборе указанных значений

EXISTS

проверяет, существуют ли строки при заданных условиях

LIKE

проверяет, соответствует ли значение указанной строке

IS NULL

тесты на значенияNULL

IS NOT NULL

тесты для всех значений, кромеNULL

Работа с подстановочными знаками

SQL позволяет использовать символы подстановки. Это полезно, если вы пытаетесь найти конкретную запись в таблице, но не уверены, что именно это за запись.

Звездочки (*) - это заполнители, которые представляют «все», это будет запрашивать каждый столбец в таблице:

SELECT * FROM table;

Знаки процента (%) обозначают ноль или более неизвестных символов.

SELECT * FROM table WHERE column LIKE val%;

Подчеркивание (_) используется для обозначения одного неизвестного символа:

SELECT * FROM table WHERE column LIKE v_lue;

Подсчет записей в столбце

ФункцияCOUNT используется для нахождения количества записей в заданном столбце. Следующий синтаксис вернет общее количество значений, содержащихся вcolumn:

SELECT COUNT(column) FROM table;

Вы можете сузить результаты функцииCOUNT, добавив предложениеWHERE, например:

SELECT COUNT(column) FROM table WHERE column=value;

Нахождение среднего значения в столбце

ФункцияAVG используется для нахождения среднего (в данном случае среднего) среди значений, содержащихся в определенном столбце. Обратите внимание, что функцияAVG будет работать только со столбцами, содержащими числовые значения; при использовании в столбце, содержащем строковые значения, он может возвращать ошибку или0:

SELECT AVG(column) FROM table;

Нахождение суммы значений в столбце

ФункцияSUM используется для нахождения суммы всех числовых значений, содержащихся в столбце:

SELECT SUM(column) FROM table;

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

Нахождение наибольшего значения в столбце

Чтобы найти наибольшее числовое значение в столбце или последнее значение по алфавиту, используйте функциюMAX:

SELECT MAX(column) FROM table;

Нахождение наименьшего значения в столбце

Чтобы найти наименьшее числовое значение в столбце или первое значение по алфавиту, используйте функциюMIN:

SELECT MIN(column) FROM table;

Сортировка результатов с помощью предложений ORDER BY

ПредложениеORDER BY используется для сортировки результатов запроса. Следующий синтаксис запроса возвращает значения изcolumn_1 иcolumn_2 и сортирует результаты по значениям, содержащимся вcolumn_1, в порядке возрастания или, для строковых значений, в алфавитном порядке:

SELECT column_1, column_2 FROM table ORDER BY column_1;

Чтобы выполнить то же действие, но упорядочить результаты в порядке убывания или в обратном алфавитном порядке, добавьте запрос сDESC:

SELECT column_1, column_2 FROM table ORDER BY column_1 DESC;

Сортировка результатов с помощью предложений GROUP BY

ПредложениеGROUP BY похоже на предложениеORDER BY, но оно используется для сортировки результатов запроса, который включает агрегатную функцию, такую ​​какCOUNT,MAX,MIN илиSUM. Сами по себе агрегатные функции, описанные в предыдущем разделе, будут возвращать только одно значение. Однако вы можете просмотреть результаты агрегатной функции, выполняемой для каждого совпадающего значения в столбце, включив предложениеGROUP BY.

Следующий синтаксис подсчитает количество совпадающих значений вcolumn_2 и сгруппирует их в возрастающем или алфавитном порядке:

SELECT COUNT(column_1), column_2 FROM table GROUP BY column_2;

Чтобы выполнить то же действие, но сгруппировать результаты в порядке убывания или в обратном алфавитном порядке, добавьте запрос с помощьюDESC:

SELECT COUNT(column_1), column_2 FROM table GROUP BY column_2 DESC;

Запрос нескольких таблиц с предложениями JOIN

ПредложенияJOIN используются для создания наборов результатов, которые объединяют строки из двух или более таблиц:

SELECT table_1.column_1, table_2.column_2 FROM table_1 JOIN table_2 ON table_1.common_column=table_2.common_column;

Это пример предложенияINNER JOIN. INNER JOIN вернет все записи с совпадающими значениями в обеих таблицах, но не отобразит записи, для которых нет совпадающих значений.

Можно вернуть все записи из одной из двух таблиц, включая значения, которые не имеют соответствующего соответствия в другой таблице, с помощью предложенияouterJOIN. Внешние предложенияJOIN записываются какLEFT JOIN илиRIGHT JOIN.

ПредложениеLEFT JOIN возвращает все записи из «левой» таблицы и только соответствующие записи из «правой» таблицы. В контексте внешних предложенийJOIN левая таблица - это таблица, на которую есть ссылка в предложенииFROM, а правая таблица - это любая другая таблица, на которую ссылаются после оператораJOIN. Ниже будут показаны все записи изtable_1 и только совпадающие значения изtable_2. Любые значения, не совпадающие вtable_2, будут отображаться какNULL в наборе результатов:

SELECT table_1.column_1, table_2.column_2 FROM table_1 LEFT JOIN table_2 ON table_1.common_column=table_2.common_column;

ПредложениеRIGHT JOIN функционирует так же, какLEFT JOIN, но выводит все результаты из правой таблицы и только соответствующие значения из левой:

SELECT table_1.column_1, table_2.column_2 FROM table_1 RIGHT JOIN table_2 ON table_1.common_column=table_2.common_column;

Объединение нескольких операторов SELECT с предложениями UNION

ОператорUNION полезен для объединения результатов двух (или более) операторовSELECT в один набор результатов:

SELECT column_1 FROM table UNION SELECT column_2 FROM table;

Кроме того, предложениеUNION может объединять два (или более) оператораSELECT, запрашивающих разные таблицы, в один и тот же набор результатов:

SELECT column FROM table_1 UNION SELECT column FROM table_2;

Заключение

В этом руководстве рассматриваются некоторые из наиболее распространенных команд в SQL, используемых для управления базами данных, пользователями и таблицами, а также для запроса содержимого, содержащегося в этих таблицах. Однако существует множество комбинаций предложений и операторов, которые создают уникальные наборы результатов. Если вы ищете более полное руководство по работе с SQL, рекомендуем вам ознакомиться сOracle’s Database SQL Reference.

Кроме того, если есть общие команды SQL, которые вы хотели бы видеть в этом руководстве, пожалуйста, спросите или внесите предложения в комментариях ниже.

Related