SQL, แ แ แจแแแซแแแแ แแงแแก แฃแคแ แ แแแ แขแแแ? แแแแแแฃแ แฉแแแแแแแก แจแแฃแซแแแ แแแฌแแ แแก แแแ แขแแแ แแแแฎแแแแ - แฉแแแ แแแแญแแแแ แแแ แฉแแแ, แฉแแแแแแแแแ แกแแญแแ แ แกแแแขแแแ, แจแแแแแ แกแแฌแงแแกแ, แชแฎแ แแแแก แแแกแแฎแแแแแ, แแแ แแแแฃแแ แแแ แแแแแ แกแแแแช แแ แแก แงแแแแแคแแ แ - แกแแกแแ แแแแแ แแแแแชแแแแแ แฉแแแแก แฏแแแแจแแ แแ (แแแแฅแแแก) แแแแกแแ แแแฃแฎแแแแแแ, แแฃ แ แแแแแ DBMS แแ แแก แแ แแ แแก แแแแแขแแก แฅแแแจ (แแ แจแแกแแซแแแ
แแ แแแแแฌแงแแ แแแ แแแแแ
แแแแแฅแขแฃแ -แ แแแแขแแฃแ แ แ แฃแแ
ORM แแฎแแ แแแแญแแ แแแ แขแ แแแแชแแฃแแแ แแคแแกแแแแ แแแแแแแแ แแแแก แกแแฉแฅแแ แแก แแ แกแแแแ แขแแแแก, DBMS-แแกแแแ แแแแแฃแแแแแแแแแแก แแ แกแฃแคแแ แแแแก. แแแแ แ แฉแแแแแแแแกแแแแก แแแแแชแแแแ แแแแแกแแแ แแฃแจแแแแแก แแแแ (แแ แฎแจแแ แแ แแแแแ แแแแแชแแแแ แแแแ)
แฉแแแฃแแแแ แแ แแกแ แแแแแแงแฃแ แแแ...
@Entity
@Table(name = "stock", catalog = "maindb", uniqueConstraints = {
@UniqueConstraint(columnNames = "STOCK_NAME"),
@UniqueConstraint(columnNames = "STOCK_CODE") })
public class Stock implements java.io.Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "STOCK_ID", unique = true, nullable = false)
public Integer getStockId() {
return this.stockId;
}
...
แแแแแแ แญแแแแแแฃแ แ แแแแขแแชแแแแแ แแ แแก แแแแแแแแฃแแ แแ แกแแแฆแแช แแฃแแแกแแแจแ, แแแแแชแ ORM แฌแแ แแแฅแแแแก แแ แแฎแแ แชแแแแแแก แ แแแแแแแแ SQL แแแแก. แกแฎแแแแ แจแแ แแก, แแแแแแแแแ แแแ แแแฅแกแแแแแฃแ แแ แชแแแแแแแ แแแแแแ แแแแก แแแแแแแแ แแแแแชแแแแ แแแแแแแ แแแแแแแขแ แแแแ แแแกแขแ แแฅแชแแแแแ, แ แแช แแแฃแแแแแแก แแแแแแ แแแ.
แแแ แแแแแแแแก แแแแ แ แแฎแแ แแก, แกแฃแคแแ โแฎแแแแแแแแโ SQL-แแก แแแแแแแ แแแ แแฆแแแจแแแแแ แจแแกแแซแแแแแแแแก, แแแแแฌแฃแ แแ แแแแแ แฌแแแแ แแแแแแแแ DBMS-แแแ แแแแแขแแแแแ แจแ แแแแแกแ แแ แแแกแขแ แแฅแชแแแก แแแ แแจแ. แจแแแแแแ, แฉแแแแแ โแแแแแชแแแแแแ แแ แแแแขแแ แแแฃแแโ แแ แแแฅแขแแแ, แกแแแแช แกแแแชแแแแฃแ แแ แแแแแแแแแฃแแ แแแแแแแแแแ แแ แแแ แฉแแ แแฃแแ แแแแแชแแแแ แแแแแจแ (แแกแแแ แแกแแแ แแ แแแ โแแแแแกแแกแขแแแโ, แแกแแแ แแ แแแ โแแแแแกแแกแขแแแโ, แแกแแแ แแ แแแ โแแแกแแแแแ แแแโ แแ แ.แจ.) แแ แแแแแแแแแ แแแ. แกแแญแแ แแ แแฎแแแแ แแแ แแแฎแแแแ แแ แจแแแแฎแฃแแ แแ แแชแแแฃแ แแแแก โแแแงแแแแโ, แแแขแแแแแจแ แจแแกแแแแก แแแ แแจแ.
แ แ แแแฎแแแแ, แ แแ แแ แแแ แกแแแงแแ แแแแ แกแแฃแแแแแกแ แแแฅแแแแแก? แ แแแแ แแแแแแแ แแก แจแแกแแแแจแแแ แฎแแแกแแฌแงแแจแ แกแแชแแชแฎแแแก แแแแแแแกแขแฃแ แแแแแ แกแแฎแแแแ
Clojure แแแแแ แ แแแแ DSL-แแแแก แจแแกแแฅแแแแแแ, แแแแ แแ แแแแแ SQL แแ แแก แแแแแ แ DSL แแ แกแฎแแ แแ แแแญแแ แแแแ. S-แแแแแแแแฅแแแแแแ แจแแกแแแแจแแแแแ, แแแแ แแ แแกแแแ แแฅ แแฎแแแก แแ แแแแขแแแแ. แจแแแแแแ แแแฆแแแ แคแ แฉแฎแแแแแก แคแ แฉแฎแแแแแแก แแฃแแแกแแแแก. แฒแ แแแแแแฎแแแแ? แจแแแแแ แแแแแแแแ แแแแแแขแก, แ แแแแกแแช แแแแแชแแแแ แแแแแก แแแกแขแ แแฅแชแแ แแแแฌแงแแแก แแแแแแแแก แแ แแแแฌแงแแแ แแ แซแแแแก แคแฃแแฅแชแแแกแแแ (raw-sql)
แแแ แ แ แ แฃแแแ แแแแแแแแ? แแแแแ แแแแขแแแแ SQL, แ แแแแ แช แฉแแแฃแแแแ แแแ SQL - แแ แแ แคแแแแ แแแแ แแแแฎแแแแแแ:
-- name: users-by-country
select *
from users
where country_code = :country_code
... แแ แจแแแแแ แฌแแแแแแฎแแ แแก แคแแแแ, แแแแแแฅแชแแแ แแก แฉแแแฃแแแแ แแ Clojure แคแฃแแฅแชแแแ:
(defqueries "some/where/users_by_country.sql"
{:connection db-spec})
;;; A function with the name `users-by-country` has been created.
;;; Let's use it:
(users-by-country {:country_code "GB"})
;=> ({:name "Kris" :country_code "GB" ...} ...)
"SQL แแแแแกแแแแแ, Clojure แแแแแกแแแแแ" แแ แแแชแแแแก แแแชแแแ, แแฅแแแ แแแแฆแแแ:
- แแ แแแแแ แ แกแแแขแแฅแกแฃแ แ แกแแฃแ แแ แแแแแ. แแฅแแแแ แแแแแชแแแแ แแแแ (แ แแแแ แช แแแแแกแแแแ แ แกแฎแแ) แแ แจแแแกแแแแแแแ SQL แกแขแแแแแ แขแก 100%-แแ - แแแแ แแ Yesql-แกแแแแก แแแแก แแแแจแแแแแแแ แแ แแฅแแก. แแฅแแแ แแ แแกแแแแก แแแแแ แแแแ แแ แแก SQL แแฅแแแแแแแแขแฃแ แ แกแแแขแแฅแกแแ แคแฃแแฅแชแแแแแ แแแแแ แแแแกแแแแก. แแฅแแแ แแ แแกแแแแก แแแแแฌแแแ แคแฃแแฅแชแแแแ แแแแ แฃแแแแ (raw-sql "some('funky'::SYNTAX)")).
- แกแแฃแแแแแกแ แ แแแแฅแขแแ แแก แแฎแแ แแแญแแ แ. แแฅแแแแก แ แแแแฅแขแแ แก แฃแแแ แแฅแแก แจแแกแแแแจแแแแ SQL แแฎแแ แแแญแแ แ. SQL-แแก SQL-แแ แจแแแแฎแแแ แจแแแแซแแแแ แฃแแ แแแแ แแแแแแงแแแแ แแแ.
- แแฃแแแแก แแแแกแแแแแแแ. แแฅแแแแก DBA-แแแก แจแแฃแซแแแแ แฌแแแแแแฎแแ แแ แแแฌแแ แแ SQL, แ แแแแแกแแช แแงแแแแแ Clojure แแ แแแฅแขแจแ.
- แจแแกแ แฃแแแแแก แฃแคแ แ แแแ แขแแแ แ แแแฃแแแ แแแ. แแญแแ แแแแแ แแแแแแก แจแแแแแแ แแ แแแแแแฃแ แ แจแแแแแฎแแแกแแแแก? แแก แแ แแ แแก แแ แแแแแแ, แ แแแแกแแช แแฅแแแแ แแแแฎแแแแ แแ แแก แ แแแฃแแแ แฃแแ SQL.
- แจแแแแแฎแแแก แฎแแแแฎแแ แแแแแงแแแแแ. แแแแแแแ แแแ แแ แฉแแแแแแแแ แแแแแ SQL แคแแแแแแ แกแฎแแ แแ แแแฅแขแแแจแ, แ แแแแแ แแก แฃแแ แแแแ แซแแแแ SQLแ - แฃแแ แแแแ แแแแแแแ แแ.
แฉแแแ แแแ แแ, แแแแ แซแแแแแ แแแแแ แ แแ แแแแแแ แแฃแแแ แซแแแแแ แแแ แขแแแแ, แ แแก แฌแงแแแแแแแแช แแ แแแฅแขแแ แแแแ แ แแแแแแแ
IDE & DB แแแแแฏแแ แแแ
แแแแแฌแงแแ แแแ แขแแแ แงแแแแแแฆแแฃแ แ แแแแแแแแแ. แฎแจแแ แแ แแแแฌแแแก แแแแแชแแแแ แแแแแจแ แแแแแแ แแ แแแแแฅแขแแก แซแแแแ, แแแแแแแแแ, แกแฅแแแแจแ แชแฎแ แแแแก แแแแแ แแ แแแกแ แกแขแ แฃแฅแขแฃแ แแก แจแแกแฌแแแแ (แ แ แกแแแขแแแ, แแแแแแจแแแ, แแแแแฅแกแแแ, แจแแแฆแฃแแแแแ แแ แ.แจ. แแแแแแงแแแแแ). แแ แแแแแกแแแแ แ แแ แแคแแแฃแแ IDE แแ แแแขแแ แ DB-แแแแแฏแแ แแกแแแ, แแแ แแแ แ แแแจแ, แฉแแแ แแแแแ แแฃแกแขแแ แแ แจแแกแแซแแแแแแแแแก. แแกแ, แ แแ แแก แแงแแก แกแฌแ แแคแ แแ แแ แแแแญแแ แแแ แแแฎแแแแ แ แกแแแแแก แแแแแแ แกแแญแแ แ แแแคแแ แแแชแแแก แคแแแฏแ แแก แแแฎแแขแแแแแ (แแแแกแแแฃแแ แแแแ แแแกแขแแแชแแฃแ แแแแแชแแแแ แแแแแกแแแ แแแแ แแแแจแแ แแ) แแ แแแแแแ แแฃแแแ, แแแฆแแแฃแแ แแแคแแ แแแชแแ แแงแแก แแฎแแแ แแ แจแแกแแแแแแกแ, แแ แแ แ แฅแแจแแ แแแฃแแ แฃแกแแ แแแแแ. แฃแคแ แ แแแขแแช, แ แแช แฃแคแ แ แ แแฃแแ แแ แแแแแ แแแแแชแแแแ แแแแ แแ แ แแช แฃแคแ แ แแแแแ แแแแ แ แแแแแแแแ, แแแ แฃแคแ แ แ แแฃแแแ แแแแก แแแแแแแแ.
แแแแ แแ, แ แแแแ แช แฌแแกแ, แแแฃแกแก แแงแ แ แแ แแฎแแแแ แแแแก แแฌแแ . แแแฅแแแ, แแฅแแแ แฃแแแ แแแแ แแแแแ, แ แแแแแ แชแฎแ แแแแแ (แแ แ แแแแแ แแแแกแแแแแแ) แจแแแชแแแก "HR" แกแฅแแแแก. แฃแแแขแแก DBMS-แจแ แกแแกแฃแ แแแแ แจแแแแแแก แแแฆแฌแแแ แจแแกแแซแแแแแแแ แแแคแแ แแแชแแแก_แกแฅแแแแก แแ แแแ แขแแแ แแแแฎแแแแแ:
select table_name
, ...
from information_schema.tables
where schema = 'HR'
แแแแแชแแแแ แแแแแแแ แแแแแชแแแแ แแแแแแแ, แแกแแแ แกแแชแแแแแ แ แชแฎแ แแแแแแก แจแแแแแ แกแ แแแแกแฎแแแแแแแ แแแแแแฃแแ DBMS-แแก แจแแกแแซแแแแแแแแแแก แแแฎแแแแแ. แแ, แแแแแแแแแ, MySQL-แกแแแแก, แแแแแ แกแแชแแแแแ แ แฌแแแแแแแ แจแแแแซแแแแ แแแแฆแแ แแ DBMS-แแกแแแแก แแแแแฎแแกแแแแแแแแ แชแฎแ แแแแก แแแ แแแแขแ แแแ:
select table_name
, storage_engine -- ะัะฟะพะปัะทัะตะผัะน "ะดะฒะธะถะพะบ" ("MyISAM", "InnoDB" etc)
, row_format -- ะคะพัะผะฐั ัััะพะบะธ ("Fixed", "Dynamic" etc)
, ...
from information_schema.tables
where schema = 'HR'
Oracle-แแ แแ แแชแแก information_schema, แแแแ แแ แแฅแแก
select table_name
, pct_free -- ะะธะฝะธะผัะผ ัะฒะพะฑะพะดะฝะพะณะพ ะผะตััะฐ ะฒ ะฑะปะพะบะต ะดะฐะฝะฝัั
(%)
, pct_used -- ะะธะฝะธะผัะผ ะธัะฟะพะปัะทัะตะผะพะณะพ ะผะตััะฐ ะฒ ะฑะปะพะบะต ะดะฐะฝะฝัั
(%)
, last_analyzed -- ะะฐัะฐ ะฟะพัะปะตะดะฝะตะณะพ ัะฑะพัะฐ ััะฐัะธััะธะบะธ
, ...
from all_tables
where owner = 'HR'
ClickHouse แแ แแ แแก แแแแแแแแแแกแ:
select name
, engine -- ะัะฟะพะปัะทัะตะผัะน "ะดะฒะธะถะพะบ" ("MergeTree", "Dictionary" etc)
, ...
from system.tables
where database = 'HR'
แแกแแแแกแ แ แแ แจแแแซแแแแ แแแแแแแแก แแแกแแแแ แแจแ (แ แแแแแกแแช แแฅแแก แกแแแขแแแแก แแฏแแฎแแแ แชแฎแ แแแแแแก แแแชแแแแ แแ แแแแแแจแแ แกแแแ แชแแแแ แกแฅแแแแแแก แแแชแแแแ):
select columnfamily_name
, compaction_strategy_class -- ะกััะฐัะตะณะธั ัะฑะพัะบะธ ะผััะพัะฐ
, gc_grace_seconds -- ะัะตะผั ะถะธะทะฝะธ ะผััะพัะฐ
, ...
from system.schema_columnfamilies
where keyspace_name = 'HR'
แกแฎแแ แแแแแชแแแแ แแแแแแแก แฃแแแขแแกแแแแกแแแแก, แแฅแแแ แแกแแแ แจแแแแซแแแแ แแกแแแแกแ แแแแฎแแแแแแแก แแแงแแแแแ (แแแแแแกแแช แแ แแฅแแก
แ แ แแฅแแ แฃแแแ, แแ แแแแ แจแแแแซแแแแ แแแแฆแแ แแแคแแ แแแชแแ แแ แ แแฎแแแแ แชแฎแ แแแแแแก, แแ แแแแ แแแแแแแ แแแแแกแแแแ แ แแแแแฅแขแแก แจแแกแแฎแแ. แแ แแแแแ แ, แแแแแแ แแแแแแแแแแ แแแแแ แแแแ แแกแแ แแแแก แกแฎแแแแแกแฎแแ แแแแแชแแแแ แแแแแแแกแแแแก, แ แแแแ แแชแแ, แแแแแแแแแ, แฐแแแ แ แกแขแแขแแแแแก แกแแ แแแจแ "PostgreSQL แแแแแชแแแแ แแแแแแแก แแแแฃแแแแขแแชแแแก แคแฃแแฅแชแแแแ" (
แจแแแแแแ, แแแแแฅแขแแแแก แแแแแแแชแแแกแ แแ แซแแแแแก แแก แแแแแแ แแแแ แแ แฃแคแ แ แแแฅแแแแแ, แแแแแแแแก แแแ แแ แแก แแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแฆแแ แแฃแกแขแแ แแแคแแ แแแชแแ แแ แคแแ แแแ, แ แแแแแจแแช แแก แแฎแแ แแฃแชแแแแแแแแ (แ แแแแ แช, แแแแแแแแแ, แแฆแฌแแ แแแแ แแแกแขแจแ
แแแแ แแชแแแแ แแแแแฅแขแแแแแ
แแแก แจแแแแแ แ แแช แแแแแแแแ แแ แจแแแแกแฌแแแแแ แกแแญแแ แ แแแแแฅแขแแแ, แแ แแ แแแแแแแแแ แ แแแแ แกแแกแแ แแแแแ แแแแแแ. แแฃแแแแ แแแแ, แแกแแแ แแแแแแแขแฃแ แแแ แแแแแแแก แแแฎแกแแแก แแแ แแจแ.
แกแแแแฃแแแ แแ แแ แแก, แ แแ แชแฎแ แแแแก แฃแแ แแแแ แฌแแจแแ แแ แแแแแ แแ แแแแแแงแฃแ แแแ แแแแฅแแแก แงแแแแ แแแแแชแแแแ แแแแแจแ:
drop table hr.persons
แแแแ แแ แชแฎแ แแแแก แจแแฅแแแแ แแก แฃแคแ แ แกแแแแขแแ แแกแ แฎแแแแ. แแแแฅแแแก แแแแแกแแแแ DBMS-แก (แแแ แจแแ แแก แแแแ แ NoSQL) แจแแฃแซแแแ โแจแแฅแแแแก แชแฎแ แแแโ แแแ แแฃ แแ แคแแ แแแ แแ แแแกแ แซแแ แแแแแ แแแฌแแแ แแแแแ แแแแกแฎแแแแแแแ (แกแแฎแแแ, แกแแแขแแแแก แกแแ, แแแแแชแแแแ แขแแแแแ), แแแแ แแ แกแฎแแ แแแขแแแแแ แจแแแซแแแแ แแแแแแ แแ แแแแกแฎแแแแแแแแแแก แแ แแแแแแแแแแฃแแแ แแแแแ. แจแแแ แแแฌแงแแแแแแแ แแ แแแแแ แแขแฃแแ DBMS-แแก แจแแกแแซแแแแแแแแแ. แฉแแแ แกแแงแแแ แแแ แแแแแแแแแ แแก, แ แแ Oracle-แแก แแแแฃแแแแขแแชแแแจแ แแ แแก แแฎแแแแ โแจแแจแแแแโ BNF-แแแ โแจแแฅแแแ แชแฎแ แแแแกโ แกแแแขแแฅแกแแกแแแแก.
แแกแแแ, แแแแ DBMS-แก แแฅแแก แกแแแฃแแแ แ แกแแแชแแคแแแฃแ แ แขแแแแก แแแแแฅแขแแแ, แ แแแแแแแช แแ แแ แแก แฎแแแแแกแแฌแแแแแ แกแฎแแ DBMS-แแแจแ. แฃแคแ แ แแแขแแช, แฉแแแ แจแแแแแซแแแ แจแแแแกแ แฃแแแ แแแแ แแชแแแแ แแ แ แแฎแแแแ แแแแแชแแแแ แแแแแก แแแแแฅแขแแแแ, แแ แแแแ แแแแแ DBMS-แแแช, แแแแแแแแแ, โแแแแแแโ แแ แแชแแกแ, แแแแแแแแแกแฃแคแแแ แแแ แแแแฃแแ แแแฎแกแแแ แแแแก แแ แแแแ, แแแแแแฅแขแแฃแ แแ แขแ แแกแแ แแแ, แแแแแแแแแ โแแฎแแแแ แฌแแแแแฎแแแกโ แ แแแแแจแ แแ แแ แแแแแ แกแฎแแ.
แแฎแแ แชแแขแ แแแแฎแแขแแ
แแ แ-แแ แแ แงแแแแแแ แแแแ แชแแแแแฃแแ แแแแชแแแแ แแแแแชแแแแ แแแแแก แแแแแฅแขแแแแ แแแแแ แแแแก แแแแแ แแ แแแ แจแแ แแก แแแแแฅแขแแแแก แแ แแแแจแแ แแแแก แแแแแฎแแ แแแแแ แกแฃแ แแแจแ. แแแแก แแแแแแแแ แจแแฃแซแแแ แแแแฅแแแก แแแแแกแแแแ แแ แแคแแแฃแ IDE-แก, แชแแแแแฃแ "แแ แซแแแแแแก แฎแแแแก" แฃแขแแแแขแแก, แกแแแชแแแแแแแแฃแ แแ แแคแแแฃแ แฎแแแกแแฌแงแแแแก แแ แแแแแแแแก. แแกแแแ แแแฎแแแแแแ แ แแฆแแชแแก แแฅแแแแแแแก โแ แแแแ แช แจแแฃแซแแแแโ แแ แแ แแ แแชแแกแแ แแชแแ แแ แแแแแแแแก แแแฎแแแแ แจแแแแซแแแแ แแฎแแแแ แแแแคแแแฃแ แแชแแแก แคแแแแจแ แ แแแแแแแแ แแแ แแแแขแ แแก แแ แแแขแแ แคแแแกแแก แฉแแ แแแแแแแก แแแฎแแแ แแแแ.
แแแแ แแ แแก แแ แแแแแแ แจแแแซแแแแ แแแแแแ แแแก แแแแ แแ แฃแคแ แ แแแ แขแแแ, แฃแคแ แ แแแฅแแแแ แแ แแแแแแแขแฃแ แ แแ แ แ แแฅแแ แฃแแแ แแแแแก แแแฎแแแ แแแแ. แแแแแกแแแแ แ แกแแ แแฃแแแก แแแแแ แแแแแแก แจแแกแแฅแแแแแแ, แฉแแแ แแแแฅแแก แ แแแแแแแแ แกแแแชแแแแแแแแฃแแ แแแ แแแ แแแแก แแแ (DOT, GraphML แแ แ.แจ.) แแ แแแแแแแก แแแแแแแชแแแแแก แแแแแ แแแคแแแขแแ (GraphViz, PlantUML, Mermaid), แ แแแแแแกแแช แจแแฃแซแแแแ แฌแแแแแแฎแแ แแกแแแ แแแกแขแ แฃแฅแชแแแแ แแ แแแแฃแแแฃแ แแ แฌแแ แแแแฉแแแแ แแกแแแ แกแฎแแแแแกแฎแแ แคแแ แแแขแจแ. . แแกแ, แฉแแแ แฃแแแ แแแชแแ แ แแแแ แแแแแฆแแ แแแคแแ แแแชแแ แแแแแฅแขแแแแกแ แแ แแแ แจแแ แแก แแแแจแแ แแแแก แจแแกแแฎแแ.
แแฅ แแ แแก แแแขแแ แ แแแแแแแแ แแแแกแ, แแฃ แ แแแแ แจแแแซแแแแ แแก แแแแแแงแฃแ แแแแแแก PlantUML-แแก แแแแแงแแแแแแ
select '@startuml'||chr(10)||'hide methods'||chr(10)||'hide stereotypes' union all
select distinct ccu.table_name || ' --|> ' ||
tc.table_name as val
from table_constraints as tc
join key_column_usage as kcu
on tc.constraint_name = kcu.constraint_name
join constraint_column_usage as ccu
on ccu.constraint_name = tc.constraint_name
where tc.constraint_type = 'FOREIGN KEY'
and tc.table_name ~ '.*' union all
select '@enduml'
แแ แแฃ แชแแขแแก แชแแแแแ, แแแจแแ แกแแคแฃแซแแแแแ
SQL แแแแฎแแแแ แชแแขแ แฃแคแ แ แ แแฃแแแ
-- ะจะฐะฟะบะฐ
select '@startuml
!define Table(name,desc) class name as "desc" << (T,#FFAAAA) >>
!define primary_key(x) <b>x</b>
!define unique(x) <color:green>x</color>
!define not_null(x) <u>x</u>
hide methods
hide stereotypes'
union all
-- ะขะฐะฑะปะธัั
select format('Table(%s, "%s n information about %s") {'||chr(10), table_name, table_name, table_name) ||
(select string_agg(column_name || ' ' || upper(udt_name), chr(10))
from information_schema.columns
where table_schema = 'public'
and table_name = t.table_name) || chr(10) || '}'
from information_schema.tables t
where table_schema = 'public'
union all
-- ะกะฒัะทะธ ะผะตะถะดั ัะฐะฑะปะธัะฐะผะธ
select distinct ccu.table_name || ' "1" --> "0..N" ' || tc.table_name || format(' : "A %s may haven many %s"', ccu.table_name, tc.table_name)
from information_schema.table_constraints as tc
join information_schema.key_column_usage as kcu on tc.constraint_name = kcu.constraint_name
join information_schema.constraint_column_usage as ccu on ccu.constraint_name = tc.constraint_name
where tc.constraint_type = 'FOREIGN KEY'
and ccu.constraint_schema = 'public'
and tc.table_name ~ '.*'
union all
-- ะะพะดะฒะฐะป
select '@enduml'
แแฃ แแแ แแแ แแแแแแแ แแแแแ, แแแแฃแแแแแแชแแแก แแ แแแแแ แแแกแขแ แฃแแแแขแ แแกแแแ แแงแแแแแก แแกแแแแก แจแแแแแฎแแแแก. แแแ แแแแแ, แแก แแแแฎแแแแแแ แฉแแแฃแแแแ แแ แฆแ แแแ
แแแขแ แแแ แแ แแแแแขแแ แแแแ
แแแแแแแแแ แขแ แแแแชแแฃแแแ แ แแฃแ แแแแแแ - แแแแแชแแแแ แแแแแก แแฃแจแแแแแก แแแแแขแแ แแแแ. แแแฎแกแแแก แแแขแแ แ แแแแแแแแ แแแแแแ, แ แแแแแแช แแแแแงแแ โแแ แแแ แฉแแแแ แแแแแแแ แแโ. แกแฎแแ แแ แแแฅแขแแ แชแฎแแแ แแแแ แแแ แแแแฃแแ แซแแแแ แ DBA แแ แ แแแแแแแแ แแแแแแแแแ แแ แแแก แแแ แแแแ แแชแแแแแ แแ แแแแกแแ แฃแแแฎแแแก แแแ แแแแ (แแแฃแฎแแแแแแ แแแแกแ, แ แแ, แญแแ แแแแก แแแแแฎแแแ, แแก แแฃแจแแแแแ แกแแแฆแแช แจแแแแแ แแแ แแฃแกแจแ). "X" แกแแแแแ, แ แแแแกแแช แแแแ แกแแชแแแ แแแญแ แแแแก แกแแฌแแ แแแก แกแแกแขแแแแ แแแแแ แแ แแฎแแ แแแแฌแงแ "แชแฃแแแ แแ แซแแแแ", แแแ แฉแฃแแแ แแแแแแแแแแแ แแ แแคแแแแแแก แกแแ แแแจแแขแแแ Oracle Enterprise Manager-แแกแแแ, แ แแแแแแแแช แแแ แงแฃแ แแแฆแแแแ แฎแแแแแกแแแ แฎแแแแแกแแแ แฎแแแแแกแแแ แฎแแแแแกแแแ แแฆแแแจแแ แแ แแขแแแฃแแ แแแแแแแแ แฌแแแแแ แแแ แแแ แแ "แแแกแแแแแแ" ( แแก, แ แแแแแ แ แแ แแแฅแแแ, แแแแแ แแ แแแแฎแแแ แ). แแ แแ "แคแแขแ แแแ แแแแก" แกแแคแฃแซแแแแแ แแแแแฌแแ แแแฃแ แแแแแแ. แแแแแแ แแฃแแแ, แแ แแแแก แฐแฅแแแแ แฌแแแแแ แซแแแ แคแแก (แแ แกแแขแงแแแก แแ แแแ แแแแจแแแแแแแแ) แกแแฌแแ แแแก แแแแแฏแแ แแแ, แ แแแแแ แกแแกแขแแแ แ แแฃแแ แแ แซแแแ แแ, แฃแชแแ โแแแแแแแแแ แแแ แ แแฆแแชแแก แฌแแแฌแงแแแแแแ แแ แงแแแแแคแแ แก แแ แฆแแแแแโ. แแแแขแแ, แแแแแแแแแ แแแแ "แแแแแ แแฃแแแ" แแแแแแก แแฃแฎแ แฃแญแแแแก แแแแแแแแแแแ แแแแ แแ แแแแแแ แแ แแแแแฃแจแแแก แแแฉแ. แแฃ DBA-แก แแฃแฅแแ แแก แฌแแ แแแ แฃแแฎแแแแก แแแแแแแแจแ แแฆแแ แฉแแแแแแแแแ, แแแจแแ แงแแแแ แจแแแแแ แแแแแกแฃแแแฅแแแแ แแ แแแฃแแ แฃแแแแแแแ แแแแแก แแแแแแแแแแ แแแแชแแแแแก (แแฎแแ แฌแแ แแแแแแ).
แแแแ แแ แแแแแขแแ แแแแแก แแ แแชแแกแ แจแแแซแแแแ แแแแแแงแฃแ แแแแแแก แฃแคแ แ แกแแฎแแแแกแ แแ แแแแแแ แฃแแ, แแ แ แแช แแแแแแ แแ, แงแแแแแกแแแแก แฎแแแแแกแแฌแแแแแ แแ แแแแญแแแ แแแแ. แแแกแ แซแแ แแแแแ แแแฌแแแ แแแแแช, แ แแแแ แช แซแแ แแแแแ แแแแแขแแ แแแแแก แกแแกแขแแแแแแก แแแแแขแแแ (แ แแช แ แ แแฅแแ แฃแแแ แกแแกแแ แแแแแ แแ แฎแจแแ แจแแแแฎแแแแแจแ แจแแฃแชแแแแแแ). แแแแแกแแแแ แ DBMS แแแแแกแฃแคแแแ แแ แแแกแแแฃแขแฃแ แแ แฃแคแแกแแ แแแคแแ แแแชแแแก แแแกแแแแแ แแแแแ แแแกแ แแแแแแแแแแแ แแแแแแแ แแแแแกแ แแ แแฃแจแแแแแก แจแแกแแฎแแ. แแแแแ โแกแแกแฎแแแแโ Oracle DB-แจแ, แแฃแจแแแแแก แจแแกแแฎแแ แแแแฅแแแก แแแแแกแแแแ แ แแแคแแ แแแชแแแก แแแฆแแแ แจแแกแแซแแแแแแแ แกแแกแขแแแแก แฎแแแแแแแแ, แแแฌแงแแแฃแแ แแ แแชแแกแแแแแแ แแ แกแแกแแแแแแแ แแฃแคแแ แฃแแ แฅแแจแแก แแแแแแแ แแแแแแแ (แแแแแแแแแ,
แแแแแแ แแ, แจแแแแ แแฆแแแฃแแ แแแขแ แแแแก แแแ แแแแฃแแ แแแแแฅแชแแแแแ แแ (Telegraf, Metricbeat, Collectd), แ แแแแแกแแช แจแแฃแซแแแ แจแแแกแ แฃแแแก แแแ แแแแฃแแ sql แแแแฎแแแแแแ, แแ แแแขแ แแแแก แจแแแแฎแแ (InfluxDB, Elasticsearch, Timescaledb) แแ แแแแฃแแแแแแขแแ แ (Grafana, Kibana), แจแแแแซแแแแ แแแแฆแแ แกแแแแแแ แแแ แขแแแ แแ แแแฅแแแแ แแแแแขแแ แแแแแก แกแแกแขแแแ, แ แแแแแแช แแญแแแ แแ แแฅแแแแ แแแขแแแ แแ แแแฃแแ แกแฎแแ แกแแกแขแแแฃแ แแแขแ แแแแกแแแ (แแแฆแแแฃแแ, แแแแแแแแแ, แแแแแแแชแแแก แกแแ แแแ แแแแ, OS-แแแ แแ แ.แจ.). แ แแแแ แช, แแแแแแแแแ, แแก แแแแแแแ pgwatch2-แจแ, แ แแแแแแช แแงแแแแแก InfluxDB + Grafana แแแแแแแแชแแแก แแ แแแแฎแแแแแแแก แแ แแแแแแแแแก แกแแกแขแแแแก แฎแแแแแแ, แ แแแแแแแแช แแกแแแ แจแแกแแซแแแแแแแ แฌแแแแแ.
แกแแแ แแ แฏแแแจแ
แแ แแก แแฎแแแแ แแแแฎแแแแแแแ แฉแแแแแแแแแแแ แแแแกแ, แแฃ แ แ แจแแแซแแแแ แแแแแแแแก แฉแแแแก แแแแแชแแแแ แแแแแกแแแ แ แแแฃแแแ แฃแแ SQL แแแแแก แแแแแงแแแแแแ. แแแ แฌแแฃแแแแฃแแ แแแ , แจแแแแซแแแแ แแแแแแ แแ แแแแแ แกแฎแแ แแแแแงแแแแแ, แแแฌแแ แแ แแแแแแขแแ แแแจแ. แแ แฉแแแ แแแกแแฃแแ แแแ แแแแแ, แแฃ แ แแแแ (แแ แ แแช แแแแแแ แแ แ แแขแแ) แแ แงแแแแแคแ แแก แแแขแแแแขแแแแชแแ แแ แจแแแแแ แฏแแ แแ แฉแแ แแแ แแฅแแแแก CI/CD แแแแกแแแแแจแ.
แฌแงแแ แ: www.habr.com