Crear, Modificar i Esborrar Taules En Postgres: diferència entre les revisions
De FFAWiki
(79 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]); | ||
:Execució: | :Execució: | ||
Línia 17: | Línia 17: | ||
::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 | :::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 } [[#Restriccions | :::ALTER nom_columna { SET | DROP } [[#Restriccions i Constraints | NOT NULL ]] | ||
:::ADD [ CONSTRAINT constraint_name ] { [[#Restriccions | CHECK ]] ( expressió) | [[#Restriccions | UNIQUE ]] ( nom_columna [, ... ] ) | [[#Restriccions | PRIMARY KEY ]] ( nom_columna [, ... ] ) | [[#Restriccions | FOREIGN KEY ]] ( nom_columna [, ... ] ) REFERENCES reftable( refcolumn [, ... ] ) } | :::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 | |||
:::'''Per canviar el nom''': | |||
:::RENAME TO nou_nom_taula; | |||
:::RENAME COLUMN nom_columna TO nou_nom_columna; | |||
:Execució: | :Execució: | ||
Línia 45: | Línia 53: | ||
::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 | :::ALTER TABLE nom_taula ALTER nom_columna DROP [[#Restriccions i Constraints | NOT NULL ]], ADD [[#Restriccions i Constraints | UNIQUE ]](nom_columna); | ||
=== | :::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 | ||
Línia 61: | Línia 73: | ||
===Esborrar Taula=== | ===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 '''e''': és el nombre de decimals '''n''': longitud màxima de la cadena | |||
|} | |||
===Convertir [[#Tipus de Dada | Tipus de dades]] (columnes plenes)=== | |||
:'''∗''' 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 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);