Crear, Modificar i Esborrar Taules En Postgres: diferència entre les revisions

De FFAWiki
 
(86 revisions intermèdies per un altre usuari que no es mostra)
Línia 11: Línia 11:
:Composició:
:Composició:


::CREATE TABLE nom_taula (nom_camp1 [[#Tipus de Dada| tipus_dada1 ]] [default expressió][[#Restriccions | [llista_restriccions_camp1] ]],nom_camp2 tipus_dada2 [default expressió][llista_restriccions_camp2], … [llista_restricions_addicionals]);
::CREATE TABLE nom_taula (nom_camp1 [[#Tipus de Dada| tipus_dada1 ]] [default expressió][[#Restriccions i Constraints | [llista_restriccions_camp1] ]],nom_camp2 tipus_dada2 [default expressió][llista_restriccions_camp2], … [llista_restricions_addicionals]);


:Excussió:
:Execució:


::Ens connectem a la base de dades i:
::Ens connectem a la base de dades i...


:::CREATE TABLE nom_taula (id [[#Tipus de Dada | integer ]] [[#Restriccions | PRIMARY KEY ]], nom [[#Tipus de Dada | varchar(30) ]] [[#Restriccions | NOT NULL ]], curs [[#Tipus de Dada | varchar(5) ]] [[#Restriccions | NOT NULL ]], [[#Restriccions | UNIQUE ]] (curs));
:::CREATE TABLE nom_taula (id [[#Tipus de Dada | integer ]] [[#Restriccions i Constraints | PRIMARY KEY ]], nom [[#Tipus de Dada | varchar(30) ]] [[#Restriccions i Constraints | NOT NULL ]], curs [[#Tipus de Dada | varchar(5) ]] [[#Restriccions i Constraints | NOT NULL ]], [[#Restriccions i Constraints | UNIQUE ]] (curs));


:::Creem una base.
:::Creem una base.
Línia 37: Línia 37:
:::ALTER nom_columna DROP DEFAULT
:::ALTER nom_columna DROP DEFAULT


:::ALTER nom_columna { SET | DROP } NOT NULL
:::ALTER nom_columna { SET | DROP } [[#Restriccions i Constraints | NOT NULL ]]
 
:::ADD [ CONSTRAINT constraint_name ] { [[#Restriccions i Constraints | CHECK ]] ( expressió) | [[#Restriccions i Constraints | UNIQUE ]] ( nom_columna [, ... ] ) | [[#Restriccions i Constraints | PRIMARY KEY ]] ( nom_columna [, ... ] ) | [[#Restriccions i Constraints | FOREIGN KEY ]] ( nom_columna [, ... ] ) REFERENCES reftable( refcolumn [, ... ] ) }
 
:::DROP CONSTRAINT constraint_name


:::ADD [ CONSTRAINT constraint_name ]
:::'''Per canviar el nom''':


:::ADD [ CONSTRAINT constraint_name ] { CHECK ( expressió) | UNIQUE ( nom_columna [, ... ] ) | PRIMARY KEY ( nom_columna [, ... ] ) | FOREIGN KEY ( nom_columna [, ... ] ) REFERENCES reftable( refcolumn [, ... ] ) }
:::RENAME TO nou_nom_taula;
 
:::RENAME COLUMN nom_columna TO nou_nom_columna;


:Execució:
:Execució:


::Ens connectem a la base de dades i:
::Ens connectem a la base de dades i...


:::ALTER TABLE nom_taula ADD nom_columna [[#Tipus de Dada | date ]] [[#Restriccions | NOT NULL ]];
:::ALTER TABLE nom_taula ADD nom_columna [[#Tipus de Dada | date ]] [[#Restriccions i Constraints | NOT NULL ]];


:::
:::ALTER TABLE nom_taula ALTER nom_columna DROP [[#Restriccions i Constraints | NOT NULL ]], ADD [[#Restriccions i Constraints | UNIQUE ]](nom_columna);


===Budar Taula===
:::ALTER TABLE nom_taula ADD [[#Restriccions i Constraints | CHECK ]] (nom_columna <= [[Consultes Postgres#DATE_PART(,)| CURRENT_DATE ]]);
 
:::ALTER TABLE nom_taula DROP CONSTRAINT fk_taula;
 
===Buidar Taula===


:TRUNCATE nom_taula
:TRUNCATE nom_taula
::Te una equivalència a:
:::DELETE FROM nom_taula


::Esborra les dades de taula (la buida).
::Esborra les dades de taula (la buida).
===Esborrar Taula===
:DROP TABLE nom_taula
::Esborra la taula (la elimina).
===INDEX===
:Podem crear un índex, amb la comanda CREATE INDEX que le que fa es construir un índex amb les columnes especificades i així millorar el rendiment de la base de dades.
::'''Exemple:'''
:::'''Crear Index:'''
::::CREATE INDEX nom_index ON nom_taula(nom_camp);
:::'''Esborrar Index:'''
::::DROP INDEX nom_index;
:::'''Mostrar Index:'''
::::SHOW INDEXES FROM nom_index;
===Tipus de Dada===
:'''Serial''': Es un integer que s'autoincrementa (no s'ha de posar en el INSERT, es posa sol i s'autoincrementa)
:{| class="wikitable"
!colspan="13"|Tipus de dada
|-
|Booleà
|colspan="6" style="text-align:center;"| Numèrics
|colspan="3" style="text-align:center;"|Text
|colspan="3" style="text-align:center;"|Dates i Hores
|-
|rowspan="2" style="text-align:center;"|bool
|colspan="3" style="text-align:center;"|Enters
|colspan="3" style="text-align:center;"|Decimals
|rowspan="2" style="text-align:center;"|char
|rowspan="2" style="text-align:center;"|varchar(n)
|rowspan="2" style="text-align:center;"|text
|rowspan="2" style="text-align:center;"|date
|rowspan="2" style="text-align:center;"|time
|rowspan="2" style="text-align:center;"|timestamp
|-
|style="text-align:center;"|smallint
|style="text-align:center;"|int
|style="text-align:center;"|bigint
|style="text-align:center;"|numeric(p,e)
|style="text-align:center;"|real
|style="text-align:center;"|double precision
|-
|colspan="13" style="text-align:center;"|'''p''': és el número total de dígits &nbsp; &nbsp; &nbsp; &nbsp; '''e''': és el nombre de decimals &nbsp; &nbsp; &nbsp; &nbsp;'''n''': longitud màxima de la cadena
|}
===Convertir [[#Tipus de Dada | Tipus de dades]] (columnes plenes)===
:'''&lowast;''' En cas de que no estiguin plenes has de fer un [[#Modificar Taula | ALTER TABLE]]
:ALTER TABLE  nom_taula ALTER nom_columna TYPE tipus_dada USING nom_columna::tipus_dada
===Restriccions i Constraints===
:'''NOT NULL'''
::La restricció NOT NULL prohibeix valors NULL en una columna.
::'''Exemple:'''
:::CREATE TABLE nom_taula (nom varchar(30) NOT NULL);
:::ALTER TABLE nom_taula ALTER [COLUMN] nom SET NOT NULL;
:'''UNIQUE'''
::La restricció UNIQUE fa que els valors de la columna no es puguin repetir.
::'''Exemples:'''
:::CREATE TABLE nom_taula (nom varchar(30) UNIQUE);
:::CREATE TABLE nom_taula (nom varchar(30), UNIQUE(nom));
:::ALTER TABLE nom_taula ADD UNIQUE(nom);
:'''CHECK'''
::La restricció CHECK s’utilitza per limitar l’interval de valors que es poden col·locar en una columna. Si definiu una restricció CHECK en una sola columna, només permet certs valors per a aquesta columna. Si definiu una restricció CHECK en una taula, pot limitar els valors de determinades columnes en funció dels valors d'altres columnes de la fila.
::'''Exemples:'''
:::CREATE TABLE nom_taula (sexe varchar(1) CHECK (sexe = 'H' OR sexe = 'D'));
:::CREATE TABLE nom_taula (sexe varchar(1), CHECK (sexe = 'H' OR sexe = 'D'));
:::ALTER TABLE nom_taula ADD CHECK (sexe = 'H' OR sexe = 'D');
:'''PRIMARY KEY'''
::La restricció PRIMARY KEY identifica de manera única cada registre d’una taula. Les claus primàries han de contenir valors '''UNIQUE''' i no poden contenir valors '''NULL'''. Una taula només pot tenir UNA clau principal; i a la taula, aquesta clau principal pot consistir en columnes (camps) individuals o múltiples.
::'''Exemples:'''
:::CREATE TABLE nom_taula (nom varchar(30) PRIMARY KEY);
:::CREATE TABLE nom_taula (nom varchar(30), PRIMARY KEY(nom));
:::ALTER TABLE nom_taula ADD PRIMARY KEY(nom);
:'''FOREIGN KEY'''
::Una FOREIGN KEY és una clau que s’utilitza per enllaçar dues taules. Una FOREIGN KEY és un camp (o múltiples de camps) d'una taula que fa referència a la PRIMARY KEY d'una altra taula. La taula que conté la foreign key s’anomena taula fill i la taula que conté la clau candidata s’anomena taula referencial o pare.
::'''Exemples:'''
:::CREATE TABLE nom_taula (nom varchar(30), FOREIGN KEY (nom) REFERENCES altre_taula(camp_taula));
:::ALTER TABLE nom_taula ADD FOREIGN KEY (nom) REFERENCES altre_taula(camp_taula);

Revisió de 17:17, 8 març 2021

Postgres

Llegenda

[] Opcional
{} Obligatoris
| Or

Crear Taula

Composició:
CREATE TABLE nom_taula (nom_camp1 tipus_dada1 [default expressió] [llista_restriccions_camp1] ,nom_camp2 tipus_dada2 [default expressió][llista_restriccions_camp2], … [llista_restricions_addicionals]);
Execució:
Ens connectem a la base de dades i...
CREATE TABLE nom_taula (id integer PRIMARY KEY , nom varchar(30) NOT NULL , curs varchar(5) NOT NULL , UNIQUE (curs));
Creem una base.

Modificar Taula

Composició:
ALTER TABLE nom_taula acció, [acció, ...]
Acció:
ADD nom_columna tipus_dada [default expressió][llista_restriccions_camp]
DROP nom_columna
ALTER nom_columna SET DEFAULT expressió
ALTER nom_columna DROP DEFAULT
ALTER nom_columna { SET | DROP } NOT NULL
ADD [ CONSTRAINT constraint_name ] { CHECK ( expressió) | UNIQUE ( nom_columna [, ... ] ) | PRIMARY KEY ( nom_columna [, ... ] ) | FOREIGN KEY ( nom_columna [, ... ] ) REFERENCES reftable( refcolumn [, ... ] ) }
DROP CONSTRAINT constraint_name
Per canviar el nom:
RENAME TO nou_nom_taula;
RENAME COLUMN nom_columna TO nou_nom_columna;
Execució:
Ens connectem a la base de dades i...
ALTER TABLE nom_taula ADD nom_columna date NOT NULL ;
ALTER TABLE nom_taula ALTER nom_columna DROP NOT NULL , ADD UNIQUE (nom_columna);
ALTER TABLE nom_taula ADD CHECK (nom_columna <= CURRENT_DATE );
ALTER TABLE nom_taula DROP CONSTRAINT fk_taula;

Buidar Taula

TRUNCATE nom_taula
Te una equivalència a:
DELETE FROM nom_taula
Esborra les dades de taula (la buida).

Esborrar Taula

DROP TABLE nom_taula
Esborra la taula (la elimina).

INDEX

Podem crear un índex, amb la comanda CREATE INDEX que le que fa es construir un índex amb les columnes especificades i així millorar el rendiment de la base de dades.
Exemple:
Crear Index:
CREATE INDEX nom_index ON nom_taula(nom_camp);
Esborrar Index:
DROP INDEX nom_index;
Mostrar Index:
SHOW INDEXES FROM nom_index;

Tipus de Dada

Serial: Es un integer que s'autoincrementa (no s'ha de posar en el INSERT, es posa sol i s'autoincrementa)
Tipus de dada
Booleà Numèrics Text Dates i Hores
bool Enters Decimals char varchar(n) text date time timestamp
smallint int bigint numeric(p,e) real double precision
p: és el número total de dígits         e: és el nombre de decimals        n: longitud màxima de la cadena

Convertir Tipus de dades (columnes plenes)

En cas de que no estiguin plenes has de fer un ALTER TABLE
ALTER TABLE nom_taula ALTER nom_columna TYPE tipus_dada USING nom_columna::tipus_dada

Restriccions i Constraints

NOT NULL
La restricció NOT NULL prohibeix valors NULL en una columna.
Exemple:
CREATE TABLE nom_taula (nom varchar(30) NOT NULL);
ALTER TABLE nom_taula ALTER [COLUMN] nom SET NOT NULL;
UNIQUE
La restricció UNIQUE fa que els valors de la columna no es puguin repetir.
Exemples:
CREATE TABLE nom_taula (nom varchar(30) UNIQUE);
CREATE TABLE nom_taula (nom varchar(30), UNIQUE(nom));
ALTER TABLE nom_taula ADD UNIQUE(nom);
CHECK
La restricció CHECK s’utilitza per limitar l’interval de valors que es poden col·locar en una columna. Si definiu una restricció CHECK en una sola columna, només permet certs valors per a aquesta columna. Si definiu una restricció CHECK en una taula, pot limitar els valors de determinades columnes en funció dels valors d'altres columnes de la fila.
Exemples:
CREATE TABLE nom_taula (sexe varchar(1) CHECK (sexe = 'H' OR sexe = 'D'));
CREATE TABLE nom_taula (sexe varchar(1), CHECK (sexe = 'H' OR sexe = 'D'));
ALTER TABLE nom_taula ADD CHECK (sexe = 'H' OR sexe = 'D');
PRIMARY KEY
La restricció PRIMARY KEY identifica de manera única cada registre d’una taula. Les claus primàries han de contenir valors UNIQUE i no poden contenir valors NULL. Una taula només pot tenir UNA clau principal; i a la taula, aquesta clau principal pot consistir en columnes (camps) individuals o múltiples.
Exemples:
CREATE TABLE nom_taula (nom varchar(30) PRIMARY KEY);
CREATE TABLE nom_taula (nom varchar(30), PRIMARY KEY(nom));
ALTER TABLE nom_taula ADD PRIMARY KEY(nom);
FOREIGN KEY
Una FOREIGN KEY és una clau que s’utilitza per enllaçar dues taules. Una FOREIGN KEY és un camp (o múltiples de camps) d'una taula que fa referència a la PRIMARY KEY d'una altra taula. La taula que conté la foreign key s’anomena taula fill i la taula que conté la clau candidata s’anomena taula referencial o pare.
Exemples:
CREATE TABLE nom_taula (nom varchar(30), FOREIGN KEY (nom) REFERENCES altre_taula(camp_taula));
ALTER TABLE nom_taula ADD FOREIGN KEY (nom) REFERENCES altre_taula(camp_taula);