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

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «== Importació de dades == Utilitzarem l'exemple per les consultes "mundo.sql". === Importació amb phpmyadmin === # Crear una base de dades buida # Descarregar l'arxiu ...».)
 
 
(Hi ha 9 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
 +
Disposem de [http://dev.mysql.com/doc/index-other.html diverses BBDD d'exemple a la pròpia web de MySQL].
 +
 +
Els exemples estan fets amb la base de dades "mundo". L'arxiu amb les dades el teniu aquí: [[Fitxer:mundo.sql]], més avall trobareu com importar-lo dins d'una base de dades prèviament creada.
 +
 +
És interessant tenir en compte que '''en alguns sistemes amb permisos restringits (la majoria de ''hostings'')''' no podem crear bases de dades amb el nom que vulguem. '''Caldrà que creem la base de dades amb el nostre nom d'usuari com a prefix'''. Per exemple, en el meu cas hauria de crear una base de dades amb el nom "enric_mundo" o obtindria un error com aquest.
 +
mysql> create database mundo;
 +
ERROR 1044 (42000): Access denied for user 'enric'@'localhost' to database 'mundo'
 +
Utilitzant el prefix, tot funciona:
 +
mysql> create database enric_mundo;
 +
Query OK, 1 row affected (0.02 sec)
 +
 +
Esteu advertits :) Així, entrem en matèria:
 +
 +
 +
== Creació de bases de dades ==
 +
Tenim 3 mètodes per fer-ho:
 +
* Amb la comanda linux ''mysqladmin''
 +
* Amb la consola del client mysql (consola per executar comandes SQL dins de la base de dades).
 +
* Amb ''phpmyadmin''
 +
 +
 +
=== Creació de bases de dades amb mysqladmin ===
 +
 +
La comanda Linux ''mysqladmin'' té aquesta sintaxi:
 +
$ mysqladmin -u <usuari> -p -h <host_ip> create <nom_base_de_dades>
 +
Pel nostre cas concret (en host local, no cal el paràmetre -h), serà:
 +
$ mysqladmin -u <usuari> -p create mundo
 +
Si no diu res, és que tot ha anat bé. Si voleu comprovar si la base s'ha creat correctament, mireu la següent secció amb la consola mysql i la comanda "show databases".
 +
 +
L'avantatge d'aquest mètode és que no necessita que entrem a la consola de mysql.
 +
 +
 +
=== Creació de bases de dades amb la consola mysql ===
 +
Per entrar a la consola mysql, anem a la consola linux i posem:
 +
$ mysql -u <usuari> -p
 +
 +
El "prompt" que sol ser un dòlar "$", ara ha canviat a "mysql>".
 +
'''Des d'aquesta consola podem introduir comandes SQL (sempre acaben amb un punt i coma)'''.
 +
 +
La comanda que necessitem és la "create database" amb la següent sintaxi:
 +
mysql> create database <nom_bbdd>;
 +
 +
I pel nostre cas concret serà:
 +
mysql> create database mundo;
 +
mysql> show databases;
 +
...
 +
mysql> exit;
 +
 +
Fixeu-vos que la comanda SQL "show databases;" ens mostra les bases de dades que tenim disponibles. Això ens donarà un resultat més o menys com aquest:
 +
mysql> show databases;
 +
+--------------------+
 +
| Database          |
 +
+--------------------+
 +
| information_schema |
 +
| enric_samye        |
 +
| enric_wiki1        |
 +
+--------------------+
 +
3 rows in set (0.02 sec)
 +
 +
mysql>
 +
 +
...i podem seguir teclejant comandes SQL.
 +
 +
 +
=== Creació de bases de dades amb phpmyadmin ===
 +
Apunteu el vostre navegador a:
 +
<nowiki>http://<nom_del_servidor>/phpmyadmin</nowiki>
 +
entreu amb el vostre usuari i contrasenya i seguiu els menús... és molt fàcil!!
 +
 +
 +
 
== Importació de dades ==
 
== Importació de dades ==
Utilitzarem l'exemple per les consultes "mundo.sql".
+
 
 +
Disposeu de les BBDD de prova "oficials" de MySQL [http://dev.mysql.com/doc/index-other.html shakila, world, employee i menagerie].
 +
 
 +
També disposeu d'una versió antiga de world aquí: [[File:mundo.sql]]
 +
 
  
 
=== Importació amb phpmyadmin ===
 
=== Importació amb phpmyadmin ===
 
# Crear una base de dades buida
 
# Crear una base de dades buida
# Descarregar l'arxiu [[File:mundo.sql]]
+
# Descarregar l'arxiu '''.sql''' (veure més amunt)
 
# Anar al menú "importar"
 
# Anar al menú "importar"
# Seleccionar l'arxiu "mundo.sql" descarregat.
+
# Seleccionar l'arxiu ".sql" descarregat.
 
# Prémer "executar".
 
# Prémer "executar".
 +
  
  
 
=== Importació per línia de comandes (Linux) ===
 
=== Importació per línia de comandes (Linux) ===
  
*Descarregueu-vos l'arxiu [[File:mundo.sql]] i deseu-lo en un directori conegut
+
*Descarregueu-vos l'arxiu '''.sql''' i deseu-lo en un directori conegut
*Creeu la base de dades "mundo"
+
*'''Creeu la base de dades''' "mundo". Per fer això podeu fer-ho entrant al mysql o bé amb la '''comanda ''mysqladmin''''' des de la línia de comandes de Linux. La sintaxi general de ''mysqladmin'' és aquesta:
  $> mysqladmin -u <usuari> -p create mundo
+
*:$ mysqladmin -u <usuari> -p -h <host_ip> create <nom_base_de_dades>
*Situeu-vos al directori on teniu l'arxiu "mundo.sql"
+
Pel nostre cas concret (en host local, no cal el paràmetre -h), serà:
*Executeu la comanda
+
  $ mysqladmin -u <usuari> -p create mundo
  $> mysql -u <usuari> -p mundo < mundo.sql
+
 
 +
*'''Importar les dades''' de l'arxiu .SQL a dins de la nova base de dades creada.
 +
**Situeu-vos al directori on teniu l'arxiu "mundo.sql"
 +
**La comanda és el client de MySQL que se sol utilitzar també per consola, i li redirigirem l'arxiu .SQL amb el "<". Aquesta comanda té la següent sintaxi:
 +
$ mysql -u <usuari> -p <nom_base_de_dades> '''<''' <nom_arxiu.sql>
 +
**Pel nostre cas concret, la comanda serà:
 +
  $ mysql -u <usuari> -p mundo < mundo.sql
 
D'aquesta manera introduireu les instruccions SQL sobre la base de dades, creant les taules pertinents.
 
D'aquesta manera introduireu les instruccions SQL sobre la base de dades, creant les taules pertinents.
 +
 +
 +
== Exercicis ==
 +
Disposeu de [http://dev.mysql.com/doc/index-other.html BBDD d'exemple en la web de MySQL].
 +
 +
# Descarrega les 2 versions de la ''world database''.
 +
#* [http://dev.mysql.com/doc/index-other.html La versió de la web actual amb taules InnoDB].
 +
#* [https://cacauet.org/insti/world_myisam.sql Aquesta versió antiga amb taules MyIsam].
 +
# Modifica el scripts per tal que les 2 bases de dades vagin a parar a dues BBDD diferents.
 +
# Importa les 2 versions '''calculant el temps que triga a importar-se''' (utilitzant, per exemple, la comanda ''time'' de Linux).
 +
#* Quina diferència de temps hi ha?
 +
#* A què creus que es deu això?

Revisió de 13:58, 23 set 2016

Disposem de diverses BBDD d'exemple a la pròpia web de MySQL.

Els exemples estan fets amb la base de dades "mundo". L'arxiu amb les dades el teniu aquí: Fitxer:Mundo.sql, més avall trobareu com importar-lo dins d'una base de dades prèviament creada.

És interessant tenir en compte que en alguns sistemes amb permisos restringits (la majoria de hostings) no podem crear bases de dades amb el nom que vulguem. Caldrà que creem la base de dades amb el nostre nom d'usuari com a prefix. Per exemple, en el meu cas hauria de crear una base de dades amb el nom "enric_mundo" o obtindria un error com aquest.

mysql> create database mundo;
ERROR 1044 (42000): Access denied for user 'enric'@'localhost' to database 'mundo'

Utilitzant el prefix, tot funciona:

mysql> create database enric_mundo;
Query OK, 1 row affected (0.02 sec)

Esteu advertits :) Així, entrem en matèria:


Creació de bases de dades[modifica]

Tenim 3 mètodes per fer-ho:

  • Amb la comanda linux mysqladmin
  • Amb la consola del client mysql (consola per executar comandes SQL dins de la base de dades).
  • Amb phpmyadmin


Creació de bases de dades amb mysqladmin[modifica]

La comanda Linux mysqladmin té aquesta sintaxi:

$ mysqladmin -u <usuari> -p -h <host_ip> create <nom_base_de_dades>

Pel nostre cas concret (en host local, no cal el paràmetre -h), serà:

$ mysqladmin -u <usuari> -p create mundo

Si no diu res, és que tot ha anat bé. Si voleu comprovar si la base s'ha creat correctament, mireu la següent secció amb la consola mysql i la comanda "show databases".

L'avantatge d'aquest mètode és que no necessita que entrem a la consola de mysql.


Creació de bases de dades amb la consola mysql[modifica]

Per entrar a la consola mysql, anem a la consola linux i posem:

$ mysql -u <usuari> -p

El "prompt" que sol ser un dòlar "$", ara ha canviat a "mysql>". Des d'aquesta consola podem introduir comandes SQL (sempre acaben amb un punt i coma).

La comanda que necessitem és la "create database" amb la següent sintaxi:

mysql> create database <nom_bbdd>;

I pel nostre cas concret serà:

mysql> create database mundo;
mysql> show databases;
...
mysql> exit;

Fixeu-vos que la comanda SQL "show databases;" ens mostra les bases de dades que tenim disponibles. Això ens donarà un resultat més o menys com aquest:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| enric_samye        |
| enric_wiki1        |
+--------------------+
3 rows in set (0.02 sec)

mysql> 

...i podem seguir teclejant comandes SQL.


Creació de bases de dades amb phpmyadmin[modifica]

Apunteu el vostre navegador a:

http://<nom_del_servidor>/phpmyadmin

entreu amb el vostre usuari i contrasenya i seguiu els menús... és molt fàcil!!


Importació de dades[modifica]

Disposeu de les BBDD de prova "oficials" de MySQL shakila, world, employee i menagerie.

També disposeu d'una versió antiga de world aquí: Fitxer:Mundo.sql


Importació amb phpmyadmin[modifica]

  1. Crear una base de dades buida
  2. Descarregar l'arxiu .sql (veure més amunt)
  3. Anar al menú "importar"
  4. Seleccionar l'arxiu ".sql" descarregat.
  5. Prémer "executar".


Importació per línia de comandes (Linux)[modifica]

  • Descarregueu-vos l'arxiu .sql i deseu-lo en un directori conegut
  • Creeu la base de dades "mundo". Per fer això podeu fer-ho entrant al mysql o bé amb la comanda mysqladmin des de la línia de comandes de Linux. La sintaxi general de mysqladmin és aquesta:
    $ mysqladmin -u <usuari> -p -h <host_ip> create <nom_base_de_dades>

Pel nostre cas concret (en host local, no cal el paràmetre -h), serà:

$ mysqladmin -u <usuari> -p create mundo
  • Importar les dades de l'arxiu .SQL a dins de la nova base de dades creada.
    • Situeu-vos al directori on teniu l'arxiu "mundo.sql"
    • La comanda és el client de MySQL que se sol utilitzar també per consola, i li redirigirem l'arxiu .SQL amb el "<". Aquesta comanda té la següent sintaxi:
$ mysql -u <usuari> -p <nom_base_de_dades> < <nom_arxiu.sql>
    • Pel nostre cas concret, la comanda serà:
$ mysql -u <usuari> -p mundo < mundo.sql

D'aquesta manera introduireu les instruccions SQL sobre la base de dades, creant les taules pertinents.


Exercicis[modifica]

Disposeu de BBDD d'exemple en la web de MySQL.

  1. Descarrega les 2 versions de la world database.
  2. Modifica el scripts per tal que les 2 bases de dades vagin a parar a dues BBDD diferents.
  3. Importa les 2 versions calculant el temps que triga a importar-se (utilitzant, per exemple, la comanda time de Linux).
    • Quina diferència de temps hi ha?
    • A què creus que es deu això?