SlideShare a Scribd company logo
1 of 17
Download to read offline
Create table
Miquel Boada
25-11-2016
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Objectius
1. Creació de taules.
Coneixements previs
• Model Entitat-Relació.
• Model relacional.
• Transformació del model Entitat-Relació al model relacional.
• Sistemes gestors de bases de dades (SGBD)
• Creació de base de dades
Requisits previs
• Ordinador amb MySQL server instal·lat.
• Client MySQL server (MySQL Workbench per la representació gràfica).
• Connexió al servidor des del client
• Una base de dades creada.
Autor: Miquel Boada Pàgina 1 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Creació de taules amb SQL
Create table...............................................................................................................................................1
Objectius....................................................................................................................................................1
Coneixements previs................................................................................................................................1
Requisits previs.........................................................................................................................................1
Introducció................................................................................................................................................3
Model físic..................................................................................................................................................3
Transformació del model entitat-relació al relacional.........................................................................3
Símbols gràfics.....................................................................................................................................3
Creació de taules de dades en SQL........................................................................................................3
Sintaxis «Create Table».......................................................................................................................4
Data Types............................................................................................................................................5
Tipus text: char i varchar...............................................................................................................5
Tipus char....................................................................................................................................6
Tipus varchar...............................................................................................................................7
Comparació emmagatzematge char varchar.........................................................................7
Tipus numèrics................................................................................................................................7
Tipus numèrics de precisió exacta...........................................................................................7
Integer.....................................................................................................................................8
Decimal....................................................................................................................................9
Tipus numèrics aproximats....................................................................................................10
Tipus data/hora.............................................................................................................................11
TIME...........................................................................................................................................12
DATE / DATETIME.....................................................................................................................12
DATETIME vs TIMESTAMP.......................................................................................................13
Creació taules – Exemples.....................................................................................................................15
Webgrafia................................................................................................................................................16
Autor: Miquel Boada Pàgina 2 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Introducció
El model Entitat-Relació ens serveix per a poder representar mitjançant un llenguatge gràfic
una estructura de dades associada a una determinada informació. La representació gràfica és
una concreció del llenguatge natural a partir del qual s'ha generat el model. La conversió del
model entitat-relació al model relacional aplicant les fòrmules de transformació ens permet
obtenir les taules, els camps, la clau primària i altres elements que utilitzarem per a generar
les taules.
Model físic
El model físic és la transformació del model relacional a instruccions executables en un
sistema gestor de base de dades. Per a realitzar el model físic, cal tornar a recuperar alguns
vistos en el model entitat-relació com els de domini, atribut identificador, valors NULL, atribut
candidat ...
Transformació del model entitat-relació al relacional.
La transformació del model entitat-relació al model relacional es pot realitzar utilitzant eines
gràfiques que ajuden a la comprensió de l'estructura de les taules i milloren la documentació
de l'aplicació.
MySQL Workbench és un client gràfic que porta un dissenyador gràfic per a dissenyar el
diagrama associat al model relacional. Per accedir al dissenyador gràfic cal crear un nou
model, ja sigui a través de l'opció de menú «File» i «New Model» o bé directament a través de
la icona «+» associada a la pestanya «Home».
Símbols gràfics
Tot i que hi ha molts més símbols gràfics disponibles i possibilitats, el document només es
mencionen aquells que es necessiten, ja que l'objectiu és crear les taules i les relacions entre
elles sense necessitat de disposar de cap element gràfic d'ajuda. Tot i això, es considera
interessant també poder aprofitar les eines que faciliten la tasca quan el nombre de taules
d'una base de dades és important.
La icona ens permet crear una taula. Les icones ens permeten relacionar les
taules. La selecció correcte del tipus de relació és important; el sistema crea de forma
automàtica els atributs i taules derivades del tipus de relació.
Creació de taules de dades en SQL
Tot i que es pugui uitlitzar l'eina gràfica per a crear la base de dades i taules associades, aquest
sistema és lent i no aplicable quan s'han de realitzar modificacions a la base de dades: canvis
en el tipus de dades, afegir noves columnes....
Autor: Miquel Boada Pàgina 3 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Per aquest motiu cal conéixer les instruccions per a crear i modificar l'estructura d'una taula.
Sintaxis «Create Table»
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
create_definition:
col_name column_definition
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
data_type:
| INT[(length)] [UNSIGNED] [ZEROFILL]
| INTEGER[(length)] [UNSIGNED] [ZEROFILL]
| DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
| FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
| DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL]
| DATE
| TIME[(fsp)]
| TIMESTAMP[(fsp)]
| DATETIME[(fsp)]
| CHAR[(length)] [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
| VARCHAR(length) [BINARY]
[CHARACTER SET charset_name] [COLLATE collation_name]
En el requadre anterior hi ha l'especificació de la sintaxis per l'ordre de creació d'una taula. Es
tracta d'una versió reduïda de les possibilitats que ens ofereix el llenguatge SQL per a la
creació i configuració de taules. Tot i així, hi ha les opcions més comunes en la seva utilització.
Autor: Miquel Boada Pàgina 4 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Data Types
En relació als tipus de dades proposats s'han diferenciat en tres grans grups:
1. Caràcter
2. Numèrics
3. Data i temps
Cal indicar que a més d'aquests tre grans grups hi ha també el tipus d'objectes grans, que ens
permeten emmagatzemar fitxers en una base de dades relacional. Es considera que per a
emmagatzemar aquest tipus d'informació (fitxers, imatges, videos, audios...) és millor utilitzar
una base de dades documental i per aquest motiu s'ha obviat aquest tipus de dada. En una
base de dades relacional és millor emmagatzemar la ubicació física del fitxer (path) excepte
que el sistema gestor de base de dades disposi de mecanismes per a indexar aquest tipus
d'informació i poder buscar la informació pels camps on s'emmagatzemi aquest tipus
d'informació.
El modificador «binary» obliga a emmagatzemar la informació utilitzant el joc de caràcters
binari. Així, per exemple, si el sistema té configurat per defecte el joc de caràcter «latin1» i
s'especifica «binary» al camp, la codificació per aquest camp serà «latin1_bin» i per tant,
s'utilitzarà aquest joc de caràcters per a les condicions i l'ordenació.
Tipus text: char i varchar
Els camps de tipus char i varchar ens permeten emmagatzemar caràcters. La difere cia entreǹ
els dos tipus és el sistema que s'utilitza per a emmagatzemar la informació.
En els camps de tipus char o varchar, després del nom del tipus cal indicar entre parèntesis la
mida que es vol assignar al camp. Aquesta mida determina el nombre màxim de caràcters que
s'hi podrà emmagatzemar.
Create table t1 ( c1 char(5), c2 varchar(10), primary key(c1)) engine=innodb;
La sentència anterior crea una taula «t1» amb 2 camps (c1 i c2). Al camp c1 se li ha assignat
una mida màxima de 5 caràcters mentre que el camp c2 permet emmagatzemar fins a 10
caràcters.
Si es sobrepassa la mida especificada pel camp alguns sistemes poden donar un error o bé
altres simplement retallen la informació al màxim nombre de caràcters habilitats.
En el cas de «mysql» el comportament depèn de la configuració del sistema. Si el sistema no
està configurat amb el mode estricte («strict mode»), la comanda s'executarà i les dades
s'emmagatzemaran en la taula. Quan s'analitzi l'estat de l'operació s'observarà que aquesta ha
donat un avís («warning») i que s'ha retallat («truncate») la informació emmagatzemada en el
camp. Si, per contra, s'habilita el mode estricte del sistema l'execució de la comanda finalitza
sense actualitzar la informació en la taula: el resultat de la instrucció és la generació d'un error
i la cancel·lació immediata de la instrucció.
Autor: Miquel Boada Pàgina 5 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
En la següent imatge es mostra el comportament del sistema amb el mode estricte habilitat i
deshabilitat.
Tipus char
El tipus «char» utilitza una mida de camp fixe. Així , per exemple, si declaro un camp de 8
caràcters aquest sempre ocuparà 8 caràcters en el disc. Si d'aquests 8 caràcters només
n'emplenem 5, els 3 restants s'ompliran mitjançant espais en blanc ocupant el corresponent
espai en disc. L'avantatge d'aquest tipus de dada és que és més eficient que els tipus de dada
de longitud variable1
.
Utilitzarem aquest tipus quan calgui emmagatzemar caràcters en un camp i la longitud de la
informació a emmagatzemar sigui fixe: un dni, una matrícula, un codi postal, un telèfon2
….
1 Quan la longitud del registre és fixe.
2 Veure tipus numèrics
Autor: Miquel Boada Pàgina 6 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Tipus varchar
El tipus «varchar» ens permet introduir informació de mida variable en un camp de la nostra
base de dades. S'utilitzarà aquest tipus quan calgui emmagatzemar text o caràcters en el camp
i no es pugui definir un nombre de fixe de caràcters: el nom d'una persona, d'una població, el
títol d'un llibre, d'una pel·lícula...
Comparació emmagatzematge char varchar
Value CHAR(4) Storage Required VARCHAR(4) Storage Required
'' ' ' 4 bytes '' 1 byte
'ab' 'ab ' 4 bytes 'ab' 3 bytes
'abcd' 'abcd' 4 bytes 'abcd' 5 bytes
'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes
Tipus numèrics
Els tipus numèrics els utilitzarem quan haguem d'emmagatzemar informació amb la qual
haguem de realitzar càlculs. Així, per exemple, si es vol emmagatzemar el codi postal d'una
població, un DNI, o un telèfon, tot i que aquesta informació estigui formada només per dígits,
al no ser necessària la realització de càlculs amb aquesta informació s'utilitzarà un tipus
«char». La informació relacionada amb preus, quantitats, imports, distàncies, …. sobre els
quals es podran realitzar càlculs, cal emmagatzemar-la utilitzant tipus numèrics.
Els tipus numèrics es poden dividir en dos grans grups tipus: exactes i aproximats.
Tipus numèrics de precisió exacta
Els tipus numèrics de precisió exacta són aquells en els quals no hi ha una pèrdua de precisió
quan es realitzen càlculs. La majoria de vegades s'utilitzaran aquests tipus, sobretot quan la
informació fa referència a imports monetaris.
Dins els tipus numèrics de precisió exacte es poden diferenciar dos grans grups:
• INTEGER ( o INT)
• DECIMAL (o NUMERIC)
Autor: Miquel Boada Pàgina 7 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Integer
Utilitzarem el tipus «integer» quan la dada a emmagatzemar sigui un valor enter. Tot i que
l'especificació del tipus enter permet indicar la dimensió del número, aquesta no és necessària
i s'utilitza només per a formatejar el valor numèric a una mida fixa. El valor per defecte
associat a la mida és de 11 dígits. En el cas que s'indiqui una mida una mida específica, el valor
del camp es visualitzarà utilitzant la mida indicada. Per tal que el sistema gestor de base de
dades formategi el camp amb la mida fixa, afegint zeros a l'esquerra, cal especificar la directiva
«zerofill» en la creació del camp.
En la imatge anterior es crea una taula amb 3 camps, n1, n2 i n3. Pels camps n1 i n2 no s'ha
especificat la mida del camp, per tant, la seva dimensió serà de 11 dígits per a la visualització.
En el camp n1, a més, no s'ha especificat cap formateig per a la visualització de la informació.
Quan es consulten les dades de la taula, per la columna 1 només es retorna el valor del camp
numèric, eliminant els zeros no representatius. La columna 2 es formateja el camp amb un
total de 11 dígits; s'afegeixen 10 zeros. Per la tercera columna, el camp es formateja amb 5
dígits ja que aquesta és la mida indicada per a visualització del camp.
Cal indicar que l'espai d'emmagatzematge del camp en disc és independent de la mida
especificada; només depèn del tipus de dada. En l'exemple de la imatge, el camp n1, n2 i n3
ocupa cada un d'ells un total de 4 bytes.
Autor: Miquel Boada Pàgina 8 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Type
Storage Minimum Value Maximum Value
(Bytes) (Signed/Unsigned) (Signed/Unsigned)
TINYINT
Unsigned
1 -128 127
0 255
SMALLINT
Unsigned
2 -32768 32767
0 65535
MEDIUMINT
Unsigned
3 -8388608 8388607
0 16777215
INT
Unsigned
4 -2147483648 2147483647
0 4294967295
BIGINT
Unsigned
8 -9223372036854775808 9223372036854775807
0 18446744073709551615
Tipus de dades enter, bytes d'emmagatzematge i valors mínims i màxims.
Decimal
El tipus decimal, a diferència del tipus enter, permet emmagatzemar els decimals números
reals. En el tipus decimal se li associen dos valors numèrics, el primer és el total de dígits que
té el número i el segon el nombre de dígits que s'utilitzaran per a especificar la part decimal.
decimal (m,n) :
- m: total de dígits, incloent els decimals
- n: dígits decimals
Per exemple
decimal (5,2) :
- 3 dígits per la part entera (5-2=3).
- 2 dígits per la part decimal.
- -999.99 valor mínim que pot emmagatzemar el camp.
- +999.99 valor màxim que pot emmagatzemar el camp.
Si no s'especifica cap dimensió en el camp només es podran emmagatzemar números enters.
Si s'indica la directiva zerofill s'emplenaran amb valor zero els dígits que no s'hagin utilitzat.
Autor: Miquel Boada Pàgina 9 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Tipus numèrics aproximats
Els tipus aproximats són aquells que no emmagatzemen el valor exacte. Els tipus aproximats
estan formats bàsicament pels tipus float i real amb les seves variants. Quan es fa la
comparació utilitzant aquests tipus cal especificar sempre amb quina precisió es volen realitzar
els càlculs; conseqüència de no emmagatzemar un tipus exacte.
Mitjançant l'exemple de la imatge s'il·lustra quin és el significat «d'emmagatzemar un valor no
exacte».
Com es pot observar, el resultat de l'operació no és 21.4 , sinó que al final s'ha emmagatzemat
un dígit decimal 6 adicional; causa de la no exactitud de l'operació. Aquest fet condiciona a la
forma de realitzar les comparacions, ja que aquestes no es poden fer per igualtat. Per
exemple, si sumem els dos valors de f1 i f2 el resultat és 21.4 . Per tant, una sentència del tipus
«select f1, f2 from t2 where f1+f2=21.4» ens hauria de retornar la fila amb valors de f1 101.4 i
-80 per f2. Aquest fet no és així donada la imprecisió del tipus.
Per a obtenir el resultat desitjat cal indicar primer quina precisió es vol i després adaptar la
consulta a la precisió desitjada. Per exemple, si volem aproximar fins al 5è decimal es pot fer
una consulta de l'estil:
Autor: Miquel Boada Pàgina 10 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
«select f1, f2 from t2 where abs(f1+f2)<21.4000001» . L'utilització de l'operant < obliga a que es
mostrin tots les files de la taula amb un resultat inferior a l'especificat. El valor abs obliga a que
aquest valor sempre sigui positiu.
En la següent imatge es mostra una simulació del funcionament per l'exemple explicat.
Cal indicar que el tractament amb els tipus de dades float i real és molt ràpid i, per tant,
s'aconsella el seu ús quan la precisió no és un requisit important però sí la velocitat en el
tractament de les dades.
Tipus data/hora
Per a emmagatzemar dates i hores disposem dels tipus:
• DATE
• TIME
• DATETIME
• TIMESTAMP
Sempre que es vulgui especificar una data o una hora o ambdues informacions es farà
utilitzant cometes simples ( ' ). Per a separar els diferents elements de data utilitzarem el
guionet ( - ) o bé la barra inclinada ( / ). La informació entre hores minuts i segons es farà
utilitzant els dos punts ( : ). Si es volen indicar dècimes , centèsimes …. es farà utilitzant el punt
com a separador ( . ), tot i que mysql server no emmagatzemarà la part decimal.
Autor: Miquel Boada Pàgina 11 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
TIME
Si el nostre camp ha d'emmagatzemar una hora determinada o bé un interval de temps l'única
opció que es disposa és la de definir un camp utilitzant el tipus «time». Tota la resta de tipus
relacionats amb la data poden emmagatzemar només la data o bé la data i hora.
Amb el tipus time es poden precisar fins als segons, però no hi ha possibilitat
d'emmagatzemar dècimes o centèsimes de segons.
Tot i que no sigui obligatori, per a introduir un temps sempre utilitzarem els dos punts com a
separador i introduirà l'hora amb tots els seus components seguint el format HH:MM:SS.
En la imatge , tot i que no ha donat cap «warning» es pot observar com les mil·lèsimes de
segon introduides en la segona hora s'han perdut en la recuperació de les dades.
DATE / DATETIME
Per a introduir una data sempre s'utilitzarà el format de data anglès. La data es pot introduir
utilitzant els 4 dígits per a especificar l'any o bé utilitzant dos dígits: l'utilització de 4 dígits ajuda
a la lectura de la informació. Quan el camp és de tipus «datetime» permet emmagatzemar una
data i una hora.
En la imatge es mostren alguns exemples d'utilització dels diferents tipus de data utilitzant
diferents formats.
Autor: Miquel Boada Pàgina 12 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
L'interval de dates permeses és des del'1000-01-01' fins al '9999-12-31' pels tipus
«date» i «datetime». Pel tipus «timestamp» l'interval és bastant més
reduït i comprèn des de la data '1970-01-01 00:00:01' UTC3
fins a '2038-01-19
03:14:07' UTC.
DATETIME vs TIMESTAMP
La diferència entre DATETIME i TIMESTAMP és que el tipus «timestamp» fa una conversió de
l'hora a format UTC per emmagatzemar la data i torna a convertir la data i hora a la zona
horària actual quan recupera la data. Així, per exemple, s'evita que quan hi ha una participació
entre foros els efectes dels canvis horaris entre les diferents regions.
Per a mostrar el funcionament i la diferència del tipus «dateTime» i «timestamp» utilitzarem la
taula «dates» creada en el punt interior i la funció introduïda. La configuració horària del
servidor era GMT+1 en el moment d'introduir les dades. Per a canviar la zona horària del
servidor , primer cal carregar les taules amb la informació horària al servidor. Des de la
consola de Linux cal executar la comanda:
Tot i que l'execució de la comanda ens mostri que hi ha algunes zones horàries que no ha
pogut carregar, sí que tenim les dades necessàries per a poder mostrar el funcionament i al
diferència entre els dos tipus de camps.
Per a canviar la zona horària del servidor , tot i que es pugui fer a nivell de servidor, utilitzarem
la comanda de MySQL «set zone=zonaHoraria», tal i com es mostra a la imatge. Especifiquem
com a zona horària «+1:00» que és la que té per defecte el servidor: no hi ha cap canvi entre la
informació introduïda i la visualitzada.
3 Coordinated Universal Time
Autor: Miquel Boada Pàgina 13 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Si, per contra, establim una zona horària +6:00 , mentre que la columna «datet» continua
mostrant la mateixa hora, la columna «dates» ens dóna la informació per la nova zona horària
establerta (20:34:12) que correspon a l'hora +6.
Autor: Miquel Boada Pàgina 14 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Creació taules – Exemples
CREATE TABLE llibre (
isbn CHAR(13),
titol VARCHAR(50) NOT NULL,
dataAdquisicio DATE NOT NULL,
preu DECIMAL(6,2) NOT NULL,
PRIMARY KEY(isbn)
) engine=innodb;
-- Els camps usuari i password han de ser sensibles a majúscules, minúscules i accents
CREATE TABLE registre(
usuari VARCHAR(20) COLLATE 'latin1_general_cs',
password VARCHAR(16) NOT NULL COLLATE 'latin1_general_cs',
email VARCHAR(255) UNIQUE NOT NULL, -- No hi poden haver duplicats de correu (clau candidata)
dataReg TIMESTAMP NOT NULL, -- Determinar ordre de registre
punts INTEGER, -- Els punts inicialment poden ser NULL (diferent de zero)
PRIMARY KEY(usuari)
) engine=innodb;
Autor: Miquel Boada Pàgina 15 de 18
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 1 – Introducció . Creació de taules
Webgrafia
http://dev.mysql.com/doc/refman/5.7/en/create-table.html
http://dev.mysql.com/doc/refman/5.7/en/char.html
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict
http://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html
http://dev.mysql.com/doc/refman/5.7/en/integer-types.html
http://code.rohitink.com/2013/06/12/mysql-integer-float-decimal-data-types-differences/
http://dev.mysql.com/doc/refman/5.7/en/choosing-types.html
http://dev.mysql.com/doc/refman/5.7/en/datetime.html
Autor: Miquel Boada Pàgina 16 de 18

More Related Content

Viewers also liked

2 _expresiones_matematicas_254209
2  _expresiones_matematicas_2542092  _expresiones_matematicas_254209
2 _expresiones_matematicas_254209Miguel Medina
 
Sanitory arrangement during a temporary gathering
Sanitory arrangement during a temporary gatheringSanitory arrangement during a temporary gathering
Sanitory arrangement during a temporary gatheringsonia Daga
 
K3LH: Sampah beserta keturunan
K3LH: Sampah beserta keturunanK3LH: Sampah beserta keturunan
K3LH: Sampah beserta keturunanSania M.
 
Gar 이영찬
Gar 이영찬Gar 이영찬
Gar 이영찬GlobalAR
 
Architecting solutions for the cloud
Architecting solutions for the cloudArchitecting solutions for the cloud
Architecting solutions for the cloudThe Open Group SA
 
5 Ways to Improve Sales Performance with Analytics
5 Ways to Improve Sales Performance with Analytics5 Ways to Improve Sales Performance with Analytics
5 Ways to Improve Sales Performance with AnalyticsQlik
 

Viewers also liked (10)

Vagas nt-e-aditamento
Vagas nt-e-aditamentoVagas nt-e-aditamento
Vagas nt-e-aditamento
 
2 _expresiones_matematicas_254209
2  _expresiones_matematicas_2542092  _expresiones_matematicas_254209
2 _expresiones_matematicas_254209
 
Sanitory arrangement during a temporary gathering
Sanitory arrangement during a temporary gatheringSanitory arrangement during a temporary gathering
Sanitory arrangement during a temporary gathering
 
K3LH: Sampah beserta keturunan
K3LH: Sampah beserta keturunanK3LH: Sampah beserta keturunan
K3LH: Sampah beserta keturunan
 
Gar 이영찬
Gar 이영찬Gar 이영찬
Gar 이영찬
 
Presentacion
PresentacionPresentacion
Presentacion
 
References
ReferencesReferences
References
 
Architecting solutions for the cloud
Architecting solutions for the cloudArchitecting solutions for the cloud
Architecting solutions for the cloud
 
5 Ways to Improve Sales Performance with Analytics
5 Ways to Improve Sales Performance with Analytics5 Ways to Improve Sales Performance with Analytics
5 Ways to Improve Sales Performance with Analytics
 
First In Thirst
First In ThirstFirst In Thirst
First In Thirst
 

Similar to Tema 01 - Creació de taules amb SQL.

Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Miquel Boada Artigas
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Miquel Boada Artigas
 
3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dadesMarketing per tu
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dadesMiquel Boada Artigas
 
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITALUNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITALPere Miquel Rosselló Espases
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Miquel Boada Artigas
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresJordi Catà
 
Presentacio SQL Server 2005 Express
Presentacio SQL Server 2005 ExpressPresentacio SQL Server 2005 Express
Presentacio SQL Server 2005 Expressrsanuy
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Barcelona Activa
 
Júlia Poy, C1: Ms office
Júlia Poy, C1: Ms officeJúlia Poy, C1: Ms office
Júlia Poy, C1: Ms officerestauracio
 
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Miquel Boada Artigas
 
Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.Marc Navarro
 
Framework Llibreries Lliures
Framework Llibreries LliuresFramework Llibreries Lliures
Framework Llibreries LliuresJordi Catà
 

Similar to Tema 01 - Creació de taules amb SQL. (20)

Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades3 gestió bàsica d'informació en sistemes gestors de bases de dades
3 gestió bàsica d'informació en sistemes gestors de bases de dades
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dades
 
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITALUNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
UNITAT 2: ORGANITZACIÓ, DISSENY I PRODUCCIÓ D’INFORMACIÓ DIGITAL
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.
 
Programaci aia
Programaci  aiaProgramaci  aia
Programaci aia
 
T4 ex2
T4 ex2T4 ex2
T4 ex2
 
UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016UF0322 Bases de dades Access 2016
UF0322 Bases de dades Access 2016
 
UF0322 Apunts
UF0322 ApuntsUF0322 Apunts
UF0322 Apunts
 
Cas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries LliuresCas d’us de Framework web desenvolupat amb llibreries Lliures
Cas d’us de Framework web desenvolupat amb llibreries Lliures
 
Presentacio SQL Server 2005 Express
Presentacio SQL Server 2005 ExpressPresentacio SQL Server 2005 Express
Presentacio SQL Server 2005 Express
 
Laboratoris 1
Laboratoris 1Laboratoris 1
Laboratoris 1
 
Itineraris IT Academy (2020)
Itineraris IT Academy (2020)Itineraris IT Academy (2020)
Itineraris IT Academy (2020)
 
Història de les bases de dades
Història de les bases de dadesHistòria de les bases de dades
Història de les bases de dades
 
Júlia Poy, C1: Ms office
Júlia Poy, C1: Ms officeJúlia Poy, C1: Ms office
Júlia Poy, C1: Ms office
 
Introducció a xml
Introducció a xmlIntroducció a xml
Introducció a xml
 
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació d...
 
Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.Introduccio a Drupal, guifi.net al citilab.
Introduccio a Drupal, guifi.net al citilab.
 
Framework Llibreries Lliures
Framework Llibreries LliuresFramework Llibreries Lliures
Framework Llibreries Lliures
 

More from Miquel Boada Artigas

Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerMiquel Boada Artigas
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Miquel Boada Artigas
 
LLenguatge SQL. Consultes utilitzant having
LLenguatge SQL. Consultes utilitzant havingLLenguatge SQL. Consultes utilitzant having
LLenguatge SQL. Consultes utilitzant havingMiquel Boada Artigas
 
LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. Miquel Boada Artigas
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalMiquel Boada Artigas
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Miquel Boada Artigas
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuidesMiquel Boada Artigas
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzadesMiquel Boada Artigas
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Miquel Boada Artigas
 

More from Miquel Boada Artigas (16)

Configuracio servei dns_linux
Configuracio servei dns_linuxConfiguracio servei dns_linux
Configuracio servei dns_linux
 
Configuracio servei dns Windows
Configuracio servei dns WindowsConfiguracio servei dns Windows
Configuracio servei dns Windows
 
Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows Server
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.
 
LLenguatge SQL. Consultes utilitzant having
LLenguatge SQL. Consultes utilitzant havingLLenguatge SQL. Consultes utilitzant having
LLenguatge SQL. Consultes utilitzant having
 
LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files. LLenguatge SQL. Consultes amb agrupació de files.
LLenguatge SQL. Consultes amb agrupació de files.
 
Model relacional i normalització
Model relacional i normalitzacióModel relacional i normalització
Model relacional i normalització
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacional
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)
 
Model entitat relació (ER)
Model entitat relació (ER)Model entitat relació (ER)
Model entitat relació (ER)
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuides
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzades
 
Emmagatzematge de la informació
Emmagatzematge de la informacióEmmagatzematge de la informació
Emmagatzematge de la informació
 
Model relacional i formes normals
Model relacional i formes normalsModel relacional i formes normals
Model relacional i formes normals
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)
 
