MySQL - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

MySQL

Description:

MySQL (``Maille Ess Ku Ell'' ) est un langage rapide, multi-threaded, ... en ajoutant une commande DELETE ad quate lors de l'effacement d'un enregistrement d'une ... – PowerPoint PPT presentation

Number of Views:222
Avg rating:3.0/5.0
Slides: 31
Provided by: gay12
Category:
Tags: mysql | ajoutant

less

Transcript and Presenter's Notes

Title: MySQL


1
MySQL
2
MySQL
  • MySQL (Maille Ess Ku Ell'' ) est un langage
    rapide, multi-threaded, multi-utilisateur, c'est
    aussi un serveur de base de données SQL robuste
    (Structured Query Language).
  • http//www.mysql.com/
  • Documentation sur MySQL
  • sur le serveur Tux
  • http//www.mysql.com/documentation/
  • http//dev.nexen.net/docs/mysql/

3
Qu'est ce que MySQL?
  • Véritable serveur de base de données SQL
    multi-utilisateur et multi-threaded.
  • SQL est le plus populaire langage de base de
    données dans le monde.
  • configuration client/serveur ce qui consiste en
    un serveur démon mysqld, différents programmes
    clients et des librairies.
  • SQL est un langage standardisé qui rend facile le
    stockage, la mise à jour et l'accès à
    l'information.

4
Connection au serveur
  • shellgt mysql -h host_name -u user_name
    -pyour_pass
  • Ex mysql -h localhost -u joe -ptoto
  • Par défaut, mysql utilise les valeurs suivantes
  • Le nom d'hôte par défaut est localhost, c'est à
    dire la machine locale.
  • Le nom d'utilisateur par défaut est le nom de
    login Unix.
  • Aucun mot de passe n'est envoyé si -p n'est pas
    précisé.
  • Pour avoir la liste des options disponibles sur
    mysql
  • shellgt mysql --help

5
(De)connection au serveur
  • shellgt mysql -h localhost -u user -p
  • Enter password
  • mysqlgt
  • mysqlgt SELECT VERSION(), CURRENT_DATE
  • ----------------------------
  • version() CURRENT_DATE
  • ----------------------------
  • 3.22.20a-log 1999-03-19
  • ----------------------------
  • 1 row in set (0.01 sec)
  • mysqlgt USE menagerie
  • Database changed .
  • mysqlgt QUIT
  • Bye
  • mysqlgt USE menagerie
  • Database changed
  • Vous pouvez aussi vous déconnecter en tapant les
    touches CTRL-D.

6
mysql en mode batch
  • mettre les commandes que vous souhaitez exécuter
    dans un fichier.
  •  shellgt mysql lt batch-file ou shellgt mysql -h
    host -u user -p lt batch-file
  • Enter password .
  • Pourquoi utiliser un script ? - requête utilisée
    de manière régulière (par exemple, tous les
    jours, toutes les semaines), - nouvelles
    requêtes générées à partir d'autres requêtes déjà
    existantes, en utilisant le copier/coller. - A
    chaque erreur, vous n'avez pas tout à retaper,
    mais juste la commande erronée.

7
mysql en mode batch
  • Si une requête génère beaucoup d'informations,
    vous pouvez les voir avec un outil adapté, plutôt
    que de les regarder simplement défiler sur
    l'écran.
  •  shellgt mysql lt batch-file more
  • Vous pouvez enregistrer les résultats dans un
    fichier pour les retraiter ailleurs
  •  shellgt mysql lt batch-file gt mysql.out

8
Droits sous MySQL
  • Les droits select, insert, update et delete
    permettent d'exécuter des opérations sur les
    lignes dans les tables existantes d'une base. Le
    droit alter vous permet d'utiliser la commande
    ALTER TABLE.
  • Les droits create et drop vous permet de créer et
    détruire de nouvelles tables et bases.
  • Le droit grant vous permet de donner des droits
    que vous possédez à un autre utilisateur.mysqlgt
    GRANT ALL PRIVILEGES ON . TO monty_at_localhost
    IDENTIFIED BY 'quelquechose' mysqlgt GRANT
    SELECT,INSERT,UPDATE,DELETE,CREATE, DROP ON
    bank. TO custom_at_localhost IDENTIFIED BY toto'

9
Programmation MySQL
10
Chaîne entiers
  • Une chaîne est une séquence de caractères,
    entourée par des guillemets simples ('') ou
    doubles(""). Par exemple  'une chaîne, "une
    autre chaîne" Les séquences spéciales commencent
    avec le caractère backslash (\'), caractère
    d'échappement. \0 ASCII 0 (NUL). \n Une
    nouvelle ligne. \t Une tabulation. \r Un
    retour chariot. \b Un effacement. \' Un
    guillemet simple \" Un guillemet double \\
    Un backslash
  • Les entiers sont représentés comme une séquence
    de chiffres. Les nombres réel utilise le point
    (.) comme séparateur décimal. Les entiers et les
    réels peuvent être précédés par le signe moins
    (-'), pour indiquer un nombre négatif.'

11
Types de colonnes
  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • INTEGER
  • BIGINT
  • FLOAT(4)
  • FLOAT(8)
  • FLOAT
  • DOUBLE
  • DOUBLE PRECISION
  • REAL
  • DECIMAL(M,D)
  • NUMERIC(M,D)
  • DATETIME
  • DATE
  • TIMESTAMP
  • TIME
  • YEAR
  • CHAR(M)
  • VARCHAR(M)
  • TINYBLOB, TINYTEXT
  • BLOB, TEXT
  • MEDIUMBLOB, MEDIUMTEXT
  • LONGBLOB, LONGTEXT
  • ENUM('value1','value2',...)
  • SET('value1','value2',...)

12
Index de colonne
  • Tous les types de colonnes peuvent être indexés,
    à l'exception des types BLOB et TEXT.
    L'utilisation d'index est le meilleur moyen
    d'accélérer les performances des clauses SELECT.
  • Une table peut avoir jusqu'à 16 index.
  • une colonne indexée doit être déclarée NOT NULL.
  • L'exemple suivant créer un index pour les 10
    premiers caractères de la colonne Nom_col.
    mysqlgt CREATE TABLE test (nom CHAR(200) NOT
    NULL, KEY Nom_index(nom(10)))

13
Index multi-colonnes
  • MySQL peut créer des indexes sur plusieurs
    colonnes en même temps.
  • MySQL gère les index sur plusieurs colonnes de
    manière à ce que les requêtes qui recherche une
    valeur connue dans la première colonne (avec une
    clause WHERE), soient rapides, même si les
    valeurs pour les autres colonnes ne sont pas
    précisées.
  • Exemple mysqlgt CREATE TABLE test (id INT NOT
    NULL, nom CHAR(30) NOT NULL, prenom CHAR(30) NOT
    NULL, PRIMARY KEY (id), INDEX
    nom_complet (nom, prenom))

14
CREATE DATABASE
  • CREATE DATABASE nom_bdd
  • Crée une base de donnée avec le nom Nom_bdd.
    MySQL retourne une erreur si la base de données
    existe déjà. Avec MySQL, les bases sont
    représentées sous la forme de dossiers qui
    contiendront des fichiers, qui représenteront les
    tables. Etant donné qu'à la création d'une base,
    cette dernière est vide, CREATE DATABASE se
    contente de créer un dossier dans le dossier
    données de MySQL. Il est aussi possible de créer
    des bases avec la méthode mysqladmin.

15
DROP DATABASE
  • DROP DATABASE IF EXISTS Nom_bdd
  • DROP DATABASE efface toutes les tables de la base
    , et efface aussi la base, i.e. le dossier. Il
    faut être TRES prudent avec cette commande.
  • DROP DATABASE retourne le nombre de fichiers qui
    ont été effacés. Normalement, ce nombre
    correspond à trois fois le nombre de table, étant
    donné que chaque table a trois fichiers, un
    fichier .ISD',' un fichier .ISM'' et un
    fichier .frm''.

16
CREATE TABLE
  • CREATE TEMPORARY TABLE IF NOT EXISTS
    Nom_table(Nom_col type NOT NULL NULL
    DEFAULT valeur_par_defaut AUTO_INCREMENT
    PRIMARY KEY reference_definition ou
    PRIMARY KEY (index_Nom_col,...) ou KEY
    Nom_index KEY(index_Nom_col,...) ou INDEX
    Nom_index (index_Nom_col,...) ou UNIQUE
    INDEX Nom_index (index_Nom_col,...) ou
    CONSTRAINT symbole FOREIGN KEY nom_index
    (index_Nom_col,...) reference_definition ou
    CHECK (expression ) )

17
ALTER TABLE
  • ALTER IGNORE TABLE Nom_table alter_spec ,
    alter_spec ...
  • alter_specification ADD COLUMN
    create_definition FIRST AFTER column_name
    ou ADD INDEX Nom_index (index_Nom_col,...)
    ou ADD PRIMARY KEY (index_Nom_col,...) ou
    ADD UNIQUE Nom_index (index_Nom_col,...) ou
    ALTER COLUMN Nom_col SET DEFAULT literal
    DROP DEFAULT ou CHANGE COLUMN old_Nom_col
    create_definition ou MODIFY COLUMN
    create_definition ou DROP COLUMN Nom_col
    ou DROP PRIMARY KEY ou DROP INDEX key_name
    ou RENAME AS new_Nom_table ou
    table_option
  • ALTER TABLE modifie la structure d'une table
    existante. Par exemple, il est possible d'ajouter
    ou d'effacer des colonnes, de créer et détruire
    des index, de changer le type d'une colonne ou de
    la renommer, voire même de renommer la table
    elle-même.

18
DROP TABLE / DELETE
  • DROP TABLE IF EXISTS Nom_table ,
    Nom_table,...
  • DROP TABLE efface une ou plusieurs tables. Toutes
    les données et le fichier de définition sont
    effacés. Cette commande est irréversible
  •  DELETE FROM Nom_table WHERE where_definition
    LIMIT rows
  • DELETE efface les lignes de la table Nom_table
    qui satisfont les conditions données par
    where_definition, et retourne le nombre de ligne
    effacées

19
SELECT
  • SELECT DISTINCT DISTINCTROW ALL
    select_expression,... FROM table_references
    WHERE where_definition GROUP BY
    Nom_col,... HAVING where_definition
    ORDER BY unsigned_integer Nom_col
    formula ASC DESC ,...
  • SELECT est utilisé pour obtenir des lignes à
    partir d'une ou plusieurs tables.
    select_expression indique les colonnes à lire.

20
INSERT
  • INSERT LOW_PRIORITY DELAYED IGNORE
    INTO Nom_table (Nom_col,...) VALUES
    (expression,...),(...),...
  • INSERT insère une nouvelle ligne dans une table
    existante

21
UPDATE
  • UPDATE nom_table SET nom_colonne1expr1,nom_colonn
    e2expr2,... WHERE where_definition
  • UPDATE met à jour une ligne existante dans une
    table. La clause SET indique quelles colonnes
    modifier, et quelles valeurs mettre dans ces
    colonnes. La conditions WHERE permet de choisir
    quelles lignes sont à mettre à jour. Sinon,
    toutes les lignes sont mises à jour

22
USE
  • USE Nom_bdd
  • La commande USE Nom_bdd statement indique à MySQL
    le nom de la base de données par défaut pour les
    requête suivantes. Cette base restera courante
    jusqu'à la fin de la session, ou jusqu'à la
    prochaine utilisation de la commande USE.

23
SHOW (Informations,...)
  • SHOW DATABASES ou SHOW TABLES FROM Nom_bdd ou
    SHOW COLUMNS FROM Nom_table FROM Nom_bdd ou
    SHOW INDEX FROM Nom_table FROM Nom_bdd ou SHOW
    STATUS ou SHOW VARIABLES ou SHOW PROCESSLISTou
    SHOW TABLE STATUS FROM Nom_bdd
  • SHOW fourni les caractéristiques des bases de
    données, tables et colonnes sur le serveur.
  • La commande DESCRIBE fournit les mêmes
    informations que SHOW COLUMNS.

24
LOCK/UNLOCK TABLES
  • LOCK TABLES Nom_table AS alias READ
    LOW_PRIORITY WRITE , Nom_table READ
    LOW_PRIORITY WRITE ......
  • UNLOCK TABLES
  • LOCK TABLES verrouille une table dans le thread
    courant. UNLOCK TABLES ouvre tous les verrous
    posé par le thread courant.

25
GRANT et REVOKE
  • GRANT priv_type (column_list) , priv_type
    (column_list) ... ON Nom_table .
    Nom_bdd. TO user_name IDENTIFIED BY
    'password' , user_name IDENTIFIED BY
    'password' ... WITH GRANT OPTION
  • REVOKE priv_type (column_list) , priv_type
    (column_list) ... ON Nom_table .
    Nom_bdd. FROM user_name , user_name ...

26
CREATE/DROP INDEX
  • CREATE UNIQUE INDEX Nom_indexON Nom_table
    (Nom_col(longueur),... )
  • CREATE INDEX est un raccourci de ALTER TABLE qui
    crée des index.
  • Généralement, il est possible de créer des tous
    les index d'une table au moment de la création de
    la table, avec CREATE TABLE. CREATE INDEX
    permettra alors d'ajouter de nouveaux index.
  • DROP INDEX Nom_index
  • DROP INDEX est un raccourci de ALTER TABLE qui
    efface des index.

27
Fonctionalités manquantes
  • Les SELECT imbriqués ne fonctionnent pas encore
    sous MySQL SELECT FROM table1 WHERE id IN
    (SELECT id FROM table2)SELECT FROM table1
    WHERE id NOT IN (SELECT id FROM table2)
    Cependant, il est souvent possible de se passer
    d'une sous sélection  SELECT table1. FROM
    table1,table2 WHERE table1.idtable2.idSELECT
    table1. FROM table1 LEFT JOIN table2 ON
    table1.idtable2.id where table2.id IS NULL Pour
    les sous requêtes compliquées, vous pouvez
    toujours créer une table temporaire, et y
    appliquer votre requête.

28
Fonctionalités manquantes
  • MySQL ne supporte pas encore SELECT ... INTO
    TABLE .... A la place, MySQL supporte la syntaxe
    de la norme ANSI SQL INSERT INTO ... SELECT
    ...ce qui est pratiquement la même chose.
    Alternativement, vous pouvez utiliserSELECT
    INTO OUTFILE... ou CREATE TABLE ... SELECT pour
    résoudre votre problème.

29
Fonctionalités manquantes
  • Transactions Le serveur va bientôt accepter des
    opérations atomiques, ce qui permettra des
    transactions, mais sans le rollback.
  • Actuellement, vous pouvez empêcher les autres
    threads d'interférer en utilisant les fonctions
    LOCK TABLES et UNLOCK TABLES. LOCK TABLES.

30
Fonctionalités manquantes
  • La syntaxe FOREIGN KEY de MySQL n'a aucun effet.
    Avec MySQL, vous pouvez contourner le problème
    sans la clause ON DELETE ... en ajoutant une
    commande DELETE adéquate lors de l'effacement
    d'un enregistrement d'une table qui a une clé
    externe. En pratique, c'est aussi rapide (voire
    plus), et beaucoup plus portable que les clés
    externes.
  • MySQL ne supporte pas les vues, mais c'est sur la
    liste des fonctionnalités futures.
Write a Comment
User Comments (0)
About PowerShow.com