---
title: Системные таблицы в базах данных
date: 2008-01-08T10:00
tags: [backend, mysql, tech]
---

Редко когда приходится делать перечисление всех таблиц, колонок, прав - при разработке это всё делает клиентская программа. Но когда разработка ведётся удалённо и вы не видите разниц в продублированных базах данных в принципе безопасности, то что-бы сдвинуться с мёртвой точки гадания в чём же дело, почему не поступают данные, надо делать элементарные запросы о структуре таблиц и владений привилегиями.

Ключём являются тн. системные таблицы, которые описывают остальные и самих себя. Из-за отсутсвия таких процедур, разные движки реализовали по разному доступ к таким таблицам.

**Mysql** - отдельный тип запроса. SHOW так-же может показывать состояние БД, нагруженность процессами и тп.

`SHOW TABLE status   SHOW COLUMNS FROM my_custom_table   `

**Postgre** - Иерархия разделена по принципу database.schema.table, поэтому часто администраторы не любят создавать новые базы данных - для них каждый раз дублируются системные схемы pg_catalog и information_schema.

`select table_name, table_schema from information_schema.tables //все таблицы   select column_name from information_schema.columns WHERE table_name='columns' // замкнутый круг   `

**Oracle** - обычные таблицы, которые правда мало кто может просто так взять и поменять

`select * from ALL_TABLES   ``select * from USER_TABLES`

## Related

- [DB дизайн](/ru/blog/tech/backend/DB/db-dizayn/)
- [MySQL триггеры на страже скорости и целостности](/ru/blog/tech/backend/DB/mysql/mysql-triggery-na-strazhe-skorosti-i-tselostnosti/)
- [Mysql import - export](/ru/blog/tech/backend/DB/mysql/mysql-import-export/)
