Comandes bàsiques d'administració de bases de dades MySQL - Part I


La base de dades és un conjunt estructurat de dades emmagatzemades electrònicament. El concepte de base de dades era conegut pels nostres avantpassats fins i tot quan no hi havia ordinadors, però crear i mantenir aquesta base de dades era una feina molt tediosa. En una base de dades manual, per exemple, de 100 pàgines, si heu de cercar tots els empleats el sou dels quals era inferior a 10.000, només penseu com de difícil hauria estat, aleshores.

En el món d'avui, simplement no pots escapar de la base de dades. En aquests moments milions de bases de dades treballen arreu del món per emmagatzemar i obtenir dades de tot tipus, ja siguin dades estratègiques, registres d'empleats o tecnologies web.

La base de dades sovint s'anomena procés de fons, ja que no és visible per l'usuari final ni l'usuari final interactua directament amb la base de dades. Funcionen en processos de front-end, és a dir, PHP, VB, ASP.NET, etc. i demanen a l'interfície que s'ocupi de la base de dades al back-end.

Hi ha diversos servidors i clients de bases de dades disponibles com Oracle, MySQL, MySQLi, MongoDB, etc. La sintaxi de tots aquests és més o menys la mateixa. Dominar-ne un significa tenir el control de la majoria d'ells i aprendre les consultes d'una base de dades és molt fàcil i divertit.

Comencem amb consultes senzilles a la base de dades. Farem servir MySQL que ve inclòs amb la majoria de les distribucions de Linux de manera predeterminada, podeu instal·lar-lo manualment des del dipòsit, si no està instal·lat per defecte en el vostre cas.

Bé, una consulta a la base de dades és una simple peça de codi que s'envia a la base de dades per obtenir un resultat personalitzat i refinat, segons sigui necessari.

Instal·leu la base de dades MySQL

Utilitzeu el gestor de paquets yum o apt per instal·lar la base de dades MySQL.

# yum install mysql mysql-client mysql-server  (on Yum based Systems)

# apt-get install mysql mysql-client mysql-server (on Apt based Systems)

Inicieu el servei de base de dades MySQL com:

# service mysqld start
or
# service mysql start

Bé, instal·lar una base de dades MySQL us portarà a la configuració on se us demanarà que configureu la contrasenya d'administrador, etc. Un cop hàgiu acabat d'instal·lar i iniciar el servidor, aneu al vostre indicador de MySQL.

# mysql -u root -p

Substituïu root pel vostre nom d'usuari configurat i introduïu la contrasenya quan se us demani, si la credencial d'inici de sessió és correcta, us trobareu al vostre missatge de MySQL en un obrir i tancar d'ulls.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 195 

Server version: 5.5.31-0+wheezy1 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. 
Other names may be trademarks of their respective owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Ara fer consultes en aquest prompte és molt educatiu i divertit.

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

mysql>

Nota: informa que la consulta era correcta, significa que s'ha creat la base de dades. Podeu verificar la vostra base de dades acabada de crear com a.

mysql> show databases; 
+--------------------+
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
9 rows in set (0.00 sec) 
mysql>

Nota: Observeu la vostra base de dades a la sortida anterior.

Ara heu de seleccionar la base de dades per treballar-hi.

mysql> use tecmint;
Database changed
mysql>

Aquí crearem una taula per dir minttec amb tres camps com:

mysql> CREATE TABLE minttec (
    -> id Int(3), 
    -> first_name Varchar (15), 
    -> email Varchar(20) 
    -> ); 
Query OK, 0 rows affected (0.08 sec) 
mysql>

Nota: la consulta anterior diu D'acord, cosa que significa que la taula es va crear sense cap error. Per verificar la taula, executeu la consulta següent.

mysql> show tables; 
+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| minttec           | 
+-------------------+ 

1 row in set (0.00 sec) 

mysql>

Les coses van bé fins ara. Sí! Podeu veure les columnes que heu creat a la taula minttec com:

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

mysql>

No era res menys que una màgia. De totes maneres us explicaré els tipus de declaració i el seu significat.

  1. Int és enter
  2. Varchar és un caràcter que té una longitud variable tal com s'ha definit. El valor després de Tipus és la longitud del camp fins al qual pot emmagatzemar dades.

D'acord, ara hem d'afegir una columna que digui nom_cognom després de la columna nom_nom.

mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name; 
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

Ara, comproveu-ho a la vostra taula.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 

4 rows in set (0.00 sec) 

mysql>

Ara afegirem una columna a la dreta per dir una columna país a la dreta del correu electrònic.

mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0  Duplicates: 0  Warnings: 0 

mysql>

Verifiqueu la consulta d'inserció de la columna anterior.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
| country    | varchar(15) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

