Появилась необходимость работать с базами данных как в MySQL, так и в PostgreSQL. Базовые SQL-запросы в этих СУБД во многом похожи, однако отличаются клиентские команды, способы просмотра баз, таблиц, структуры объектов, а также некоторые особенности типов данных и синтаксиса. Поэтому я решил собрать здесь часто встречающиеся в повседневной работе команды для обоих клиентов.
Ниже таблица с примерами команд обоих клиентов выполняющих похожие действия
| Действие | MySQL | PostgreSQL | Комментарии |
|---|---|---|---|
| Подключение к БД из под оболочки UNIX | mysql -u <username> -p [<bdname>] | psql -U <username> -d [<bdname>] | Означает авторизация под указанным пользователем по стандартному порту (для mysql 3306 , а для psql 5432. -p в mysql означеет запросить пароль при авторизации, в psq это обычно -W. Не путать с -p в psql это означает указать порт подклчюения. В место ключа -d в pysql название БД можно указать последним аргументом |
| Вызов help | help (\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 |
