1654664700
今こそ、リレーショナルデータベースとSQLを学ぶ絶好の機会です。Web開発からデータサイエンスまで、どこでも使用されています。
Stack Overflow 2021調査では、プロの開発者が使用した上位5つのデータベーステクノロジのうち4つは、リレーショナルデータベース管理システムでした。
PostgreSQLは、最初に学習するリレーショナルデータベース管理システムとして優れた選択肢です。
freeCodeCampリレーショナルデータベース認定から学習している場合でも、自分のコンピューターでPostgreSQLを試している場合でも、データベースを作成および管理し、データベースにデータを挿入し、データベースからデータをクエリする方法が必要です。
PostgreSQLと対話するためのグラフィカルアプリケーションはいくつかありますが、psqlとコマンドラインを使用することが、データベースと通信するための最も直接的な方法である可能性があります。
psqlは、ターミナルインターフェイスを介してPostgreSQLデータベースと対話できるようにするツールです。PostgreSQLをマシンにインストールすると、psqlが自動的に含まれます。
psqlを使用すると、SQLクエリを記述し、それらをPostgreSQLに送信して、結果を表示できます。また、データベースを管理するためのメタコマンド(円記号で始まる)を使用することもできます。スクリプトを記述して、データベースに関連するタスクを自動化することもできます。
さて、ローカルコンピュータでデータベースを実行し、コマンドラインを使用することは、最初は恐ろしいように思えるかもしれません。私はそれが本当にそれほど悪くないことをあなたに言うためにここにいます。このガイドでは、データベースの作成、管理、バックアップ、復元の方法など、コマンドラインからPostgreSQLデータベースを管理するための基本について説明します。
コンピュータにPostgreSQLをまだインストールしていない場合は、PostgreSQLの公式ドキュメントに記載されているオペレーティングシステムの手順に従ってください。
PostgreSQLをインストールすると、パスワードの入力を求められます。作成するデータベースに接続するために必要になるため、これは安全な場所に保管してください。
psqlを使用してデータベースに接続する場合、2つのオプションがあります。コマンドラインまたはpsqlアプリケーションを使用して接続できます。どちらもほぼ同じエクスペリエンスを提供します。
ターミナルを開きます。と入力すると、psqlがインストールされていることを確認できますpsql --version
。が表示されます。これは、マシンにインストールされているPostgreSQLのバージョンですpsql (PostgreSQL) version_number
。version_number
私の場合は14.1です。
コマンドラインからpsqlのバージョンを確認する
データベースに接続するためのパターンは次のとおりです。
psql -d database_name -U username
-d
フラグはの代わりになり--dbname
ます-U
が、の代わりになり--username
ます。
PostgreSQLをインストールすると、デフォルトのデータベースとユーザーが作成され、どちらも。と呼ばれpostgres
ます。したがって、Enterキーを押して、スーパーユーザーとしてデータベースpsql -d postgres -U postgres
に接続します。postgrespostgres
psql -d postgres -U postgres
パスワードの入力を求められます。コンピューターにPostgreSQLをインストールしたときに選択したパスワードを入力します。ターミナルプロンプトが変わり、postgres
データベースに接続していることを示します。
psqlを使用してコマンドラインからデータベースに接続する
(スーパーユーザーとしてではなくpostgres
)自分自身としてデータベースに直接接続する場合は、ユーザー名の値としてシステムのユーザー名を入力します。
psqlアプリケーションを起動します–「SQLシェル(psql)」と呼ばれます。サーバー、データベース、ポート、およびユーザー名の入力を求められます。localhost
Enterキーを押すだけでpostgres
、デフォルト値(、、、、、および)を選択でき5432
ますpostgres
。
次に、PostgreSQLのインストール時に選択したパスワードの入力を求められます。これを入力すると、ターミナルプロンプトが変わり、postgres
データベースに接続していることが示されます。
psqlアプリケーションを使用してデータベースに接続する
注: Windowsを使用している場合は、「コンソールコードページ(850)はWindowsコードページ(1252)とは異なります。8ビット文字が正しく機能しない可能性があります。詳細については、psqlリファレンスページの「Windowsユーザー向けの注意事項」を参照してください。」この段階では、これについて心配する必要はありません。詳細については、psqlのドキュメントを参照してください。
すべてのpsqlメタコマンドのリストと、それらの機能の概要を表示するには、\?
コマンドを使用します。
\?
psqlのヘルプコマンド
PostgreSQLコマンドのヘルプが必要な場合は、またはとコマンドを使用し\h
て\help
ください。
\h COMMAND
これにより、コマンドの説明、その構文(角括弧内のオプション部分を含む)、およびPostgreSQLドキュメントの関連部分のURLが提供されます。
DROPTABLEステートメントを説明するpsql
時間がかかるコマンドを実行したり、コンソールに大量の情報を出力したりした場合は、。と入力してコマンドを終了できますq
。
q
データベースを管理する前に、データベースを作成する必要があります。
注: SQLコマンドはセミコロンで終了する必要がありますが、メタコマンド(円記号で始まる)はセミコロンで終了する必要はありません。
データベースを作成するためのSQLコマンドは次のとおりです。
CREATE DATABASE database_name;
このガイドでは、本のデータを処理するので、というデータベースを作成しましょうbooks_db
。
CREATE DATABASE books_db;
listコマンドを使用して、使用可能なすべてのデータベースのリストを表示できます。
\l
すべてのデータベースの一覧表示
、、、、およびが表示books_db
されます。(このコマンドは、実際にはと呼ばれる標準データベースをコピーすることで機能します。これについて詳しくは、PostgreSQLのドキュメントを参照してください。)postgrestemplate0template1CREATE DATABASEtemplate1
を使用\l+
すると、データベースのサイズやそのテーブルスペース(データベースを表すファイルが保存されるファイルシステム内の場所)などの追加情報が表示されます。
\l+
追加情報を含むすべてのデータベースの一覧表示
現在、デフォルトのpostgres
データベースに接続しています。データベースに接続したり、データベースを切り替えたりするには、\c
コマンドを使用します。
\c database_name
だから\c books_db
あなたをbooks_db
データベースに接続します。現在接続しているデータベースを反映して、ターミナルプロンプトが変化することに注意してください。
データベースの切り替え
データベースを削除する場合は、DROP DATABASE
コマンドを使用します。
DROP DATABASE database_name;
postgres
などのスーパーユーザーである場合、またはデータベースの所有者である場合にのみ、データベースを削除できます。
存在しないデータベースを削除しようとすると、エラーが発生します。IF EXISTS
代わりに通知を受け取るために使用します。
DROP DATABASE IF EXISTS database_name;
データベースの削除
アクティブな接続があるデータベースを削除することはできません。したがって、現在接続しているデータベースを削除する場合は、別のデータベースに切り替える必要があります。
テーブルを管理する前に、いくつかのテーブルを作成し、それらにサンプルデータを入力する必要があります。
テーブルを作成するコマンドは次のとおりです。
CREATE TABLE table_name();
これにより、空のテーブルが作成されます。列の値を括弧に渡して、列のあるテーブルを作成することもできます。少なくとも、基本テーブルには、主キー(各行を区別するための一意の識別子)と、データを含む列が必要です。
私たちbooks_db
のために、著者用のテーブルと本用のテーブルを作成します。著者の場合、名前と名前を記録します。書籍については、タイトルと出版年を記録します。
著者first_name
とlast_name
本title
がnullでないことを確認します。これは、著者について知るための非常に重要な情報だからです。これを行うために、NOT NULL
制約を含めます。
CREATE TABLE authors(
author_id SERIAL PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL
);
CREATE TABLE books(
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
published_year INT
);
CREATE TABLE
テーブルが正常に作成された場合は、端末に印刷されたことが表示されます。
次に、本に外部キーを追加して、2つのテーブルを接続しましょう。外部キーは、別のテーブルの主キーを参照する一意の識別子です。もちろん、本には複数の著者がいる可能性がありますが、今のところ、多対多の関係の複雑さに立ち入るつもりはありません。
books
次のコマンドを使用して、に外部キーを追加します。
ALTER TABLE books ADD COLUMN author_id INT REFERENCES authors(author_id);
次に、いくつかのサンプルデータをテーブルに挿入しましょう。から始めましょうauthors
。
INSERT INTO authors (first_name, last_name)
VALUES (‘Tamsyn’, ‘Muir’), (‘Ann’, ‘Leckie’), (‘Zen’, ‘Cho’);
からすべてを選択しauthors
て、挿入コマンドが機能したことを確認します。
SELECT * FROM authors;
著者テーブルからのすべてのデータのクエリ
次に、いくつかの本のデータをに挿入しbooks
ます。
INSERT INTO books(title, published_year, author_id)
VALUES (‘Gideon the Ninth’, 2019, 1), (‘Ancillary Justice’, 2013, 2), (‘Black Water Sister’, 2021, 3);
実行するSELECT * FROM books;
と、本のデータが表示されます。
Booksテーブルからのすべてのデータのクエリ
このコマンドを使用し\dt
て、データベース内のすべてのテーブルを一覧表示できます。
\dt
あなたがbooks_db
見るbooks
と。authors
とも表示books_book_id_seq
されauthors_author_id_seq
ます。SERIAL
これらは、主キーを生成するために使用したため、テーブルによってIDとして使用される整数のシーケンスを追跡します。
データベース内のすべてのテーブルの一覧表示
特定のテーブルに関する詳細を表示するには、describetableコマンドを使用できます\d table_name
。これにより、列、インデックス、および他のテーブルへの参照が一覧表示されます。
\d table_name
著者テーブルの説明
を使用\dt+ table_name
すると、ストレージや圧縮などの詳細情報が提供されます。
テーブルの名前を変更する必要がある場合は、ALTER TABLE
コマンドを使用して名前を変更できます。
ALTER TABLE table_name RENAME TO new_table_name;
テーブルを削除する場合は、コマンドを使用できますDROP TABLE
。
DROP TABLE table_name;
存在しないテーブルを削除しようとすると、エラーが発生します。IF EXISTS
ステートメントにオプションを含めることで、これを回避できます。このようにして、代わりに通知を受け取ります。
DROP TABLE IF EXISTS table_name;
より長いSQLクエリを作成している場合、コマンドラインはそれを行うための最も人間工学的な方法ではありません。SQLをファイルに書き込んでから、psqlに実行させる方がおそらく良いでしょう。
psqlを使用していて、次のクエリが長くなると思われる場合は、psqlからテキストエディタを開いてそこに書き込むことができます。既存のクエリがある場合、またはサンプルデータをロードするために複数のクエリを実行したい場合は、すでに書き込まれているファイルからコマンドを実行できます。
コマンドを入力する\e
と、psqlはテキストエディタを開きます。エディターを保存して閉じると、psqlは作成したコマンドを実行します。
\e
テキストエディタでコマンドを書く
Windowsでは、psqlのデフォルトのテキストエディタはメモ帳ですが、MacOとLinuxではviです。EDITOR
コンピューターの環境変数に値を設定することで、これを別のエディターに変更できます。
実行するコマンドが特に長い場合や複数のコマンドがある場合は、事前にファイルにSQLを記述し、準備ができたらpsqlにそのファイルを実行させることをお勧めします。
この\i
コマンドを使用すると、ファイルを端末に入力したかのように、ファイルから入力を読み取ることができます。
\i path_to_file/file_name.sql
注:このコマンドをWindowsで実行している場合でも、ファイルパスでスラッシュを使用する必要があります。
パスを指定しない場合、psqlはPostgreSQLに接続する前に最後にいたディレクトリでファイルを検索します。
ファイルからのSQLコマンドの実行
クエリにかかる時間を確認したい場合は、クエリの実行タイミングをオンにすることができます。
\timing
これにより、クエリの完了にかかった時間がミリ秒単位で表示されます。
コマンドを再度実行する\timing
と、クエリの実行タイミングがオフになります。
クエリ実行タイミングの使用
データを含むCSVファイルがあり、これをPostgreSQLデータベースにロードする場合は、コマンドラインからpsqlを使用してこれを行うことができます。
まず、次の構造で呼び出されるCSVファイルを作成しますfilms.csv
(Excel、Googleスプレッドシート、Numbers、またはその他のプログラムを使用するかどうかは関係ありません)。
ピクサーフィルムデータを含むスプレッドシート
psqlを開き、films_db
データベースを作成して接続し、films
テーブルを作成します。
CREATE DATABASE films_db;
\c films_db
CREATE TABLE films(
id SERIAL PRIMARY KEY,
title VARCHAR(100),
year INT,
running_time INT
);
次に、コマンドを使用し\copy
てCSVファイルをにインポートできますfilms
。CSVファイルがコンピューター上にある場所への絶対パスを指定する必要があります。
\copy films(title, year, running_time) FROM 'path_to_file' DELIMITER ‘,’ CSV HEADER;
このDELIMITER
オプションは、インポートされるファイルの各行の列を区切る文字をCSV
指定し、それがCSVファイルであることをHEADER
指定し、ファイルに列の名前を含むヘッダー行が含まれることを指定します。
注:テーブルの列名はのfilms
列名と一致する必要はありませんがfilms.csv
、同じ順序である必要があります。
SELECT * FROM films;
プロセスが成功したかどうかを確認するために使用します。
.csvファイルからのデータのインポート
pg_dump
データベースをバックアップする必要がある場合pg_dump
は、データベースをSQLスクリプトファイルまたは他の種類のアーカイブファイルに抽出できるユーティリティです。
まず、コマンドライン(psqlではない)で、PostgreSQLbin
フォルダーに移動します。
cd "C:\Program Files\PostgreSQL\14\bin"
次に、ユーザー名としてを使用して次のコマンドを実行し、使用postgres
するデータベースと出力ファイルを入力します。
pg_dump -U username database_name > path_to_file/filename.sql
ユーザー名にを使用すると、スーパーユーザーのパスワードの入力postgres
を求められます。次に、データベースの再作成に必要なSQLコマンドを含むファイルを作成します。postgrespg_dump.sql
データベースを.sqlファイルにバックアップする
出力ファイルのパスを指定しない場合は、pg_dump
PostgreSQLに接続する前に最後にあったディレクトリにファイルを保存します。
Films.sqlバックアップファイルの内容
-v
または--verbose
フラグを渡して、各ステップでpg_dump
何が行われているかを確認できます。pg_dump
pg_dumpを冗長モードで実行する
.tar
データベースを(アーカイブ形式)などの他のファイル形式にバックアップすることもできます。
pg_dump -U username -F t database_name > path_to_file/filename.tar
ここで、-F
フラグはpg_dump
、出力形式を指定するt
ことを示し、その.tar
形式になることを示します。
psqlまたはpg_restore
ユーティリティを使用して、バックアップファイルからデータベースを復元できます。どちらを選択するかは、データベースの復元元のファイルの種類によって異なります。
.sql
、psqlを使用します。.tar
、を使用しますpg_restore
。ファイルからデータベースを復元する.sql
には、コマンドラインで(psqlではなく)を使用しますpsql -U username -d database_name -f filename.sql
。
以前に使用したfilms_db
データベースとfilms.sql
ファイルを使用することも、新しいバックアップファイルを作成することもできます。
データを復元するファイル用の空のデータベースを作成します。films.sql
復元に使用している場合films_db
、最も簡単な方法は、削除films_db
して再作成することです。
DROP DATABASE films_db;
CREATE DATABASE films_db;
別のターミナル(psqlではない)で、次のコマンドを実行しpostgres
、ユーザー名、および使用しているデータベースとバックアップファイルの名前を渡します。
psql -U username -d database_name -f path_to_file/filename.sql
フラグはpsql-d
に特定のデータベースを指し、-f
フラグはpsqlに指定されたファイルから読み取るように指示します。
バックアップファイルのパスを指定しない場合、psqlはPostgreSQLに接続する前に最後にあったディレクトリでファイルを検索します。
スーパーユーザーのパスワードの入力を求めpostgres
られ、psqlがデータベースを再作成している間、一連のコマンドがコマンドラインに出力されます。
psqlを使用したデータベースの復元
このコマンドは、復元中に発生したエラーをすべて無視します。エラーが発生した場合にデータベースの復元を停止する場合は、を渡し--set ON_ERROR_STOP=on
ます。
psql -U username -d database_name --set ON_ERROR_STOP=on -f filename.sql
pg_restore
を使用してデータベースを復元するにはpg_restore
、を使用しますpg_restore -U username -d database_name path_to_file/filename.tar
。
データを復元するファイル用の空のデータベースを作成します。films_db
ファイルから復元する場合films.tar
、最も簡単な方法は、ファイルを削除films_db
して再作成することです。
DROP DATABASE films_db;
CREATE DATABASE films_db;
コマンドライン(psqlではない)で、次のコマンドを実行しpostgres
、ユーザー名、および使用しているデータベースとバックアップファイルの名前を渡します。
pg_restore -U username -d database_name path_to_file/filename.tar
pg_restoreを使用したデータベースの復元
-v
または--verbose
フラグを渡しpg_restore
て、各ステップで何が行われているかを確認することもできます。
詳細モードでのpg_restoreの使用
psqlを終了し、それを終了する場合は、quit
またはを入力し\q
ます。
\q
これにより、psqlアプリケーションを使用している場合は閉じ、コマンドラインからpsqlを使用している場合は通常のコマンドプロンプトに戻ります。
スキーマ、ロール、テーブルスペースの管理など、psqlで実行できることは他にもたくさんあります。ただし、このガイドは、コマンドラインからPostgreSQLデータベースの管理を開始するのに十分なはずです。
PostgreSQLとリレーショナルデータベースについて引き続き学習する際に、このガイドがお役に立てば幸いです。
このストーリーは、もともとhttps://www.freecodecamp.org/news/manage-postgresql-with-psql/で公開されました
1654664400
Ahora es un buen momento para aprender bases de datos relacionales y SQL. Desde el desarrollo web hasta la ciencia de datos, se utilizan en todas partes.
En la encuesta Stack Overflow 2021 , 4 de las 5 principales tecnologías de bases de datos utilizadas por los desarrolladores profesionales eran sistemas de gestión de bases de datos relacionales.
PostgreSQL es una excelente opción como primer sistema de administración de bases de datos relacionales para aprender.
Ya sea que esté aprendiendo de la certificación de base de datos relacional freeCodeCamp o esté probando PostgreSQL en su propia computadora, necesita una forma de crear y administrar bases de datos, insertar datos en ellas y consultar datos de ellas.
Si bien existen varias aplicaciones gráficas para interactuar con PostgreSQL, usar psql y la línea de comandos es probablemente la forma más directa de comunicarse con su base de datos.
psql es una herramienta que le permite interactuar con bases de datos PostgreSQL a través de una interfaz de terminal. Cuando instala PostgreSQL en una máquina, psql se incluye automáticamente.
psql le permite escribir consultas SQL, enviarlas a PostgreSQL y ver los resultados. También le permite usar metacomandos (que comienzan con una barra invertida) para administrar las bases de datos. Incluso puede escribir scripts y automatizar tareas relacionadas con sus bases de datos.
Ahora, ejecutar una base de datos en su computadora local y usar la línea de comando puede parecer intimidante al principio. Estoy aquí para decirles que realmente no es tan malo. Esta guía le enseñará los aspectos básicos de la administración de bases de datos de PostgreSQL desde la línea de comandos, incluido cómo crear, administrar, respaldar y restaurar bases de datos.
Si aún no ha instalado PostgreSQL en su computadora, siga las instrucciones para su sistema operativo en la documentación oficial de PostgreSQL .
Cuando instale PostgreSQL, se le pedirá una contraseña. Guárdelo en un lugar seguro, ya que lo necesitará para conectarse a cualquier base de datos que cree.
Tiene dos opciones cuando usa psql para conectarse a una base de datos: puede conectarse a través de la línea de comando o usando la aplicación psql. Ambos proporcionan prácticamente la misma experiencia.
Abre una terminal. Puede asegurarse de que psql esté instalado escribiendo psql --version
. Debería ver psql (PostgreSQL) version_number
dónde version_number
está la versión de PostgreSQL que está instalada en su máquina. En mi caso, es 14.1.
Comprobando la versión de psql a través de la línea de comando
El patrón para conectarse a una base de datos es:
psql -d database_name -U username
La -d
bandera es una alternativa más corta para --dbname
while -U
es una alternativa para --username
.
Cuando instaló PostgreSQL, se crearon una base de datos y un usuario predeterminados, ambos llamados postgres
. Así que ingrese psql -d postgres -U postgres
para conectarse a la postgres
base de datos como postgres
superusuario.
psql -d postgres -U postgres
Se te solicitará una contraseña. Ingrese la contraseña que eligió cuando instaló PostgreSQL en su computadora. El indicador de su terminal cambiará para mostrar que ahora está conectado a la base de postgres
datos.
Conexión a una base de datos desde la línea de comandos con psql
Si desea conectarse directamente a una base de datos como usted mismo (en lugar de como postgres
superusuario), ingrese el nombre de usuario de su sistema como el valor de nombre de usuario.
Inicie la aplicación psql: se llamará "SQL Shell (psql)". Se le pedirá un servidor, una base de datos, un puerto y un nombre de usuario. Simplemente presione enter para seleccionar los valores predeterminados, que son localhost
, postgres
, 5432
y postgres
.
A continuación, se le pedirá la contraseña que eligió cuando instaló PostgreSQL. Una vez que ingrese esto, el indicador de su terminal cambiará para mostrar que está conectado a la base de postgres
datos.
Conexión a una base de datos con la aplicación psql
Nota: si está en Windows, es posible que vea una advertencia como “La página de códigos de la consola (850) difiere de la página de códigos de Windows (1252) Es posible que los caracteres de 8 bits no funcionen correctamente. Consulte la página de referencia de psql 'Notas para usuarios de Windows' para obtener más detalles". No necesita preocuparse por esto en esta etapa. Si desea obtener más información al respecto, consulte la documentación de psql .
Para ver una lista de todos los metacomandos de psql y un breve resumen de lo que hacen, use el \?
comando.
\?
comando de ayuda de psql
Si desea ayuda con un comando de PostgreSQL, use \h
o \help
y el comando.
\h COMMAND
Esto le dará una descripción del comando, su sintaxis (con partes opcionales entre corchetes) y una URL para la parte relevante de la documentación de PostgreSQL.
psql que describe la instrucción DROP TABLE
Si ejecutó un comando que tarda mucho tiempo o imprime demasiada información en la consola, puede salir escribiendo q
.
q
Antes de que pueda administrar cualquier base de datos, deberá crear una.
Nota: los comandos SQL deben terminar con un punto y coma, mientras que los metacomandos (que comienzan con una barra invertida) no necesitan hacerlo.
El comando SQL para crear una base de datos es:
CREATE DATABASE database_name;
Para esta guía, vamos a trabajar con datos de libros, así que vamos a crear una base de datos llamada books_db
.
CREATE DATABASE books_db;
Puede ver una lista de todas las bases de datos disponibles con el comando list.
\l
Listado de todas las bases de datos
Debería ver books_db
, así como postgres
, template0
y template1
. (El CREATE DATABASE
comando en realidad funciona copiando la base de datos estándar, llamada template1
. Puede leer más sobre esto en la documentación de PostgreSQL ).
El uso \l+
mostrará información adicional, como el tamaño de las bases de datos y sus espacios de tabla (la ubicación en el sistema de archivos donde se almacenarán los archivos que representan la base de datos).
\l+
Listado de todas las bases de datos con información adicional
Actualmente sigues conectado a la base de datos predeterminada postgres
. Para conectarse a una base de datos o cambiar entre bases de datos, use el \c
comando.
\c database_name
Entonces \c books_db
lo conectará a la base de books_db
datos. Tenga en cuenta que el aviso de su terminal cambia para reflejar la base de datos a la que está conectado actualmente.
Cambio de bases de datos
Si desea eliminar una base de datos, use el DROP DATABASE
comando.
DROP DATABASE database_name;
Solo podrá eliminar una base de datos si es un superusuario, como postgres
, o si es el propietario de la base de datos.
Si intenta eliminar una base de datos que no existe, obtendrá un error. Úselo IF EXISTS
para obtener un aviso en su lugar.
DROP DATABASE IF EXISTS database_name;
Eliminación de una base de datos
No puede eliminar una base de datos que tenga conexiones activas. Entonces, si desea eliminar la base de datos a la que está conectado actualmente, deberá cambiar a otra base de datos.
Antes de que podamos administrar tablas, debemos crear algunas y completarlas con algunos datos de muestra.
El comando para crear una tabla es:
CREATE TABLE table_name();
Esto creará una tabla vacía. También puede pasar valores de columna entre paréntesis para crear una tabla con columnas. Como mínimo, una tabla básica debe tener una clave principal (un identificador único para diferenciar cada fila) y una columna con algunos datos.
Para nuestro books_db
, crearemos una tabla para autores y otra para libros. Para los autores, registraremos su nombre y apellido. Para los libros, registraremos el título y el año en que se publicaron.
Nos aseguraremos de que los autores first_name
y last_name
los libros title
no sean nulos, ya que esta es información bastante vital para saber sobre ellos. Para ello incluimos la NOT NULL
restricción.
CREATE TABLE authors(
author_id SERIAL PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL
);
CREATE TABLE books(
book_id SERIAL PRIMARY KEY,
title VARCHAR(100) NOT NULL,
published_year INT
);
Verá CREATE TABLE
impreso en la terminal si la tabla se creó correctamente.
Ahora conectemos las dos tablas agregando una clave externa a los libros. Las claves externas son identificadores únicos que hacen referencia a la clave principal de otra tabla. Los libros pueden, por supuesto, tener varios autores, pero no vamos a entrar en las complejidades de las relaciones de muchos a muchos en este momento.
Agregue una clave externa books
con el siguiente comando:
ALTER TABLE books ADD COLUMN author_id INT REFERENCES authors(author_id);
A continuación, insertemos algunos datos de muestra en las tablas. Empezaremos con authors
.
INSERT INTO authors (first_name, last_name)
VALUES (‘Tamsyn’, ‘Muir’), (‘Ann’, ‘Leckie’), (‘Zen’, ‘Cho’);
Seleccione todo desde authors
para asegurarse de que el comando de inserción funcionó.
SELECT * FROM authors;
Consultar todos los datos de la tabla de autores
A continuación, insertaremos algunos datos de libros en books
.
INSERT INTO books(title, published_year, author_id)
VALUES (‘Gideon the Ninth’, 2019, 1), (‘Ancillary Justice’, 2013, 2), (‘Black Water Sister’, 2021, 3);
Si corres SELECT * FROM books;
verás los datos del libro.
Consultar todos los datos de la tabla de libros
Puede usar el \dt
comando para listar todas las tablas en una base de datos.
\dt
Porque books_db
verás books
y authors
. También verá books_book_id_seq
y authors_author_id_seq
. Estos realizan un seguimiento de la secuencia de números enteros utilizados como identificadores por las tablas porque solíamos SERIAL
generar sus claves principales.
Listado de todas las tablas en una base de datos
Para ver más información sobre una tabla en particular, puede usar el comando describir tabla: \d table_name
. Esto enumerará las columnas, los índices y cualquier referencia a otras tablas.
\d table_name
Describiendo la tabla de autores
El uso \dt+ table_name
proporcionará más información, como sobre el almacenamiento y la compresión.
Si alguna vez necesita cambiar el nombre de una tabla, puede cambiarle el nombre con el ALTER TABLE
comando.
ALTER TABLE table_name RENAME TO new_table_name;
Si desea eliminar una tabla, puede usar el DROP TABLE
comando.
DROP TABLE table_name;
Si intenta eliminar una tabla que no existe, obtendrá un error. Puede evitar esto al incluir la IF EXISTS
opción en la instrucción. De esta manera, recibirá un aviso en su lugar.
DROP TABLE IF EXISTS table_name;
Si está escribiendo consultas SQL más largas, la línea de comandos no es la forma más ergonómica de hacerlo. Probablemente sea mejor escribir su SQL en un archivo y luego hacer que psql lo ejecute.
Si está trabajando con psql y cree que su próxima consulta será larga, puede abrir un editor de texto desde psql y escribirlo allí. Si tiene una consulta existente, o tal vez desee ejecutar varias consultas para cargar datos de muestra, puede ejecutar comandos desde un archivo que ya está escrito.
Si ingresa el \e
comando, psql abrirá un editor de texto. Cuando guarde y cierre el editor, psql ejecutará el comando que acaba de escribir.
\e
Escribir comandos en un editor de texto
En Windows, el editor de texto predeterminado para psql es Notepad, mientras que en MacOs y Linux es vi. Puede cambiar esto a otro editor configurando el EDITOR
valor en las variables de entorno de su computadora.
Si tiene comandos particularmente largos o múltiples comandos que desea ejecutar, sería mejor escribir el SQL en un archivo con anticipación y hacer que psql ejecute ese archivo una vez que esté listo.
El \i
comando le permite leer la entrada de un archivo como si lo hubiera escrito en la terminal.
\i path_to_file/file_name.sql
Nota: si está ejecutando este comando en Windows, aún necesita usar barras diagonales en la ruta del archivo.
Si no especifica una ruta, psql buscará el archivo en el último directorio en el que estuvo antes de conectarse a PostgreSQL.
Ejecutar comandos SQL desde un archivo
Si desea ver cuánto tardan sus consultas, puede activar el tiempo de ejecución de consultas.
\timing
Esto mostrará en milisegundos el tiempo que tardó en completarse la consulta.
Si \timing
vuelve a ejecutar el comando, desactivará el tiempo de ejecución de la consulta.
Uso del tiempo de ejecución de consultas
Si tiene un archivo CSV con datos y desea cargarlo en una base de datos PostgreSQL, puede hacerlo desde la línea de comandos con psql.
Primero, cree un archivo CSV llamado films.csv
con la siguiente estructura (no importa si usa Excel, Google Sheets, Numbers o cualquier otro programa).
Una hoja de cálculo con datos de películas de Pixar
Abra psql y cree una films_db
base de datos, conéctese a ella y cree una films
tabla.
CREATE DATABASE films_db;
\c films_db
CREATE TABLE films(
id SERIAL PRIMARY KEY,
title VARCHAR(100),
year INT,
running_time INT
);
Luego puede usar el \copy
comando para importar el archivo CSV a films
. Debe proporcionar una ruta absoluta a donde se encuentra el archivo CSV en su computadora.
\copy films(title, year, running_time) FROM 'path_to_file' DELIMITER ‘,’ CSV HEADER;
La DELIMITER
opción especifica el carácter que separa las columnas en cada fila del archivo que se está importando, CSV
especifica que es un archivo CSV y HEADER
especifica que el archivo contiene una línea de encabezado con los nombres de las columnas.
Nota: No es necesario que los nombres de las columnas de la films
tabla coincidan con los nombres de las columnas, films.csv
pero sí deben estar en el mismo orden.
Úselo SELECT * FROM films;
para ver si el proceso fue exitoso.
Importación de datos desde un archivo .csv
pg_dump
Si necesita hacer una copia de seguridad de una base de datos, pg_dump
hay una utilidad que le permite extraer una base de datos en un archivo de script SQL u otro tipo de archivo comprimido.
Primero, en la línea de comando (no en psql), navegue a la bin
carpeta PostgreSQL.
cd "C:\Program Files\PostgreSQL\14\bin"
Luego ejecute el siguiente comando, usando postgres
como nombre de usuario y completando la base de datos y el archivo de salida que desea usar.
pg_dump -U username database_name > path_to_file/filename.sql
Úselo postgres
para el nombre de usuario y se le pedirá la postgres
contraseña de superusuario. pg_dump
luego creará un .sql
archivo que contiene los comandos SQL necesarios para recrear la base de datos.
Copia de seguridad de una base de datos en un archivo .sql
Si no especifica una ruta para el archivo de salida, pg_dump
guardará el archivo en el último directorio en el que estuvo antes de conectarse a PostgreSQL.
Contenido del archivo de copia de seguridad films.sql
Puede pasar la bandera -v
o a para ver qué está haciendo en cada paso.--verbosepg_dumppg_dump
Ejecutando pg_dump en modo detallado
También puede hacer una copia de seguridad de una base de datos en otros formatos de archivo, como .tar
(un formato de archivo).
pg_dump -U username -F t database_name > path_to_file/filename.tar
Aquí la -F
bandera le dice pg_dump
que va a especificar un formato de salida, mientras t
que le dice que va a estar en el .tar
formato.
Puede restaurar una base de datos desde un archivo de respaldo utilizando psql o la pg_restore
utilidad. El que elija depende del tipo de archivo desde el que está restaurando la base de datos.
.sql
, use psql..tar
, use pg_restore
.Para restaurar una base de datos desde un .sql
archivo, en la línea de comando (no en psql), use psql -U username -d database_name -f filename.sql
.
Puede utilizar la base de films_db
datos y films.sql
el archivo que utilizó anteriormente o crear un nuevo archivo de copia de seguridad.
Cree una base de datos vacía para que el archivo restaure los datos. Si está utilizando films.sql
para restaurar films_db
, lo más fácil podría ser eliminarlo films_db
y volver a crearlo.
DROP DATABASE films_db;
CREATE DATABASE films_db;
En una terminal separada (no en psql), ejecute el siguiente comando, pasándolo postgres
como el nombre de usuario y los nombres de la base de datos y el archivo de copia de seguridad que está utilizando.
psql -U username -d database_name -f path_to_file/filename.sql
La -d
bandera apunta a psql a una base de datos específica, mientras que la -f
bandera le dice a psql que lea desde el archivo especificado.
Si no especifica una ruta para el archivo de respaldo, psql buscará el archivo en el último directorio en el que estuvo antes de conectarse a PostgreSQL.
Se le pedirá la postgres
contraseña de superusuario y luego verá una serie de comandos impresos en la línea de comandos mientras psql recrea la base de datos.
Restaurar una base de datos usando psql
Este comando ignora cualquier error que ocurra durante la restauración. Si desea dejar de restaurar la base de datos si se produce un error, pase --set ON_ERROR_STOP=on
.
psql -U username -d database_name --set ON_ERROR_STOP=on -f filename.sql
pg_restore
Para restaurar una base de datos usando pg_restore
, use pg_restore -U username -d database_name path_to_file/filename.tar
.
Cree una base de datos vacía para que el archivo restaure los datos. Si está restaurando films_db
desde un films.tar
archivo, lo más fácil podría ser eliminarlo films_db
y volver a crearlo.
DROP DATABASE films_db;
CREATE DATABASE films_db;
En la línea de comando (no en psql), ejecute el siguiente comando, pasándolo postgres
como nombre de usuario y los nombres de la base de datos y el archivo de copia de seguridad que está utilizando.
pg_restore -U username -d database_name path_to_file/filename.tar
Restaurar una base de datos usando pg_restore
También puede pasar la bandera -v
o --verbose
para ver qué pg_restore
está haciendo en cada paso.
Usando pg_restore en modo detallado
Si ha terminado con psql y quiere salir de él, ingrese quit
o \q
.
\q
Esto cerrará la aplicación psql si la estaba usando, o lo regresará a su símbolo del sistema habitual si estaba usando psql desde la línea de comandos.
Hay muchas más cosas que puede hacer con psql, como administrar esquemas, roles y espacios de tablas. Pero esta guía debería ser suficiente para comenzar a administrar bases de datos PostgreSQL desde la línea de comandos.
Espero que esta guía le resulte útil a medida que continúa aprendiendo sobre PostgreSQL y las bases de datos relacionales.
Esta historia se publicó originalmente en https://www.freecodecamp.org/news/manage-postgresql-with-psql/
1650026520
Setting up psql + typescript + node in docker compose with hot reload.
In this video I am going to show you how to Setting up psql + typescript + node in docker compose with hot reload.
Code: https://github.com/Chensokheng/rest-api/tree/setup-docker
1646491800
In This Video I Am Going to Show You How To Setting Up Psql + Typescript + Node In Docker Compose with Hot Reload.
Code: https://github.com/Chensokheng/rest-api/tree/setup-docker
1636357494
This article covers the most common ways to connect to a PostgreSQL database server via psql command and pgAdmin.
1622796180
Deploying full stack application is awesome thing you can do in full stack development. as deploying on Heroku it looks daunting at first,i put together all steps you need to follow to deploy a working full stack application. It is quick and straight thing to do.
Creating PostgreSql database and setting up express application is out of this blogs scope.
First thing you should do is setting environment variables in .env file , variables which are required for basic application are following.
jwtSecret=lucky11
PG_USER= postgres_user
PG_PASSWORD= password
PG_HOST= localhost
PG_PORT= 5432
PG_DATABASE= database_name
NODE_ENV=development
_Make sure that you __gitignore _the .env file as keeping these environment variables open and accessible is unsafe thing you can do today.
#nodejs #deploy #heroku #psql
1597329212
We here at Cockroach Labs have been busy getting CockroachDB (CRDB) more in line with PostgreSQL for v20.1. This allows you to be able to use Cockroach as a drop-in replacement for PostgreSQL (whilst using your favourite existing ORM or driver), but with the powerful, scalable backend we provide.
Time, Timestamp and TimestampTZ have been three data types Cockroach has supported, but were not well matched with PostgreSQL functionality. We were also missing the TimeTZ datatype, as well as precision for time and interval types. Even worse, our results did not match PostgreSQL in some cases for the existing data types we do support.
We’ve spent a lot of the v20.1 release mastering time data types, fixing what was broken through ORM tests and community reports whilst adding new features to bridge that gap. A significant amount of time was spent scratching our heads as we figured out why existing time-related ORM tests were failing against CRDB. We’ve found a lot of devils in the details, with knowledge over these edge cases sparsely located over old SQL mailing lists and StackOverflow.
In this blog post, we’ll explore some of the intricacies of time in PostgreSQL and look at how we reproduce these features using Go and its ecosystem. We’ll share our recommendations for using time along the way.
Are you excited to learn about time in the PostgreSQL world? Join us as a companion in our TARDIS (Time and Related Data Types In SQL…blog post) and hop into an adventure into the world of time. Allons-y!
When you open a connection to Postgres/CRDB, you will have a session between you (the client) and the database (the server). The session will contain a time zone, which you can set with the SET TIME ZONE
command for both PostgreSQL and CRDB.
#postgres #psql
1591783620
PostgreSQL supports many client authentication methods, but in this case we’re only going to concern ourselves with two: password and md5.
Note: The default authentication method for PostgreSQL is ident. If you’d like to change the PostgreSQL authentication method from ident to md5, then visit the linked tutorial!
#technical support #tutorials #authentication #authentication method #centos #database #fedora #md5 #password #postgres #psql #systemctl #systemd #ubuntu