Introducció a les bases de dades
Introducció a les bases de dadesIntroducció a les bases de dades
Introducció a les bases de dades
 

Recently uploaded

Sílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfSílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfsilvialopezle
 
Plans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El MusicalPlans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El Musicalalba444773
 
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERSSuperAdmin9
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfISMAELALVAREZCABRERA
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfISMAELALVAREZCABRERA
 
transició historia segon de batxiller at
transició historia segon de batxiller attransició historia segon de batxiller at
transició historia segon de batxiller atJuliaBasart1
 
feedback.pdf55555555555555555555555555555
feedback.pdf55555555555555555555555555555feedback.pdf55555555555555555555555555555
feedback.pdf55555555555555555555555555555twunt
 
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfErnest Lluch
 

Recently uploaded (8)

Sílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfSílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdf
 
Plans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El MusicalPlans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El Musical
 
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS
4 RATLLES - MAIG 2024 - ESCOLA AMETLLERS
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
 
transició historia segon de batxiller at
transició historia segon de batxiller attransició historia segon de batxiller at
transició historia segon de batxiller at
 
feedback.pdf55555555555555555555555555555
feedback.pdf55555555555555555555555555555feedback.pdf55555555555555555555555555555
feedback.pdf55555555555555555555555555555
 
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
 

