Diferència entre revisions de la pàgina «SQL taules»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «Aquest tutorial tracta de la creació de taules i insercions bàsiques de registres. Per això necessitarem les instruccions [http://dev.mysql.com/doc/refman/5.0/en/crea…».)
 
 
(Hi ha 9 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
Aquest tutorial tracta de la creació de taules i insercions bàsiques de registres.
+
Aquest tutorial tracta de la creació de bases de dades amb la instrucció [http://dev.mysql.com/doc/refman/5.0/en/create-database.html CREATE DATABASE].
  
Per això necessitarem les instruccions [http://dev.mysql.com/doc/refman/5.0/en/create-table.html CREATE TABLE]
+
Posteriorment passarem a la creació de taules amb [http://dev.mysql.com/doc/refman/5.0/en/create-table.html CREATE TABLE] i insercions bàsiques de registres amb [http://dev.mysql.com/doc/refman/5.0/en/insert.html INSERT].
i també [http://dev.mysql.com/doc/refman/5.0/en/insert.html INSERT].
 
  
 
Primer de tot entrarem al sistema amb
 
Primer de tot entrarem al sistema amb
 
  $> mysql -u <nom_usuari> -p -h <host>
 
  $> mysql -u <nom_usuari> -p -h <host>
 +
  
  
 
== Creació de taules ==
 
== Creació de taules ==
Les taules es creen amb la comanda [http://dev.mysql.com/doc/refman/5.0/en/create-table.html CREATE TABLE].
 
  
 
Els tipus de dades fonamentals amb els que tractarem seran:
 
Els tipus de dades fonamentals amb els que tractarem seran:
Línia 24: Línia 23:
 
**ENUM
 
**ENUM
  
Primer de tot crearem la base de dades. Si l'usuari és enric, podem crear la base de dades:
+
Primer de tot crearem la base de dades. Si l'usuari és enric, podem crear la base de dades amb [http://dev.mysql.com/doc/refman/5.0/en/create-database.html CREATE DATABASE]:
 
  mysql> '''CREATE DATABASE''' enric_insti;
 
  mysql> '''CREATE DATABASE''' enric_insti;
 
  mysql> use enric_insti
 
  mysql> use enric_insti
  
Creem una taula d'assignatures amb la instrucció:
+
Creem una taula d'assignatures amb la instrucció [http://dev.mysql.com/doc/refman/5.0/en/create-table.html CREATE TABLE]. La sintaxi bàsica és:
 +
 
 +
'''CREATE TABLE <nom_taula> ( <def_col_1>, <def_col_2>, etc.);'''
 +
 
 +
on <def_col> significa "definició de columna" i es posa:
 +
 
 +
'''''<def_col>'': ''<nom_columna> <tipus_dades> <modificadors>'''''
 +
 
 +
Així, la definició de la nostra taula quedarà:
 
  mysql> '''CREATE TABLE''' assignatures (
 
  mysql> '''CREATE TABLE''' assignatures (
 
     -> id_assignatura INT NOT NULL auto_increment '''PRIMARY KEY''',
 
     -> id_assignatura INT NOT NULL auto_increment '''PRIMARY KEY''',
Línia 38: Línia 45:
 
Per veure si tot ha anat bé, fem:
 
Per veure si tot ha anat bé, fem:
 
  mysql> desc assignatures;
 
  mysql> desc assignatures;
 +
 +
Possibles '''errors''':
 +
*Si la creació de la taula us ha donat un error podeu tornar a repetir la definició de la taula.
 +
*Si heu creat la taula però alguna columna és errònia, heu de tornar a crear la taula. Per poder crear-la de nou abans l'heu de destruïr amb la comanda '''DROP TABLE <nom_taula>;'''
 +
 +
== Introducció de dades ==
 +
Per introduïr les dades utilitzarem la comanda [http://dev.mysql.com/doc/refman/5.0/en/insert.html INSERT].
 +
Hi ha dues versions del INSERT:
 +
*INSERT INTO <nom_taula> (<col1>,<col2>,etc.)
 +
*:VALUES (<val1>,<val2>,etc.);
 +
*INSERT INTO <nom_taula>
 +
*:SET <col1>=<val1>, <col2>=<val2>, etc.
 +
 +
Abans de fer un INSERT, però, cal conèixer totes les dades. Per exemple, si volem introduïr l'assignatura amb aquestes dades:
 +
*Nom de l'assignatura: Matemàtiques 2n ESO
 +
*Titulació: ESO
 +
*Professor: Pere Font
 +
*Hores: 120
 +
 +
Cal tenir en compte que  ''id_assignatura'' és la [[PK]] ([[Clau primària]]) i la genera automàticament la taula ja que la hem posat com a '''''auto_increment''''' en la definició de la taula. Per tant, no posarem la ''id_assigntura'' dintre de la llista de columnes. Podem forçar un valor de la PK si volem al introduir la [[tupla]] però en general no ens interessa fer-ho i preferirem deixar-ho de manera automàtica.
 +
 +
La instrucció adient serà:
 +
mysql> '''INSERT INTO''' assignatures (titulacio,assignatura,professor,hores)
 +
    -> '''VALUES''' ("ESO","Matemàtiques 2n ESO","Pere Font",120);
 +
 +
I per comprovar si tot ha anat bé farem:
 +
mysql> SELECT * FROM assignatures;
 +
 +
Fixeu-vos en què la columna ''id_assignatura'' figura un "1", assignat automàticament per la base de dades.
 +
 +
== Exercici ==
 +
Introduïu, segunt l'exemple anterior, dades corresponents a les assignatures de 1r d'ESO.
 +
*1r ESO
 +
**Ciències naturals (Josep Cornudella, 130h)
 +
**Ciències socials (Alba Rodríguez, 100 h)
 +
**Visual i plàstica (Conxita Franch, 86 h)
 +
**Castellà (Pere Andreu, 100 h)
 +
**Català (Jaume Frontanyà, 130 h)
 +
**Matemàtiques (Pepi Torres, 130 h)
 +
**Anglès (Ramon Sanjuan, 100 h)
 +
 +
<big>Esborrat</big>
 +
 +
Si us equivoqueu en una entrada podeu consultar com [[SQL esborrat|esborrar-la amb la comanda DELETE]], però aneu amb compte que és fàcil esborrar-ho tot!
 +
 +
== Índex sobre taules ==
 +
(... encara per fer ...)
 +
 +
 +
== Taules i relacions ==
 +
(... encara per fer ...)

Revisió de 16:09, 2 feb 2010

Aquest tutorial tracta de la creació de bases de dades amb la instrucció CREATE DATABASE.

Posteriorment passarem a la creació de taules amb CREATE TABLE i insercions bàsiques de registres amb INSERT.

Primer de tot entrarem al sistema amb

$> mysql -u <nom_usuari> -p -h <host>


Creació de taules[modifica]

Els tipus de dades fonamentals amb els que tractarem seran:

  • Nombres
    • Sencers (enters): INT
    • Decimals (punt flotant): FLOAT, DOUBLE
  • Text
    • CHAR (entre parèntesi el nº de caràcters)
    • VARCHAR (ídem)
    • TEXT (sense cap paràmetre, equival al MEMO de Access). No es pot indexar.
  • Binari
    • BLOB (Binary Large OBject): per arxius, fotos, etc.
  • Enumerats
    • ENUM

Primer de tot crearem la base de dades. Si l'usuari és enric, podem crear la base de dades amb CREATE DATABASE:

mysql> CREATE DATABASE enric_insti;
mysql> use enric_insti

Creem una taula d'assignatures amb la instrucció CREATE TABLE. La sintaxi bàsica és:

CREATE TABLE <nom_taula> ( <def_col_1>, <def_col_2>, etc.);

on <def_col> significa "definició de columna" i es posa:

<def_col>: <nom_columna> <tipus_dades> <modificadors>

Així, la definició de la nostra taula quedarà:

mysql> CREATE TABLE assignatures (
    -> id_assignatura INT NOT NULL auto_increment PRIMARY KEY,
    -> titulacio VARCHAR(50) NOT NULL,
    -> assignatura VARCHAR(50) NOT NULL,
    -> professor VARCHAR(50) NOT NULL,
    -> hores INT);

Per veure si tot ha anat bé, fem:

mysql> desc assignatures;

Possibles errors:

  • Si la creació de la taula us ha donat un error podeu tornar a repetir la definició de la taula.
  • Si heu creat la taula però alguna columna és errònia, heu de tornar a crear la taula. Per poder crear-la de nou abans l'heu de destruïr amb la comanda DROP TABLE <nom_taula>;

Introducció de dades[modifica]

Per introduïr les dades utilitzarem la comanda INSERT. Hi ha dues versions del INSERT:

  • INSERT INTO <nom_taula> (<col1>,<col2>,etc.)
    VALUES (<val1>,<val2>,etc.);
  • INSERT INTO <nom_taula>
    SET <col1>=<val1>, <col2>=<val2>, etc.

Abans de fer un INSERT, però, cal conèixer totes les dades. Per exemple, si volem introduïr l'assignatura amb aquestes dades:

  • Nom de l'assignatura: Matemàtiques 2n ESO
  • Titulació: ESO
  • Professor: Pere Font
  • Hores: 120

Cal tenir en compte que id_assignatura és la PK (Clau primària) i la genera automàticament la taula ja que la hem posat com a auto_increment en la definició de la taula. Per tant, no posarem la id_assigntura dintre de la llista de columnes. Podem forçar un valor de la PK si volem al introduir la tupla però en general no ens interessa fer-ho i preferirem deixar-ho de manera automàtica.

La instrucció adient serà:

mysql> INSERT INTO assignatures (titulacio,assignatura,professor,hores)
    -> VALUES ("ESO","Matemàtiques 2n ESO","Pere Font",120);

I per comprovar si tot ha anat bé farem:

mysql> SELECT * FROM assignatures;

Fixeu-vos en què la columna id_assignatura figura un "1", assignat automàticament per la base de dades.

Exercici[modifica]

Introduïu, segunt l'exemple anterior, dades corresponents a les assignatures de 1r d'ESO.

  • 1r ESO
    • Ciències naturals (Josep Cornudella, 130h)
    • Ciències socials (Alba Rodríguez, 100 h)
    • Visual i plàstica (Conxita Franch, 86 h)
    • Castellà (Pere Andreu, 100 h)
    • Català (Jaume Frontanyà, 130 h)
    • Matemàtiques (Pepi Torres, 130 h)
    • Anglès (Ramon Sanjuan, 100 h)

Esborrat

Si us equivoqueu en una entrada podeu consultar com esborrar-la amb la comanda DELETE, però aneu amb compte que és fàcil esborrar-ho tot!

Índex sobre taules[modifica]

(... encara per fer ...)


Taules i relacions[modifica]

(... encara per fer ...)