Files
mkdocs/docs/MySQL/tables.md
2021-09-15 11:43:35 +02:00

174 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tables:
### Voir les tables de la base courante:
`mysql [database]> SHOW TABLES;`
```mysql
MariaDB [wordpress]> SHOW TABLES;
+-----------------------+
| Tables_in_wordpress |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_usermeta |
| wp_users |
+-----------------------+
12 rows in set (0.003 sec)
```
### Structure dune table:
`mysql [database]> DESCRIBE table;`
```mysql
MariaDB [wordpress]> DESCRIBE wp_terms;
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| term_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(200) | NO | MUL | | |
| slug | varchar(200) | NO | MUL | | |
| term_group | bigint(10) | NO | | 0 | |
+------------+---------------------+------+-----+---------+----------------+
4 rows in set (0.006 sec)
```
### Renommer une table:
`mysql [database]> ALTER TABLE table AS new_table;`
```mysql
MariaDB [zenphoto]> ALTER TABLE _tags RENAME AS _new-tags;
```
### Créer une table:
`mysql [database]> CREATE TABLE table;`
```mariadb
MariaDB [mydatabase]> CREATE TABLE animal (nom VARCHAR(20), maitre VARCHAR(20), espece VARCHAR(20), sexe CHAR(1), naissance DATE, mort DATE);
Query OK, 0 rows affected (0.138 sec)
```
### Charger des données dans une table:
`mysql [database]> INSERT INTO table VALUES ('','');`
```mariadb
MariaDB [mydatabase]> INSERT INTO animal VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
Query OK, 1 row affected (0.012 sec)
```
`mysql [database]> LOAD DATA LOCAL INFILE "file.txt" INTO TABLE table;`
```mariadb
MariaDB [mydatabase]> LOAD DATA LOCAL INFILE "evenements.txt" INTO TABLE evenement;
Query OK, 11 rows affected, 3 warnings (0.017 sec)
Records: 11 Deleted: 0 Skipped: 0 Warnings: 3
```
Le fichier .txt doit être dans le dossier qui contient les tables:
```bash
/opt/homebrew/var/mysql/mydatabase master 13:26:16
ls -la
total 208
drwx------ 8 bruno admin 256 sep 6 13:26 .
drwxr-xr-x 18 bruno admin 576 sep 4 08:00 ..
-rw-rw---- 1 bruno admin 741 sep 4 09:17 animal.frm
-rw-rw---- 1 bruno admin 98304 sep 4 09:17 animal.ibd
-rw-rw---- 1 bruno admin 67 sep 4 08:00 db.opt
-rw-rw---- 1 bruno admin 1377 sep 6 11:18 evenement.frm
-rw-rw---- 1 bruno admin 98304 sep 6 11:18 evenement.ibd
-rw-r--r-- 1 bruno admin 529 sep 6 13:26 evenements.txt
```
### Vérification des tables :
<u>2 solutions:</u>
**1) CHECK TABLE table;**
```mysql
MariaDB [wordpress]> CHECK TABLE wp_terms;
+--------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+-------+----------+----------+
| wordpress.wp_terms | check | status | OK |
+--------------------+-------+----------+----------+
1 row in set (0.008 sec)
```
**2) [mysqlcheck](https://mariadb.com/kb/en/library/mysqlcheck/)**
mysqlcheck verrouille chaque table en lecture seule (la base est alors inaccessible pour les autres processus pendant ce temps) pour vérification ou réparation.
```bash
mysqlcheck -u root -ppassword wordpress
wordpress.wp_commentmeta OK
wordpress.wp_comments OK
wordpress.wp_links OK
wordpress.wp_options OK
wordpress.wp_postmeta OK
wordpress.wp_posts OK
wordpress.wp_term_relationships OK
wordpress.wp_term_taxonomy OK
wordpress.wp_termmeta OK
wordpress.wp_terms OK
wordpress.wp_usermeta OK
wordpress.wp_users OK
```
### Optimiser:
Les bases InnoDB ne supportent pas loption OPTIMIZE.
A la place,MySQL crée une nouvelle table, y copie toutes les lignes, efface lancienne table, renomme la nouvelle et lance ANALYSE
```bash
mysqlcheck -u root -psncfp1p2 -o --all-databases
mysql.column_stats Table is already up to date
mysql.columns_priv Table is already up to date
mysql.db OK
mysql.event Table is already up to date
...
wordpress.wp_commentmeta
note : Table does not support optimize, doing recreate + analyze instead
status : OK
wordpress.wp_comments
note : Table does not support optimize, doing recreate + analyze instead
status : OK
wordpress.wp_links
note : Table does not support optimize, doing recreate + analyze instead
status : OK
```