Tema 01 - Creació de taules amb SQL.

  • 2. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Objectius 1. Creació de taules. Coneixements previs • Model Entitat-Relació. • Model relacional. • Transformació del model Entitat-Relació al model relacional. • Sistemes gestors de bases de dades (SGBD) • Creació de base de dades Requisits previs • Ordinador amb MySQL server instal·lat. • Client MySQL server (MySQL Workbench per la representació gràfica). • Connexió al servidor des del client • Una base de dades creada. Autor: Miquel Boada Pàgina 1 de 18
  • 3. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Creació de taules amb SQL Create table...............................................................................................................................................1 Objectius....................................................................................................................................................1 Coneixements previs................................................................................................................................1 Requisits previs.........................................................................................................................................1 Introducció................................................................................................................................................3 Model físic..................................................................................................................................................3 Transformació del model entitat-relació al relacional.........................................................................3 Símbols gràfics.....................................................................................................................................3 Creació de taules de dades en SQL........................................................................................................3 Sintaxis «Create Table».......................................................................................................................4 Data Types............................................................................................................................................5 Tipus text: char i varchar...............................................................................................................5 Tipus char....................................................................................................................................6 Tipus varchar...............................................................................................................................7 Comparació emmagatzematge char varchar.........................................................................7 Tipus numèrics................................................................................................................................7 Tipus numèrics de precisió exacta...........................................................................................7 Integer.....................................................................................................................................8 Decimal....................................................................................................................................9 Tipus numèrics aproximats....................................................................................................10 Tipus data/hora.............................................................................................................................11 TIME...........................................................................................................................................12 DATE / DATETIME.....................................................................................................................12 DATETIME vs TIMESTAMP.......................................................................................................13 Creació taules – Exemples.....................................................................................................................15 Webgrafia................................................................................................................................................16 Autor: Miquel Boada Pàgina 2 de 18
  • 4. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Introducció El model Entitat-Relació ens serveix per a poder representar mitjançant un llenguatge gràfic una estructura de dades associada a una determinada informació. La representació gràfica és una concreció del llenguatge natural a partir del qual s'ha generat el model. La conversió del model entitat-relació al model relacional aplicant les fòrmules de transformació ens permet obtenir les taules, els camps, la clau primària i altres elements que utilitzarem per a generar les taules. Model físic El model físic és la transformació del model relacional a instruccions executables en un sistema gestor de base de dades. Per a realitzar el model físic, cal tornar a recuperar alguns vistos en el model entitat-relació com els de domini, atribut identificador, valors NULL, atribut candidat ... Transformació del model entitat-relació al relacional. La transformació del model entitat-relació al model relacional es pot realitzar utilitzant eines gràfiques que ajuden a la comprensió de l'estructura de les taules i milloren la documentació de l'aplicació. MySQL Workbench és un client gràfic que porta un dissenyador gràfic per a dissenyar el diagrama associat al model relacional. Per accedir al dissenyador gràfic cal crear un nou model, ja sigui a través de l'opció de menú «File» i «New Model» o bé directament a través de la icona «+» associada a la pestanya «Home». Símbols gràfics Tot i que hi ha molts més símbols gràfics disponibles i possibilitats, el document només es mencionen aquells que es necessiten, ja que l'objectiu és crear les taules i les relacions entre elles sense necessitat de disposar de cap element gràfic d'ajuda. Tot i això, es considera interessant també poder aprofitar les eines que faciliten la tasca quan el nombre de taules d'una base de dades és important. La icona ens permet crear una taula. Les icones ens permeten relacionar les taules. La selecció correcte del tipus de relació és important; el sistema crea de forma automàtica els atributs i taules derivades del tipus de relació. Creació de taules de dades en SQL Tot i que es pugui uitlitzar l'eina gràfica per a crear la base de dades i taules associades, aquest sistema és lent i no aplicable quan s'han de realitzar modificacions a la base de dades: canvis en el tipus de dades, afegir noves columnes.... Autor: Miquel Boada Pàgina 3 de 18
  • 5. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Per aquest motiu cal conéixer les instruccions per a crear i modificar l'estructura d'una taula. Sintaxis «Create Table» CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) create_definition: col_name column_definition column_definition: data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] data_type: | INT[(length)] [UNSIGNED] [ZEROFILL] | INTEGER[(length)] [UNSIGNED] [ZEROFILL] | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL] | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL] | DECIMAL[(length[,decimals])] [UNSIGNED] [ZEROFILL] | NUMERIC[(length[,decimals])] [UNSIGNED] [ZEROFILL] | DATE | TIME[(fsp)] | TIMESTAMP[(fsp)] | DATETIME[(fsp)] | CHAR[(length)] [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] | VARCHAR(length) [BINARY] [CHARACTER SET charset_name] [COLLATE collation_name] En el requadre anterior hi ha l'especificació de la sintaxis per l'ordre de creació d'una taula. Es tracta d'una versió reduïda de les possibilitats que ens ofereix el llenguatge SQL per a la creació i configuració de taules. Tot i així, hi ha les opcions més comunes en la seva utilització. Autor: Miquel Boada Pàgina 4 de 18
  • 6. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Data Types En relació als tipus de dades proposats s'han diferenciat en tres grans grups: 1. Caràcter 2. Numèrics 3. Data i temps Cal indicar que a més d'aquests tre grans grups hi ha també el tipus d'objectes grans, que ens permeten emmagatzemar fitxers en una base de dades relacional. Es considera que per a emmagatzemar aquest tipus d'informació (fitxers, imatges, videos, audios...) és millor utilitzar una base de dades documental i per aquest motiu s'ha obviat aquest tipus de dada. En una base de dades relacional és millor emmagatzemar la ubicació física del fitxer (path) excepte que el sistema gestor de base de dades disposi de mecanismes per a indexar aquest tipus d'informació i poder buscar la informació pels camps on s'emmagatzemi aquest tipus d'informació. El modificador «binary» obliga a emmagatzemar la informació utilitzant el joc de caràcters binari. Així, per exemple, si el sistema té configurat per defecte el joc de caràcter «latin1» i s'especifica «binary» al camp, la codificació per aquest camp serà «latin1_bin» i per tant, s'utilitzarà aquest joc de caràcters per a les condicions i l'ordenació. Tipus text: char i varchar Els camps de tipus char i varchar ens permeten emmagatzemar caràcters. La difere cia entreǹ els dos tipus és el sistema que s'utilitza per a emmagatzemar la informació. En els camps de tipus char o varchar, després del nom del tipus cal indicar entre parèntesis la mida que es vol assignar al camp. Aquesta mida determina el nombre màxim de caràcters que s'hi podrà emmagatzemar. Create table t1 ( c1 char(5), c2 varchar(10), primary key(c1)) engine=innodb; La sentència anterior crea una taula «t1» amb 2 camps (c1 i c2). Al camp c1 se li ha assignat una mida màxima de 5 caràcters mentre que el camp c2 permet emmagatzemar fins a 10 caràcters. Si es sobrepassa la mida especificada pel camp alguns sistemes poden donar un error o bé altres simplement retallen la informació al màxim nombre de caràcters habilitats. En el cas de «mysql» el comportament depèn de la configuració del sistema. Si el sistema no està configurat amb el mode estricte («strict mode»), la comanda s'executarà i les dades s'emmagatzemaran en la taula. Quan s'analitzi l'estat de l'operació s'observarà que aquesta ha donat un avís («warning») i que s'ha retallat («truncate») la informació emmagatzemada en el camp. Si, per contra, s'habilita el mode estricte del sistema l'execució de la comanda finalitza sense actualitzar la informació en la taula: el resultat de la instrucció és la generació d'un error i la cancel·lació immediata de la instrucció. Autor: Miquel Boada Pàgina 5 de 18
  • 7. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules En la següent imatge es mostra el comportament del sistema amb el mode estricte habilitat i deshabilitat. Tipus char El tipus «char» utilitza una mida de camp fixe. Així , per exemple, si declaro un camp de 8 caràcters aquest sempre ocuparà 8 caràcters en el disc. Si d'aquests 8 caràcters només n'emplenem 5, els 3 restants s'ompliran mitjançant espais en blanc ocupant el corresponent espai en disc. L'avantatge d'aquest tipus de dada és que és més eficient que els tipus de dada de longitud variable1 . Utilitzarem aquest tipus quan calgui emmagatzemar caràcters en un camp i la longitud de la informació a emmagatzemar sigui fixe: un dni, una matrícula, un codi postal, un telèfon2 …. 1 Quan la longitud del registre és fixe. 2 Veure tipus numèrics Autor: Miquel Boada Pàgina 6 de 18
  • 8. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Tipus varchar El tipus «varchar» ens permet introduir informació de mida variable en un camp de la nostra base de dades. S'utilitzarà aquest tipus quan calgui emmagatzemar text o caràcters en el camp i no es pugui definir un nombre de fixe de caràcters: el nom d'una persona, d'una població, el títol d'un llibre, d'una pel·lícula... Comparació emmagatzematge char varchar Value CHAR(4) Storage Required VARCHAR(4) Storage Required '' ' ' 4 bytes '' 1 byte 'ab' 'ab ' 4 bytes 'ab' 3 bytes 'abcd' 'abcd' 4 bytes 'abcd' 5 bytes 'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes Tipus numèrics Els tipus numèrics els utilitzarem quan haguem d'emmagatzemar informació amb la qual haguem de realitzar càlculs. Així, per exemple, si es vol emmagatzemar el codi postal d'una població, un DNI, o un telèfon, tot i que aquesta informació estigui formada només per dígits, al no ser necessària la realització de càlculs amb aquesta informació s'utilitzarà un tipus «char». La informació relacionada amb preus, quantitats, imports, distàncies, …. sobre els quals es podran realitzar càlculs, cal emmagatzemar-la utilitzant tipus numèrics. Els tipus numèrics es poden dividir en dos grans grups tipus: exactes i aproximats. Tipus numèrics de precisió exacta Els tipus numèrics de precisió exacta són aquells en els quals no hi ha una pèrdua de precisió quan es realitzen càlculs. La majoria de vegades s'utilitzaran aquests tipus, sobretot quan la informació fa referència a imports monetaris. Dins els tipus numèrics de precisió exacte es poden diferenciar dos grans grups: • INTEGER ( o INT) • DECIMAL (o NUMERIC) Autor: Miquel Boada Pàgina 7 de 18
  • 9. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Integer Utilitzarem el tipus «integer» quan la dada a emmagatzemar sigui un valor enter. Tot i que l'especificació del tipus enter permet indicar la dimensió del número, aquesta no és necessària i s'utilitza només per a formatejar el valor numèric a una mida fixa. El valor per defecte associat a la mida és de 11 dígits. En el cas que s'indiqui una mida una mida específica, el valor del camp es visualitzarà utilitzant la mida indicada. Per tal que el sistema gestor de base de dades formategi el camp amb la mida fixa, afegint zeros a l'esquerra, cal especificar la directiva «zerofill» en la creació del camp. En la imatge anterior es crea una taula amb 3 camps, n1, n2 i n3. Pels camps n1 i n2 no s'ha especificat la mida del camp, per tant, la seva dimensió serà de 11 dígits per a la visualització. En el camp n1, a més, no s'ha especificat cap formateig per a la visualització de la informació. Quan es consulten les dades de la taula, per la columna 1 només es retorna el valor del camp numèric, eliminant els zeros no representatius. La columna 2 es formateja el camp amb un total de 11 dígits; s'afegeixen 10 zeros. Per la tercera columna, el camp es formateja amb 5 dígits ja que aquesta és la mida indicada per a visualització del camp. Cal indicar que l'espai d'emmagatzematge del camp en disc és independent de la mida especificada; només depèn del tipus de dada. En l'exemple de la imatge, el camp n1, n2 i n3 ocupa cada un d'ells un total de 4 bytes. Autor: Miquel Boada Pàgina 8 de 18
  • 10. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Type Storage Minimum Value Maximum Value (Bytes) (Signed/Unsigned) (Signed/Unsigned) TINYINT Unsigned 1 -128 127 0 255 SMALLINT Unsigned 2 -32768 32767 0 65535 MEDIUMINT Unsigned 3 -8388608 8388607 0 16777215 INT Unsigned 4 -2147483648 2147483647 0 4294967295 BIGINT Unsigned 8 -9223372036854775808 9223372036854775807 0 18446744073709551615 Tipus de dades enter, bytes d'emmagatzematge i valors mínims i màxims. Decimal El tipus decimal, a diferència del tipus enter, permet emmagatzemar els decimals números reals. En el tipus decimal se li associen dos valors numèrics, el primer és el total de dígits que té el número i el segon el nombre de dígits que s'utilitzaran per a especificar la part decimal. decimal (m,n) : - m: total de dígits, incloent els decimals - n: dígits decimals Per exemple decimal (5,2) : - 3 dígits per la part entera (5-2=3). - 2 dígits per la part decimal. - -999.99 valor mínim que pot emmagatzemar el camp. - +999.99 valor màxim que pot emmagatzemar el camp. Si no s'especifica cap dimensió en el camp només es podran emmagatzemar números enters. Si s'indica la directiva zerofill s'emplenaran amb valor zero els dígits que no s'hagin utilitzat. Autor: Miquel Boada Pàgina 9 de 18
  • 11. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Tipus numèrics aproximats Els tipus aproximats són aquells que no emmagatzemen el valor exacte. Els tipus aproximats estan formats bàsicament pels tipus float i real amb les seves variants. Quan es fa la comparació utilitzant aquests tipus cal especificar sempre amb quina precisió es volen realitzar els càlculs; conseqüència de no emmagatzemar un tipus exacte. Mitjançant l'exemple de la imatge s'il·lustra quin és el significat «d'emmagatzemar un valor no exacte». Com es pot observar, el resultat de l'operació no és 21.4 , sinó que al final s'ha emmagatzemat un dígit decimal 6 adicional; causa de la no exactitud de l'operació. Aquest fet condiciona a la forma de realitzar les comparacions, ja que aquestes no es poden fer per igualtat. Per exemple, si sumem els dos valors de f1 i f2 el resultat és 21.4 . Per tant, una sentència del tipus «select f1, f2 from t2 where f1+f2=21.4» ens hauria de retornar la fila amb valors de f1 101.4 i -80 per f2. Aquest fet no és així donada la imprecisió del tipus. Per a obtenir el resultat desitjat cal indicar primer quina precisió es vol i després adaptar la consulta a la precisió desitjada. Per exemple, si volem aproximar fins al 5è decimal es pot fer una consulta de l'estil: Autor: Miquel Boada Pàgina 10 de 18
  • 12. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules «select f1, f2 from t2 where abs(f1+f2)<21.4000001» . L'utilització de l'operant < obliga a que es mostrin tots les files de la taula amb un resultat inferior a l'especificat. El valor abs obliga a que aquest valor sempre sigui positiu. En la següent imatge es mostra una simulació del funcionament per l'exemple explicat. Cal indicar que el tractament amb els tipus de dades float i real és molt ràpid i, per tant, s'aconsella el seu ús quan la precisió no és un requisit important però sí la velocitat en el tractament de les dades. Tipus data/hora Per a emmagatzemar dates i hores disposem dels tipus: • DATE • TIME • DATETIME • TIMESTAMP Sempre que es vulgui especificar una data o una hora o ambdues informacions es farà utilitzant cometes simples ( ' ). Per a separar els diferents elements de data utilitzarem el guionet ( - ) o bé la barra inclinada ( / ). La informació entre hores minuts i segons es farà utilitzant els dos punts ( : ). Si es volen indicar dècimes , centèsimes …. es farà utilitzant el punt com a separador ( . ), tot i que mysql server no emmagatzemarà la part decimal. Autor: Miquel Boada Pàgina 11 de 18
  • 13. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules TIME Si el nostre camp ha d'emmagatzemar una hora determinada o bé un interval de temps l'única opció que es disposa és la de definir un camp utilitzant el tipus «time». Tota la resta de tipus relacionats amb la data poden emmagatzemar només la data o bé la data i hora. Amb el tipus time es poden precisar fins als segons, però no hi ha possibilitat d'emmagatzemar dècimes o centèsimes de segons. Tot i que no sigui obligatori, per a introduir un temps sempre utilitzarem els dos punts com a separador i introduirà l'hora amb tots els seus components seguint el format HH:MM:SS. En la imatge , tot i que no ha donat cap «warning» es pot observar com les mil·lèsimes de segon introduides en la segona hora s'han perdut en la recuperació de les dades. DATE / DATETIME Per a introduir una data sempre s'utilitzarà el format de data anglès. La data es pot introduir utilitzant els 4 dígits per a especificar l'any o bé utilitzant dos dígits: l'utilització de 4 dígits ajuda a la lectura de la informació. Quan el camp és de tipus «datetime» permet emmagatzemar una data i una hora. En la imatge es mostren alguns exemples d'utilització dels diferents tipus de data utilitzant diferents formats. Autor: Miquel Boada Pàgina 12 de 18
  • 14. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules L'interval de dates permeses és des del'1000-01-01' fins al '9999-12-31' pels tipus «date» i «datetime». Pel tipus «timestamp» l'interval és bastant més reduït i comprèn des de la data '1970-01-01 00:00:01' UTC3 fins a '2038-01-19 03:14:07' UTC. DATETIME vs TIMESTAMP La diferència entre DATETIME i TIMESTAMP és que el tipus «timestamp» fa una conversió de l'hora a format UTC per emmagatzemar la data i torna a convertir la data i hora a la zona horària actual quan recupera la data. Així, per exemple, s'evita que quan hi ha una participació entre foros els efectes dels canvis horaris entre les diferents regions. Per a mostrar el funcionament i la diferència del tipus «dateTime» i «timestamp» utilitzarem la taula «dates» creada en el punt interior i la funció introduïda. La configuració horària del servidor era GMT+1 en el moment d'introduir les dades. Per a canviar la zona horària del servidor , primer cal carregar les taules amb la informació horària al servidor. Des de la consola de Linux cal executar la comanda: Tot i que l'execució de la comanda ens mostri que hi ha algunes zones horàries que no ha pogut carregar, sí que tenim les dades necessàries per a poder mostrar el funcionament i al diferència entre els dos tipus de camps. Per a canviar la zona horària del servidor , tot i que es pugui fer a nivell de servidor, utilitzarem la comanda de MySQL «set zone=zonaHoraria», tal i com es mostra a la imatge. Especifiquem com a zona horària «+1:00» que és la que té per defecte el servidor: no hi ha cap canvi entre la informació introduïda i la visualitzada. 3 Coordinated Universal Time Autor: Miquel Boada Pàgina 13 de 18
  • 15. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Si, per contra, establim una zona horària +6:00 , mentre que la columna «datet» continua mostrant la mateixa hora, la columna «dates» ens dóna la informació per la nova zona horària establerta (20:34:12) que correspon a l'hora +6. Autor: Miquel Boada Pàgina 14 de 18
  • 16. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Creació taules – Exemples CREATE TABLE llibre ( isbn CHAR(13), titol VARCHAR(50) NOT NULL, dataAdquisicio DATE NOT NULL, preu DECIMAL(6,2) NOT NULL, PRIMARY KEY(isbn) ) engine=innodb; -- Els camps usuari i password han de ser sensibles a majúscules, minúscules i accents CREATE TABLE registre( usuari VARCHAR(20) COLLATE 'latin1_general_cs', password VARCHAR(16) NOT NULL COLLATE 'latin1_general_cs', email VARCHAR(255) UNIQUE NOT NULL, -- No hi poden haver duplicats de correu (clau candidata) dataReg TIMESTAMP NOT NULL, -- Determinar ordre de registre punts INTEGER, -- Els punts inicialment poden ser NULL (diferent de zero) PRIMARY KEY(usuari) ) engine=innodb; Autor: Miquel Boada Pàgina 15 de 18
  • 17. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 1 – Introducció . Creació de taules Webgrafia http://dev.mysql.com/doc/refman/5.7/en/create-table.html http://dev.mysql.com/doc/refman/5.7/en/char.html http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict http://dev.mysql.com/doc/refman/5.7/en/binary-varbinary.html http://dev.mysql.com/doc/refman/5.7/en/integer-types.html http://code.rohitink.com/2013/06/12/mysql-integer-float-decimal-data-types-differences/ http://dev.mysql.com/doc/refman/5.7/en/choosing-types.html http://dev.mysql.com/doc/refman/5.7/en/datetime.html Autor: Miquel Boada Pàgina 16 de 18