Les bases de données

Du SQL ?!

Oui, encore un langage à apprendre, mais ce n'est pas comparable à du PHP, du HTML ou encore du CSS.

Bien qu'on puisse le faire, 99% du code SQL que vous serez amené à faire sera de demander que MySQL vous retourne des données ou bien qu'il en insère.

J'a installé un blog Wordpress dans une base de données nommée "cours_wp". Les articles sont stockés dans une table nommée "wp_posts".

Je souhaite :

  • me connecter à cette base de données
  • qu'on me décrive la table qui contient les articles
  • que le titre et la date des articles me soient retournés
  • insérer un nouvel article
  • et lister de nouveau les articles

La connexion et le choix de la base de données

$ mysql -uroot -proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1464
Server version: 5.5.39-1-log (Debian)

Copyright (c) 2000, 2014, 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> use cours_wp;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

Description des champs de la table

mysql> describe wp_posts;
+-----------------------+---------------------+------+-----+---------------------+----------------+
| Field                 | Type                | Null | Key | Default             | Extra          |
+-----------------------+---------------------+------+-----+---------------------+----------------+
| ID                    | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| post_author           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| post_date             | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_date_gmt         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content          | longtext            | NO   |     | NULL                |                |
| post_title            | text                | NO   |     | NULL                |                |
| post_excerpt          | text                | NO   |     | NULL                |                |
| post_status           | varchar(20)         | NO   |     | publish             |                |
| comment_status        | varchar(20)         | NO   |     | open                |                |
| ping_status           | varchar(20)         | NO   |     | open                |                |
| post_password         | varchar(20)         | NO   |     |                     |                |
| post_name             | varchar(200)        | NO   | MUL |                     |                |
| to_ping               | text                | NO   |     | NULL                |                |
| pinged                | text                | NO   |     | NULL                |                |
| post_modified         | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_modified_gmt     | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| post_content_filtered | longtext            | NO   |     | NULL                |                |
| post_parent           | bigint(20) unsigned | NO   | MUL | 0                   |                |
| guid                  | varchar(255)        | NO   |     |                     |                |
| menu_order            | int(11)             | NO   |     | 0                   |                |
| post_type             | varchar(20)         | NO   | MUL | post                |                |
| post_mime_type        | varchar(100)        | NO   |     |                     |                |
| comment_count         | bigint(20)          | NO   |     | 0                   |                |
+-----------------------+---------------------+------+-----+---------------------+----------------+
23 rows in set (0.00 sec)

Récupération des données

mysql> select post_title, post_date from wp_posts;
+------------------------------+---------------------+
| post_title                   | post_date           |
+------------------------------+---------------------+
| Bonjour tout le monde ! | 2014-10-13 18:59:55 |
| Page d’exemple         | 2014-10-13 18:59:55 |
+------------------------------+---------------------+
2 rows in set (0.00 sec)

L'insertion du nouvel article

mysql> insert into wp_posts(post_title, post_date) values('Mon article à moi :)', NOW());
Query OK, 1 row affected, 5 warnings (0.01 sec)

Récupération des données

mysql> select post_title, post_date from wp_posts;
+------------------------------+---------------------+
| post_title                   | post_date           |
+------------------------------+---------------------+
| Bonjour tout le monde ! | 2014-10-13 18:59:55 |
| Page d’exemple         | 2014-10-13 18:59:55 |
| Mon article à moi :)         | 2014-10-15 22:32:47 |
+------------------------------+---------------------+
3 rows in set (0.00 sec)

Je peux bien sur modifier ces informations :

mysql> select id, post_title, post_date from wp_posts;
+----+------------------------------+---------------------+
| id | post_title                   | post_date           |
+----+------------------------------+---------------------+
|  1 | Bonjour tout le monde ! | 2014-10-13 18:59:55 |
|  2 | Page d’exemple         | 2014-10-13 18:59:55 |
|  3 | Mon article à moi :)         | 2014-10-15 22:32:47 |
+----+------------------------------+---------------------+
3 rows in set (0.00 sec)

mysql> update wp_posts set post_title='Je vais devenir le maître du monde' where id=3;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select id, post_title, post_date from wp_posts;
+----+-------------------------------------+---------------------+
| id | post_title                          | post_date           |
+----+-------------------------------------+---------------------+
|  1 | Bonjour tout le monde !        | 2014-10-13 18:59:55 |
|  2 | Page d’exemple                | 2014-10-13 18:59:55 |
|  3 | Je vais devenir le maître du monde  | 2014-10-15 22:32:47 |
+----+-------------------------------------+---------------------+
3 rows in set (0.00 sec)