1 - Introduction à SQL Le sigle SQL signifie "Structured Query Language", soit
1 - Introduction à SQL Le sigle SQL signifie "Structured Query Language", soit en français "Langage de recherche structuré". SQL est un langage de gestion des bases de données relationnelles. Dernière normalisation sql ansi en SQL99 (sql3) Malgré la normalisation ISO, l'implémentation du SQL par les différents éditeurs de SGBD comporte des différences plus ou moins importante concernant : Les détails de la syntaxe L’écriture des commandes Le fonctionnement exact des commandes L'implémentation de nouveaux types de données (images, animations, vidéos, liens hypertexte, champs binaire) C'est un langage complet, qui permet de créer des BDD, des tables, de saisir des données et de les corriger, de créer des vues, des index et des états (parfois baptisés "rapports", par francisation de l'anglais "reports") pour Access. Cas concret : 1 : Stocker des fiches élèves 2 : Stocker le profil des élèves (par ex: age formation caractère …) 3 : Stocker des notes 4 : Rechercher les élèves qui ont eu 20/20, malléable, 20 ans pour une nouvelle formation le langage SQL interroge des bases de données relationnelles, le modèle utilisé est un modèle client/serveur 1 Quelques noms : Oracle, Microsoft, Informix, Sybase, IBM MySQL, PostgresSQL, SAP Les bases contiennent des tables qui contiennent des champs de données. 2 : Mode d’emploi Se connecter à la base CONNECT user@database Traitement des requêtes Se déconnecter de la base DISCONNECT and EXIT 3 : Les requêtes catégories · DDL (Data Definition Language) · DML (Data Manipulation Language) · DQL (Data Query Language)0 · DCL (Data Control Language) · DAC (Data administration commands) · TCC (Transactional control commands) DDL · CREATE TABLE · ALTER TABLE · DROP TABLE · CREATE INDEX · ALTER INDEX · DROP INDEX · CREATE VIEW · DROP VIEW 2 DML · INSERT · UPDATE · DELETE DQL · SELECT DCL · ALTER PASSWORD · GRANT · REVOKE · CREATE SYNONYM DAC · START AUDIT · STOP AUDIT TCC · COMMIT Sauvegarde des transactions des bases de données · ROLLBACK Défaire les transactions de données · SAVEPOINT Création des points dans des groupes de transaction pour faire du ROLLBACK · SET TRANSACTION Nomme une transaction 3 Les types de champs (mysql) § Numérique · BIT[(M) M va de 1(défaut) à 64 (synonyme de TINYINT(1)) · TINYINT[(M)] [UNSIGNED] [ZEROFILL] (de -127 à 128 ou non signé de 0 à 255) · BOOL, BOOLEAN (zéro=faux synonyme de TINYINT(1)) · SMALLINT [(M)] [UNSIGNED] [ZEROFILL] (de 32767 à 32768 , non signé 0 à 65535) · MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] (de -8388608 à 8388607. Non signé de 0 à 16777215). · INT[(M)] [UNSIGNED] [ZEROFILL] (de -2147483648 à 2147483647, non signé 0 à 4294967295). · INTEGER[(M)] [UNSIGNED] [ZEROFILL] = INT · BIGINT[(M)] [UNSIGNED] [ZEROFILL] (de -9223372036854775808 à 9223372036854775807, non signé de 0 à 18446744073709551615).Attention aux opérations sur 64 bits · FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] (- 3.402823466E+38 à -1.175494351E-38 , 0 , 1.175494351E-38 à 3.402823466E+38) IEEE Std M est le nombre total de décimale et D le nombre de décimale après la virgule.Si M ou D ne sont pas spécifiés les limites sont celle du matériel. Si unsigned les valeurs négatives sont interdites. Attention les calculs internes sont en double précision · DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] (- 1.7976931348623157E+308 à -2.2250738585072014E-308, 0, 2.2250738585072014E-308 à 1.7976931348623157E+308) IEEE Std (idem M D et unsigned FLOAT) · DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], = DOUBLE · REAL[(M,D)] [UNSIGNED] [ZEROFILL] = DOUBLE o Attention à l’option REAL_AS_FLOAT ! · FLOAT(p) [UNSIGNED] [ZEROFILL] Un FLOAT. p représente la précision en bits, mais MySQL utilise seulement celle-ci pour déterminer le type FLOAT ou DOUBLE. Si p est entre 0 et 24, =FLOAT sans M ou D . Si p est entre 25 et 53 = DOUBLE sans M ou D . FLOAT(p) est nécessaire pour la compatibilité d’ODBC. · DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] o Suivant les versions de mysql § >V5.0.3 M,D M<=65 et 0<=D<3=0 · TINYINT = 1 octet SMALLINT = 2 octets MEDIUMINT = 3 octets 4 INTEGER = 4 octets BIGINT = 8 octets § Date DATE · Format 'YYYY-MM-DD' § Heure TIME · De '-838:59:59' à '838:59:59' · Format édition 'HH:MM:SS' § Date et heure DATETIME · Format ‘YYYY-MM-DD HH:MM:SS’ § Date TIMESTAMP[(M)] · Temps écoulé depuis le 1970-01-01 00:00:00 Si ce champ n’est pas rempli ou s’il est NULL alors il contiendra lors de l’enregistrement la valeur lors de l’écriture de la base Format édition YYYY-MM-DD HH:MM:SS § Année YEAR [(2|4)] · De 1901 à 2155 et 0000. · De 70 à 69 (soit 1970 à 2069) · Format édition YYYY § Chaîne de caractère · CHAR et VARCHAR Différence de stockage et de taille Char de 0 à 255 caractères VARCHAR dans MySQL 5.0 est déterminé par la taille des colonnes et le jeux de caractère utilise. Le maximum au total est de 65,532 octets. Le stockage dans la base est fixe avec du type CHAR et variable ( Longueur +1 ) avec du VARCHAR. · BINARY et VARBINARY Idem que ci-dessus mais on stocke des valeurs binaires et non ascii. Les tris sont donc différents. Ex si <MySQL 5.0.15 le séparateur était l’espace et après c’est 0x00. Ex : BINARY(3) : >MySQL5.0.15 la valeur ‘a ’donne ‘a \0’ quand inséré et ‘a\0 ‘ deviendra ‘a \0\0’.Les deux type de valeurs insérées ne change pas lors d’un SELECT <MySQL5.0.15 la valeur ‘a ’donne ‘a ’(deux espaces) quand inséré et ‘a‘ lors d’un SELECT. 'a\0' deviendra'a\0 ' lors de l’insertion et 'a\0' lors d’un SELECT. · BLOB et TEXT o TINYBLOB, BLOB, MEDIUMBLOB, et LONGBLOB o TINYTEXT, TEXT, MEDIUMTEXT, et LONGTEXT Même limite et même taille de stockage. La différence se situe dans les comparaisons Blob=binaire et Text :basé sur une table de caractère. Pas de valeur par défaut ! § Le type énumération ENUM · Maximum de 65536 éléments Si la valeur n’est pas reconnue comme étant connue, elle est quand même insérée avec la valeur index 0 5 § Le type ensemble SET · 64 valeurs maximum · A chaque valeur est associé un bit 6 Place occupée par les données Type de champs Place occupée en octet TINYINT 1 SMALLINT 2 MEDIUMINT 3 INT, INTEGER 4 BIGINT 8 FLOAT (p) 4 octets si 0 <= p <= 24, 8 octets si 25 <= p <= 53 FLOAT 4 DOUBLE [PRECISION], item REAL 8 DECIMAL(M,D), NUMERIC(M,D) Variable BIT(M) A peu près (M+7)/8 octets DATE 3 DATETIME 8 TIMESTAMP 4 TIME 3 YEAR 1 CHAR(M) 0 <= M <= 255 VARCHAR(M) L+1 octets, L <= M and 0 <= M <= 65535. Et 0 <= M <= 255 avant MySQL 5.0.3. BINARY(M) 0 <= M <= 255 VARBINARY(M) L+1 octets, et L <= M and 0 <= M <= 255 TINYBLOB, TINYTEXT L+1 octets , et L < 28 BLOB, TEXT L+2 octets, et L < 216 MEDIUMBLOB, MEDIUMTEXT L+3 octets, et L < 224 LONGBLOB, LONGTEXT L+4 octets, et L < 232 ENUM('value1','value2',...) 1 ou 2 octets (cela dépend, du nombre d’énumération) max 65535 SET('value1','value2',...) 1, 2, 4 ou 8 octets (cela dépend, de la longueur de chaque valeur ) max 64 7 Les fonctions et leur syntaxe Créer une table Pour créer une base de donnée CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] Create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name Le plus simple : CREATE DATABASE `essai` ; Et le plus compliqué avec un CHARACTER SET spécifique lié a Exercice (création d’une table à votre nom ) 1 : phonétique (type latin) 2 : idéogramme (japon par ex , 2 syllabaries: Hiragana et Katakana : codage sur plus d’un octet) 3 : ponctuation, caractère de contrôle, nombre, symbole 4 : sens de l’écriture Différent type de table de caractère cf annexe Lors de la création d’une base, on peut définir des contraintes d’intégrité encodé de la manière suivante par exemple sous Oracle : CREATE TABLE nom_table ( nom_col_1 type_1, nom_col_2 type_2, ... nom_col_n type_n CONSTRAINT [nom_contrainte_1] contrainte_1, CONSTRAINT [nom_contrainte_2] contrainte_2, ... CONSTRAINT [nom_contrainte_m] contrainte_m ); Ou bien CREATE TABLE nom_table ( nom_col_1 type_1 CONSTRAINT [nom_contrainte_1_1] contrainte_1_1 CONSTRAINT [nom_contrainte_1_2] contrainte_1_2 ... CONSTRAINT [nom_contrainte_1_m] contrainte_1_m, nom_col_2 type_2 CONSTRAINT [nom_contrainte_2_1] contrainte_2_1 CONSTRAINT [nom_contrainte_2_2] contrainte_2_2 ... CONSTRAINT [nom_contrainte_2_p] contrainte_2_p, ... nom_col_n type_n CONSTRAINT [nom_contrainte_n_1] contrainte_n_1 CONSTRAINT [nom_contrainte_n_2] contrainte_n_2 8 ... CONSTRAINT [nom_contrainte_n_q] contrainte_n_q ); Les contraintes différentes que l'on peut déclarer sont les suivantes : NOT NULL La colonne ne peut pas contenir de valeurs NULL. UNIQUE Chaque ligne de la table doit avoir une valeur différente ou NULL pour cette (ou ces) colonne. PRIMARY KEY Chaque ligne de la table doit avoir une valeur différente pour cette (ou ces) colonne. les valeurs NULL sont rejetées. FOREIGN KEY Cette colonne fait référence à une colonne clé d'une autre table. CHECK Permet de spécifier les valeurs acceptables pour une colonne. Mais sous mysql des différences apparaissent Par exemple avec le moteur de base de donnée « innodb » CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB; CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; CREATE TABLE product_order (no uploads/Finance/ cours-de-sql.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/Z1vsveyYIzRg2GAfAA9zBuIsR0RxY1iidyl6IqkVnVfa82FHXLL3oCzXltn8Xwzf7yCYoMMrXtWVKwcDrE1ao0LS.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/FJdp6NRD8Bry88KU1ieIHcv7w2BWZsvHDnw5mufJLpGevB1Noabuj8LW0bQZqr4VDxZUa3HaWN2RBwGhM05GdTSL.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/q0gwqDc5ms346SaTPqjZJOOKPXEJdnt0mfmz8edfeXynMv5auttrX9jHl2jLjek6TYikCOoD382uS2NNBEF72cCP.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/tJ0S8krlhApbFt9Kw1gEIoVhoaXtgTkUGVHCBLoDqfsgMbmHbOgKRqoKHkl7iWYuNJw2rLecXwX1VVIQXZWzu1Nz.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/JL8WO38Wgmi9IkP5vyWwcrNuOo4gSNstENvq45GUcbmRIjqOO75vLLaMjcQKB75JrBzMsGnrA3LnybI90SjQfAEt.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/nrzn14aH2eMXrj0bMbyd1h7BRyj4JCjSGOGCbqeeJDpDKZrUu0ZPxeYLGrk2YtMbSNa8mFVlL3hy1DBRgRNxFP4v.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/PW5ch9QYX8AMqqZXDbU1G73uXd5S97Ij6mYEdFadNQyBFeLY4Vqi1ZpOQ1KzRjrk7SJFvL4v0ka41xQVlkRy9b3y.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/zfcNhrk7cKhBzugFsNHRdEnv9Sd7AxLuWPPB8YMHhesJi5NUea6D6fLugy2xkxHe1WzDf4TC5ME5eRmnQI3FuoDe.png)
-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jul 06, 2022
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.6841MB