Сравнение команд клиентов MySQL и PostgreSQL

Появилась необходимость работать с базами данных как в MySQL, так и в PostgreSQL. Базовые SQL-запросы в этих СУБД во многом похожи, однако отличаются клиентские команды, способы просмотра баз, таблиц, структуры объектов, а также некоторые особенности типов данных и синтаксиса. Поэтому я решил собрать здесь часто встречающиеся в повседневной работе команды для обоих клиентов.

Ниже таблица с примерами команд обоих клиентов выполняющих похожие действия

ДействиеMySQLPostgreSQLКомментарии
Подключение к БД из под оболочки UNIXmysql -u <username> -p [<bdname>]psql -U <username> -d [<bdname>]Означает авторизация под указанным пользователем по стандартному порту (для mysql 3306 , а для psql 5432.
-p в mysql означеет запросить пароль при авторизации, в psq это обычно -W. Не путать с -p в psql это означает указать порт подклчюения.
В место ключа -d в pysql название БД можно указать последним аргументом
Вызов helphelp (\h) или ? (\?)\? – psql команды
\h – sql команды
Справка по конкретной команде “NAME”\h [NAME] или help [NAME]\h [NAME]
Посмотреть версию СУБДSELECT VERSION();SELECT version();
Посмотреть информацию о подключении\s или status\conninfoДля psql вывод не слишком информативен
Текущий пользовательSELECT USER();
SELECT CURRENT_USER();
SELECT current_user;В MySQL USER() и CURRENT_USER() выводы могут отличаться. Первая команда показывает как подключился, а вторая чьи права применились
Посмотреть права пользователяSHOW GRANTS;\duВ MySQL посмотреть права конкретного пользователя
SHOW GRANTS FOR 'user1'@'localhost';
Просмотр всех созданных баз данныхSHOW DATABASES;
или
SHOW SCHEMAS;
\l[+]через + в psql можно увидеть детальную инф-ю о размере бд и т.д.
В mysql такого аналога нет, но можно использовать “SHOW CREATE DATABASE <dbname>;”
Подключиться к выбранной БДUSE <bdname>;\c <bdname>
Посмотреть к какой БД сейчас подключенSELECT DATABASE();SELECT current_database();
Посмотреть таблицы БД к которой сейчас подключенshow tables;\dt[+]+ в psql выводит детали
Посмотреть структуру (поля) конкретной таблицыDESCRIBE <tablename>;
или
DESC <tablename>;
SHOW COLUMNS FROM <tablename>;
SHOW FULL COLUMNS FROM <tablename>;
SHOW CREATE TABLE <tablename>;
\d[+] <tablename>“SHOW CREATE TABLE” в mysql часто содержит самый подробный вывод
Сбросить незавершённый вывод\c\r
Вертикальный вывод[sql command] \G;\xВ Mysql для вертикального вывода, нужно к любой команде добавить \G. В psql мы как бы переключаем режимы вывода для всех последующих команд. Один раз \x включили, повторный ввод \x выключает режим.
Выполнить shell команду\! [UNIX COMMAND]\! [UNIX COMMAND]Актуально для обоих клиентов, например \! ls -la

Источники

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *