DUT SRC – IUT de Marne-la-Vallée 03/04/2012 INF240 – Bases de données Cours 3 L
DUT SRC – IUT de Marne-la-Vallée 03/04/2012 INF240 – Bases de données Cours 3 Le langage SQL Philippe Gambette • Cours de Tony Grandame à l'IUT de Marne-la-Vallée en 2010-2011 • Cours de Mathieu Mangeot, IUT de Savoie http://jibiki.univ-savoie.fr/~mangeot/Cours/BasesDeDonnees.pdf • Cours de Fabrice Meuzeret, IUT de Troyes http://195.83.128.55/~fmeuzeret/vrac/ • Livre de Laurent Audibert : Bases de données - de la modélisation au SQL Version partielle sur : http://laurent-audibert.developpez.com/Cours-BD/html/index.php Sources • Résumé des épisodes précédents • Introduction au langage SQL • Langage de définition des données • Langage de manipulation des données • SQL avancé : les jointures • SQL avancé : les groupements • SQL avancé : les transactions Plan du cours 3 – Le langage SQL • Résumé des épisodes précédents • Introduction au langage SQL • Langage de définition des données • Langage de manipulation des données • SQL avancé : les jointures • SQL avancé : les groupements • SQL avancé : les transactions Plan Modèle physique des données Modèle physique des données Modèle logique des données Modèle entité-association (modèle conceptuel des données) • Résumé des épisodes précédents • Introduction au langage SQL • Langage de définition des données • Langage de manipulation des données • SQL avancé : les jointures • SQL avancé : les groupements • SQL avancé : les transactions Plan SQL • Structured Query Language • Langage standardisé pour effectuer des opérations sur des bases de données. • LDD : langage de définition de données, pour gérer les structures de la base • LMD : langage de manipulation de données, pour interagir avec les données. Attention, certaines syntaxes ou fonctions sont propres au système de base de données utilisé. Introduction au langage SQL http://dev.mysql.com/doc/refman/5.0/fr/ SQL • Structured Query Language • Langage standardisé pour effectuer des opérations sur des bases de données. • LDD : langage de définition de données, pour gérer les structures de la base • LMD : langage de manipulation de données, pour interagir avec les données. Attention, certaines syntaxes ou fonctions sont propres au système de base de données utilisé. Alternative au langage SQL : clic-clic-poët-poët avec PhpMyAdmin Introduction au langage SQL http://dev.mysql.com/doc/refman/5.0/fr/ • Résumé des épisodes précédents • Introduction au langage SQL • Langage de définition des données • Langage de manipulation des données • SQL avancé : les jointures • SQL avancé : les groupements • SQL avancé : les transactions Plan Bases Une base regroupe toutes les données nécessaires pour un besoin fonctionnel précis : une application ↔ une base de données. Possible de créer autant de bases de données que nécessaires, interaction entre les bases de données possible, mais alourdit la syntaxe SQL. Création d'une base de données CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] Les spécifications permettent notamment de définir l'encodage de caractères de la base : CREATE DATABASE db_name DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; Langage de définition des données Bases Une base regroupe toutes les données nécessaires pour un besoin fonctionnel précis : une application ↔ une base de données. Possible de créer autant de bases de données que nécessaires, interaction entre les bases de données possible, mais alourdit la syntaxe SQL. Suppression d'une base de données DROP DATABASE [IF EXISTS] db_name Langage de définition des données Bases Une base regroupe toutes les données nécessaires pour un besoin fonctionnel précis : une application ↔ une base de données. Possible de créer autant de bases de données que nécessaires, interaction entre les bases de données possible, mais alourdit la syntaxe SQL. Modification d'une base de données ALTER DATABASE db_name alter_specification [, alter_specification] ... Langage de définition des données Tables Rappel : Une table correspond à une entité. Une base de données contient une ou plusieurs tables. Création d'une table : CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] • 1. create_definition représente la liste des champs avec leur type et leurs éventuelles options. • 2. table_option permet de préciser notamment le système d'encodage des caractères, et le moteur de la table (ENGINE). Langage de définition des données Tables Rappel : Une table correspond à une entité. Une base de données contient une ou plusieurs tables. Création d'une table : • 1. La liste des champs doit être précisée : col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [[PRIMARY] KEY] [reference_definition] Seuls le nom est le type sont obligatoires. Par défaut un champ est défini en NULL. Les champs sont séparés par des virgules. Langage de définition des données Tables Rappel : Une table correspond à une entité. Une base de données contient une ou plusieurs tables. Création d'une table : • 1. L'option AUTO_INCREMENT permet de confier la gestion du champ par le moteur de base de données. A chaque insertion dans la table, la valeur du champ sera automatiquement incrémentée. Cette option n'est possible que sur des champs de type entier. Le type SERIAL est un raccourci pour définir un champs UNSIGNED BIGINT AUTO_INCREMENT UNIQUE. Langage de définition des données Tables Rappel : Une table correspond à une entité. Une base de données contient une ou plusieurs tables. Création d'une table : • 2. Les options facultatives de la tables permettent de préciser (en outre) : • le moteur de la table : - MyIsam (par défaut) - InnoDb (gère les transactions) - Memory (chargée en mémoire) • Le système d'encodage de caractères, par défaut latin1_swedish_ci correspondant à ISO-8859. Langage de définition des données Tables Rappel : Une table correspond à une entité. Une base de données contient une ou plusieurs tables. Exemples de création d'une table CREATE TABLE IF NOT EXISTS Coord (Id int(11) NOT NULL auto_increment, Name varchar(255) collate latin1_general_ci NOT NULL, Type varchar(255) collate latin1_general_ci NOT NULL, Coord varchar(255) collate latin1_general_ci NOT NULL, Url varchar(255) collate latin1_general_ci NOT NULL, PRIMARY KEY (Id)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=201 ; Langage de définition des données Index Un index permet au moteur d'accéder rapidement à la donnée recherchée. Si vous recherchez un champ ayant une valeur donnée et qu'il n'y a pas d'index sur ce champ, le moteur devra parcourir toute la table. Index à utiliser avec parcimonie : pénalisent les temps d'insertion et de suppression des données dans la table. Une clé primaire est par définition un index unique sur un champ non nul. Un index peut être nul. CREATE TABLE IF NOT EXISTS Personne(Id int NOT NULL primary key auto_increment, Nom varchar(100) not null, Prenom varchar(100), Annee_naiss year default "1950") ENGINE=InnoDB Langage de définition des données Index Un index permet au moteur d'accéder rapidement à la donnée recherchée. Si vous recherchez un champ ayant une valeur donnée et qu'il n'y a pas d'index sur ce champ, le moteur devra parcourir toute la table. Index à utiliser avec parcimonie : pénalisent les temps d'insertion et de suppression des données dans la table. Une clé primaire est par définition un index unique sur un champ non nul. Un index peut être nul. CREATE TABLE IF NOT EXISTS Personne(Id int NOT NULL primary key auto_increment, Nom varchar(100) not null, Prenom varchar(100), Annee_naiss year default "1950") ENGINE=InnoDB CREATE TABLE IF NOT EXISTS Personne(Nom varchar(100) not null, Prenom varchar(100), Annee_naiss year default "1950", primary key (Nom, Prenom), index personne_anne (Annee_naiss)) ENGINE=InnoDB Langage de définition des données Modification d'une table CREATE TABLE tbl_name ADD [COLUMN] column_definition [FIRST | AFTER col_name ] | ADD INDEX [index_name] [index_type] (index_col_name,...) | ADD PRIMARY KEY [index_type] (index_col_name,...) | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | ALTER TABLE tbl_name | ADD FOREIGN KEY [index_name] (index_col_name,...) | CHANGE [COLUMN] old_col_name column_definition | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP INDEX index_name | DROP FOREIGN KEY fk_symbol Langage de définition des données Modification d'une table Renommage d'une table : RENAME TABLE nom_de_table TO nouveau_nom_de_table Suppression d'une table : DROP TABLE tbl_name Attention, cette action est irréversible, toutes les données contenues dans la table sont évidemment supprimées. Langage de définition des données • Résumé des épisodes précédents • Introduction au langage SQL • Langage de définition des données • Langage de manipulation des données • SQL avancé : les jointures • SQL avancé : les groupements • SQL avancé : les transactions Plan Les commandes principales sont : - INSERT pour ajouter les données - UPDATE pour modifier les données - DELETE pour supprimer les données - SELECT pour consulter les données Langage de manipulation des données Insérer des données dans une table : INSERT [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...) Le nombre de col_name doit correspondre au nombre d'expr. Le fait de préciser les champs est optionnel mais impose en cas de non indication de donner les expressions de chaque colonne dans l'ordre. Pour les champs ayant l'option AUTO_INCREMENT, il est possible : - soit de ne pas préciser le champ dans la liste, - soit de passer la valeur NULL. Le système se chargera d'attribuer automatiquement une valeur. Langage de manipulation des données - INSERT Modifier des données dans une table : UPDATE tbl_name SET col_name1=expr1 [,col_name2=expr2 …] [WHERE where_definition] [LIMIT row_count] Le SET permet d'attribuer une nouvelle valeur au champ. Il est possible de uploads/Finance/ courssql-id2191-pdf.pdf
Documents similaires
-
19
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 08, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.2848MB