mysql>

Què passa amb la inserció de valors al camp?

mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' );
Query OK, 1 row affected (0.02 sec) 

mysql>

Què tal d'inserir més d'1 valor alhora a la taula anterior?

mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , '[email ' , 'India' ), ('3' , 'user' , 'singh' , '[email ' , 'Aus' ), ('4' , 'tecmint' , '[dot]com' , '[email ' , 'India' );
Query OK, 3 rows affected (0.05 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Verifiqueu la inserció anterior.

mysql> select * from minttec; 
+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+ 
|    1 | Ravi	    | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    3 | user       | singh     | [email       | Aus     | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+ 

4 rows in set (0.00 sec)

mysql>

Suposem que la tercera entrada de la sortida anterior no és vàlida i hem de suprimir la tercera entrada.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Comproveu l'operació anterior.

mysql> select * from minttec;

+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+
|    1 | Ravi       | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+
3 rows in set (0.00 sec)

L'identificador (=4) s'ha d'editar.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Verifiqueu la consulta anterior.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Nota: la consulta anterior, tal com s'ha realitzat, no és una bona idea. Canviarà l'identificador a 4 sempre que el primer nom sigui tecmint. Sempre és una bona idea utilitzar més d'una columna amb la clàusula where per obtenir un error mínim, com:

mysql> UPDATE minttec SET id = 6 WHERE first_name = 'tecmint'AND last_name = '[dot]com'; 
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Hem de deixar anar (suprimir) una columna que creiem que no té cap importància digues país aquí.

mysql> ALTER TABLE minttec drop country; 
Query OK, 3 rows affected (0.15 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>

Verifica la taula.

mysql> select * from minttec; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+
3 rows in set (0.00 sec) 

mysql>

No creieu que el nostre nom de taula minttec no és gaire rellevant. Què tal canviar-lo a tecmint_table.

mysql> RENAME TABLE minttec TO tecmint_table; 
Query OK, 0 rows affected (0.03 sec)

mysql>

Consulteu totes les taules de la base de dades actual.

mysql> show tables; 

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+
1 row in set (0.00 sec) 

mysql>

S'ha canviat el nom de la taula. Ara feu una còpia de seguretat de la base de dades MySQL anterior, en una única línia d'ordres sense cap eina sofisticada. Executeu el codi següent al vostre terminal i no a l'indicador de mysql.

# mysqldump -u root -p tecmint > tecmint.sql

check the dumped file on your desktop which would have contents something like
-- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (i686) --
-- Server version 5.5.31-0+wheezy1 -- 
Dump completed on 2013-09-02 12:55:37

Sempre és una bona idea mantenir una còpia de seguretat de les bases de dades MySQL. La restauració de les dades de MySQL amb còpia de seguretat és una altra vegada una línia de codi senzilla que necessiteu per executar-vos al indicador del vostre terminal i no al vostre indicador de mysql.

Però, espereu primer que suprimirem la base de dades per verificar si la nostra restauració és perfecta.

mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Comproveu la base de dades tecmint al vostre servidor de bases de dades.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| my_database        | 
| mysql              | 
| performance_schema | 
| phpmyadmin         | 
| sisso              | 
| test               | 
+--------------------+

7 rows in set (0.00 sec) 
mysql>

Genial! La base de dades s'ha perdut, però no ens hem de preocupar, estem tenint la còpia de seguretat.

Per restaurar la base de dades perduda, executeu l'ordre següent.

# mysql -u root -p tecmint < tecmint.sql
Enter password:
ERROR 1049 (42000): Unknown database 'tecmint'

UP! Un error, no hem creat la base de dades tecmint. Així que aneu al vostre indicador de mysql i creeu una base de dades tecmint.

mysql> create database tecmint; 
Query OK, 1 row affected (0.00 sec) 

mysql>

Ara és hora d'executar l'ordre de restauració a l'indicador de l'intèrpret d'ordres (estrictament).

# mysql -u root -p tecmint < tecmint.sql 
Enter password:

Verifiqueu la vostra base de dades.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
8 rows in set (0.00 sec)

Verificar el contingut de la base de dades.

mysql> show tables from tecmint;

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+ 
1 row in set (0.00 sec)

mysql>

Verifiqueu el contingut de la taula restaurada.

mysql> select * from tecmint_table; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+

3 rows in set (0.00 sec)

Definitivament, aquest no és el final, tractarem el concepte de clau primària, clau estrangera, múltiples taules i consultes en execució mitjançant un script PHP senzill a la següent part de l'article.

No oblidis explicar-nos com t'has sentit mentre passaves l'article. Els vostres comentaris són molt apreciats. Estigueu saludables i atents, mantingueu connectats a Tecmint.