Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SQL et MySQL

946 views

Published on

Présentation de SQL de MYSQL

Published in: Engineering
  • Be the first to comment

SQL et MySQL

  1. 1. Jean-Marie Renouard LightPath 2014© LightPath 2014© - http://www.jmrenouard.fr 1
  2. 2. Le logo PHP est du domaine public http://commons.wikimedia.org/wiki/File:PHP-logo.svg Ce document est licencié sous licence ◦Attribution-NonCommercial-ShareAlike ◦CC BY-NC-SA Plus de détails: http://creativecommons.org/licenses/by-nc-sa/3.0/fr/ LightPath 2014© - http://www.jmrenouard.fr 2
  3. 3. Langage d'interrogation de données. Langage de manipulation de données. Les types de données. Création de tables. Opérateurs, fonctions et conversions. Les différents types d'index. LightPath 2014© - http://www.jmrenouard.fr 3
  4. 4. LightPath 2014© - http://www.jmrenouard.fr 4
  5. 5. SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY] select_expression STRAIGHT_JOIN : Jointure ordonnée de colonne. SQL_SMALL_RESULT : Indication de résultats peu nombreux. SQL_BIG_RESULT : Indication de résultats très nombreux. SQL_BUFFER_RESULT : Stockage en table temporaire. SQL_CACHE | SQL_NO_CACHE : Stockage en cache.  SQL_CALC_FOUND_ROWS: Activation du comptage de tuples. HIGH_PRIORITY : Priorité augmentée à l'exécution. LightPath 2014© - http://www.jmrenouard.fr 5
  6. 6.  [INTO {OUTFILE | DUMPFILE} 'nom_fichier' export_options]  [FROM table_references  [WHERE where_definition]  [GROUP BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC], ...  [HAVING where_definition]  [ORDER BY {unsigned_integer | nom_de_colonne | formula} [ASC | DESC] ,...]  [LIMIT [offset,] lignes]  [PROCEDURE procedure_name(argument_list)]  [FOR UPDATE | LOCK IN SHARE MODE]] FOR UPDATE et LOCK IN SHARE MODE ◦Options de verrouillage des lignes. LightPath 2014© - http://www.jmrenouard.fr 6
  7. 7. Requête simple ◦select * from user; Fusion tuple à tuple ◦select * db, user; Jointure ◦select u.user , db.db from user u, db db where a.user=db.user group by user; LightPath 2014© - http://www.jmrenouard.fr 7
  8. 8. Agrégation ◦select a, count(b.db) ◦from user a, db b ◦where a.user=b.user ◦group by a.user;  Requêtes imbriquées ◦select tu.user ◦from user tu ◦where NOT EXISTS ( ◦ select * from db td where td.user=tu.user ◦) ; LightPath 2014© - http://www.jmrenouard.fr 8
  9. 9. LightPath 2014© - http://www.jmrenouard.fr 9
  10. 10. INSERT [LOW_PRIORITY | DELAYED] [IGNORE]  [INTO] tbl_name [(col_name,...)]  VALUES ({expr | DEFAULT},...),(...),...  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] INSERT [LOW_PRIORITY | DELAYED] [IGNORE]  [INTO] tbl_name  SET col_name={expr | DEFAULT}, ...  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] INSERT [LOW_PRIORITY | DELAYED] [IGNORE]  [INTO] tbl_name [(col_name,...)] SELECT ... LightPath 2014© - http://www.jmrenouard.fr 10
  11. 11. Insertion simple ◦INSERT INTO USER VALUES (1, « Paul », « DUPONT »); Insert-Affectation ◦INSERT INTO USER SET USER=‘JEAN’; Insertion par requête ◦INSERT INTO TABLE SELECT * FROM TMP_USER; LightPath 2014© - http://www.jmrenouard.fr 11
  12. 12. LightPath 2014© - http://www.jmrenouard.fr 12
  13. 13. TINYINT[(M)] [UNSIGNED] [ZEROFILL] : Entier (1 octet ). BIT/BOOL/ BOOLEAN : Alias de TinyInt. SMALLINT[(M)] [UNSIGNED] [ZEROFILL] : Entier ( 2 octets ) MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] : Entier ( 3 octets ). INT[(M)] [UNSIGNED] [ZEROFILL] : Entier ( 4 octets ). INTEGER[(M)] [UNSIGNED] [ZEROFILL] : Alias de INT. BIGINT[(M)] [UNSIGNED] [ZEROFILL] : Entier ( noctets ). FLOAT(precision) [UNSIGNED] [ZEROFILL]: Nombre à virgule flottante. FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] : Nombre à virgule flottante. LightPath 2014© - http://www.jmrenouard.fr 13
  14. 14. DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] ◦Nombre à virgule flottante double p. DOUBLE PRECISION[(M,D)] ◦Nombre flottant double précision. REAL[(M,D)] [UNSIGNED] [ZEROFILL] : Alias de DOUBLE DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] ◦Nombre à virgule :littéral DEC[(M[,D])] [UNSIGNED] [ZEROFILL] : Alias de DECIMAL NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]: Alias de DECIMAL FIXED[(M[,D])] [UNSIGNED] [ZEROFILL] : Alias de DECIMAL LightPath 2014© - http://www.jmrenouard.fr 14
  15. 15.  DATE: Date sur l'intervalle de '1000-01-01' à '9999- 12-31' .  DATETIME : Combinaison de date et heure. TIMESTAMP[(M)] : Timestamp.  TIME: Heure sur l'intervalle de +/-838:59:59. YEAR[(2|4)] : Année au format 2 ou 4 chiffres. LightPath 2014© - http://www.jmrenouard.fr 15
  16. 16. [NATIONAL] CHAR/CHARACTER(M) [BINARY | ASCII | UNICODE]: ◦Une chaîne de caractère de taille fixe (255 caractères) [NATIONAL] VARCHAR(M) [BINARY] ◦Une chaîne de taille dynamique. CHAR : Alias de CHAR(1) . VARCHAR: Alias de CHARACTER VARYING . LightPath 2014© - http://www.jmrenouard.fr 16
  17. 17. TINYBLOB/TINYTEXT ◦Données de 2^8 octets. BLOB/TEXT ◦Données de 2^16 octets. MEDIUMBLOB/MEDIUMTEXT ◦Données de 2^24 octets. LONGBLOBLONGTEXT ◦Données de 2^32 octets. ENUM('value1','value2',...) ◦Une énumération de 65535 valeurs distinctes. SET('value1','value2',...) ◦Un ensemble de 64 membres maximum. LightPath 2014© - http://www.jmrenouard.fr 17
  18. 18. LightPath 2014© - http://www.jmrenouard.fr 18
  19. 19. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; LightPath 2014© - http://www.jmrenouard.fr 19
  20. 20. Requête SQL CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_statement] CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)]; CREATE TABLE t ( c1 CHAR(20) CHARACTER SET utf8, c2 CHAR(20) CHARACTER SET latin1 COLLATE latin1_bin ); LightPath 2014© - http://www.jmrenouard.fr 20
  21. 21. column_definition col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'string'] [reference_definition] reference_option RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT LightPath 2014© - http://www.jmrenouard.fr 21
  22. 22. create_definition: column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | KEY [index_name] [index_type] (index_col_name,...) | INDEX [index_name] [index_type] (index_col_name,...) | [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_type] (index_col_name,...) | [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) [reference_definition] | CHECK (expr) LightPath 2014© - http://www.jmrenouard.fr 22
  23. 23. index_col_name: col_name [(length)] [ASC | DESC] reference_definition: REFERENCES tbl_name [(index_col_name,...)] [MATCH FULL | MATCH PARTIAL] [ON DELETE reference_option] [ON UPDATE reference_option] LightPath 2014© - http://www.jmrenouard.fr 23
  24. 24. table_option {ENGINE|TYPE} = {BDB|HEAP|ISAM|InnoDB|MERGE|MRG_MYISAM|MYISAM} | AUTO_INCREMENT = value | AVG_ROW_LENGTH = value | CHECKSUM = {0 | 1} | COMMENT = 'string' | MAX_ROWS = value | MIN_ROWS = value | PACK_KEYS = {0 | 1 | DEFAULT} | PASSWORD = 'string' | DELAY_KEY_WRITE = {0 | 1} | ROW_FORMAT = { DEFAULT | DYNAMIC | FIXED | COMPRESSED } | RAID_TYPE = { 1 | STRIPED | RAID0 } RAID_CHUNKS = value RAID_CHUNKSIZE = value | UNION = (tbl_name[,tbl_name]...) | INSERT_METHOD = { NO | FIRST | LAST } | DATA DIRECTORY = 'absolute path' | INDEX DIRECTORY = 'absolute path' | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] LightPath 2014© - http://www.jmrenouard.fr 24
  25. 25. LightPath 2014© - http://www.jmrenouard.fr 25
  26. 26. Opérateurs logiques AND, OR, NOT IN, BETWWEN Opérateurs de comparaison  <, >, <=, >=, =, !=, <> Opérateurs mathématiques  +,-,*,/, %,^, ||/, |/, !, @, &, |, ~, >>, << Les opérateurs LightPath 2014© - http://www.jmrenouard.fr 26
  27. 27. LightPath 2014© - http://www.jmrenouard.fr 27
  28. 28. ABS(X) : Valeur absolue de X . ACOS(X) : Arccosinus de X. ASIN(X) : Arcsinus de X. ATAN(X) : Arctangente de X. ATAN(Y,X) : Arctangente (Y,X) ATAN2(Y,X) : Arctangente des variables de Y / X CEILING(X)/CEIL(X) : Valeur entière supérieure de X . COS(X) : Cosinus de X , où X est donné en radian. COT(X) : Cotangente de X . Fonctions mathématiques LightPath 2014© - http://www.jmrenouard.fr 28
  29. 29. CRC32(expr) : Somme de contrôle - entier 32 bits non-signé. DEGREES(X) :Conversion de radian en degré. EXP(X) : Exponentiel x : e^x FLOOR(X) : Valeur entière inférieure de X . LN(X) : Logarithme naturel de X (népérien). LOG(X)/LOG(B,X) : Logarithme de X en base B sinon LN(X) . LOG2(X) : Logarithme en base 2 de X . LOG10(X) : Logarithme en base 10 de X . MOD(N,M) : Reste de la division de N par M . Fonctions mathématiques LightPath 2014© - http://www.jmrenouard.fr 29
  30. 30. PI() : Valeur de Pi. POW(X,Y)/POWER(X,Y) : Valeur de X élevée à la puissance Y. RADIANS(X) : Conversion de degré en radian. RAND()/RAND(N) : Nombre aléatoire à virgule flottante. ROUND(X)/ROUND(X,D) : Arrondi à un nombre à D décimales. SIGN(X) : Signe de l'argument sous la forme -1 , 0 , ou 1. SIN(X) : Sinus de X , où X est donnée en radian. SQRT(X) : Racine carrée de X. TAN(X) : Tangente de X en radian. TRUNCATE(X,D) : Troncature à D décimales. Fonctions mathématiques LightPath 2014© - http://www.jmrenouard.fr 30
  31. 31. LightPath 2014© - http://www.jmrenouard.fr 31
  32. 32. ASCII(str) : Code ASCII du premier caractère de la chaîne. BIN(N) : Chaîne représentant la valeur binaire de N BIT_LENGTH(str) : Nombre de bits de la chaîne de caractères str . CHAR(N,...) : Chaîne identifiée par leur code ASCII. CHAR_LENGTH(str) : Nombre de caractères de la chaîne str CHARACTER_LENGTH(str): Alias de CHAR_LENGTH. COMPRESS(string_to_compress) : Compression de la chaîne. CONCAT(str1,str2,...) : Concaténation des arguments. CONCAT_WS(separator, str1, str2,...) : Idem avec un séparateur. Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 32
  33. 33. CONV(N,from_base,to_base) : Conversion de N entre différentes bases. ELT(N,str1,str2,str3,...) : Élement N+1 de la liste d'argument EXPORT_SET(bits,on,off,[séparateur,[nombre_de_bits]]) : Conversion de bits en chaîne. FIELD(str,str1,str2,str3,...) : Index de la chaîne str dans les arguments. FIND_IN_SET(str,strlist) : Index de la chaîne la liste strlist H.EX(N_or_S) : Conversion chaîne/héxadécimal. INSERT(str,pos,len,newstr) : Chaîne de caractères avec newstr insérée. INSTR(str,substr) : Index de la première occurrence de la chaîne. Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 33
  34. 34. LCASE(str) : Alias de Lower() LEFT(str,len) : len premiers caractères LENGTH(str) : Taille de la chaîne str , mesurée en octets. LOAD_FILE(file_name) : Contenu sous la forme d'une chaîne de caractères. LOCATE(substr,str)/LOCATE(substr,str,pos) : Position de la première occurrence. LOWER(str) : Chaîne str avec tous les caractères en minuscules LPAD(str,len,padstr) : Chaîne de caractères str , complétée à gauche. LTRIM(str) : Chaîne de caractères str sans les espaces initiaux. MAKE_SET(bits,str1,str2,..) : Découpage de la chaîne en liste. Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 34
  35. 35. MID(str,pos,len) : Alias de SUBSTRING(str,pos,len) . OCT(N) : Chaîne de caractère représentant la valeur octal. OCTET_LENGTH(str) : Alias de OCTET_LENGTH() ORD(str) : Code du premier caractère de la chaîne str. POSITION(substr IN str) : Alias de LOCATE(substr,str) . QUOTE(str) : Échappement les caractères spéciaux d'une chaîne. REPEAT(str,count) : Répetition de la chaîne. REPLACE(str,from_str,to_str) : Substitution de chaîne. REVERSE(str) : Chaîne inverse de la chaîne str. Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 35
  36. 36. RIGHT(str,len) : len derniers caractères de la chaîne str. RPAD(str,len,padstr) : Complétion droite de la chaîne str. RTRIM(str) : Chaîne de caractères str sans les espaces finaux. SOUNDEX(str) : Valeur soundex de la chaîne. SPACE(N) : Chaîne de N espaces. SUBSTRING(str,pos) : Sous-chaîne. SUBSTRING(str FROM pos) : Alias de SUBSTRING(str, pos). SUBSTRING(str,pos,len) : Idem avec une longueur définie. SUBSTRING(str FROM pos FOR len) : Alias de SUBSTRING(str,pos,len). Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 36
  37. 37. SUBSTRING_INDEX(str,delim,count) : Intervalle de chaîne TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) : Suppression de caractère en début et/ou en fin de chaîne. UCASE(str)/UPPER(str) : Mise en majuscule de la chaîne str. UNCOMPRESS(string_to_uncompress) : Décompression de la chaîne UNCOMPRESSED_LENGTH(compressed_string) : Taille de la chaîne. UNHEX(str) : Chaîne héxadécimale en ascii. Fonctions sur chaîne de caractère LightPath 2014© - http://www.jmrenouard.fr 37
  38. 38. LightPath 2014© - http://www.jmrenouard.fr 38
  39. 39. ADDDATE(date,INTERVAL expr type) : Ajout de date. ADDDATE(expr,days) : Ajout de date. ADDTIME(expr,expr2) : Ajout d'heure. CURDATE() : Date actuelle. CURRENT_DATE() : Date actuelle. CURTIME() : Heure actuelle. CURRENT_TIME : Heure actuelle. YEAR(date) : Année de la date. YEARWEEK(date) : Numéro de la semaine de la date. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 39
  40. 40. CURRENT_TIMESTAMP : Date et heure actuelle. DATE(expr) : Extraction de la date. DATEDIFF(expr,expr2) : Nombre de jour d'écart. DATE_ADD(date,INTERVAL expr type) : Ajout de dates. DATE_SUB(date,INTERVAL expr type) : Soustraction de dates. DATE_FORMAT(DATE, format) : Date formatée. DAY(date) : Alias de dayofthemonth(). DAYNAME(date) : Nom du jour. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 40
  41. 41. DAYOFMONTH(date) : Jour du mois (1 à 31). DAYOFWEEK(date) : Jour de la semaine (1 : dimanche). DAYOFYEAR(date) : Jour de l'année. EXTRACT(type FROM date) : Extraction d'information de temps. FROM_DAYS(N) : Nombre de jours depuis N. FROM_UNIXTIME(unix_timestamp): Conversion d'un timestamp. GET_FORMAT(type) : Format du type de date. HOUR(time) : Extraction du nombre d'heure. LAST_DAY(date) : Dernier jour du mois courant. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 41
  42. 42. LOCALTIME() : Heure locale. LOCALTIMESTAMP : Date et heure locale. MAKEDATE(year, nbDay) : Date à partir de l'année et du nombre de jour MAKETIME(hour,minute,second) : Heure à partie de heure, minute et seconde. MICROSECOND(expr) : Nombre de micro-seconde. MINUTE(time) : Nombre de minute. MONTH(date) : Mois de la date. MONTHNAME(date) : Nom du mois. NOW() : Date actuelle. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 42
  43. 43. PERIOD_ADD(P,N) : Ajout de période. PERIOD_DIFF(P1,P2) : Différence entre période. QUARTER(date) : Trimestre de la date. SECOND(time) : Nombre de seconde de la date. SEC_TO_TIME(seconds) : Date à partir d'un nombre de s. STR_TO_DATE(str,format) : Date à partir d'une chaîne. SUBDATE(date,INTERVAL expr type) : Alias de DATE_SUB. SUBDATE(expr,days) : Soustraction de 2 dates. SUBTIME(expr,expr2) : Soustraction de 2 heures. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 43
  44. 44. SUBTIME(exp1, exp2) : Soustraction de date. SYSDATE() : Alias de Now(). TIME(expr) : Extraction de l'heure. TIMEDIFF(expr,expr2) : Soustraction de 2 heures. TIMESTAMP(expr) : Timestamp à partir d'une chaîne. TIMESTAMPADD(in,expr,expr2) : Ajout de timestamp. TIMESTAMPDIFF(in,expr1,expr2) : Soustraction de timestamp. TIME_FORMAT(time,format) : Affichage de l'heure au format. TIME_TO_SEC(time) : Conversion en seconde. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 44
  45. 45. TO_DAYS(date) : Nombre de jours depuis la date. UNIX_TIMESTAMP() : Timestamp Unix actuelle. UNIX_TIMESTAMP(date) : Timestamp Unix de la date. UTC_DATE : Date au format UTC. UTC_TIME : Heure au format UTC. UTC_TIMESTAMP : Timestamp au format UTC. WEEK(date [,mode]) : Numéro de la semaine. WEEKDAY(date) : Jour de la semaine de la date. WEEKOFYEAR(date) : Jour de l'année de la date. Fonctions sur le temps LightPath 2014© - http://www.jmrenouard.fr 45
  46. 46. LightPath 2014© - http://www.jmrenouard.fr 46
  47. 47. AVG(expr) : Moyenne des valeurs. BIT_AND(expr) : ET bit à bit des valeurs. BIT_OR(expr) : OU bit à bit des valeurs. BIT_XOR(expr) : OU EXCLUSIF bit à bit des valeurs. COUNT(expr) : Nombre de valeurs. COUNT(DISTINCT expr,[expr...]) : Nombre de valeurs distinctes. Fonctions d’agrégat LightPath 2014© - http://www.jmrenouard.fr 47
  48. 48. •GROUP_CONCAT(expr) : Concaténation des valeurs. •MIN(expr) : Valeur minimum. •MAX(expr) : Valeur maximum. •STD(expr) / STDDEV(expr) : Dérivation standard entre les valeurs. •SUM(expr) : Somme des valeurs. •VARIANCE(expr) : Variance des valeurs. Fonctions d’agrégat LightPath 2014© - http://www.jmrenouard.fr 48
  49. 49. LightPath 2014© - http://www.jmrenouard.fr 49
  50. 50. Fonctions de chiffrements. Fonctions d'informations. Fonctions diverses. Les autres fonctions LightPath 2014© - http://www.jmrenouard.fr 50
  51. 51. LightPath 2014© - http://www.jmrenouard.fr 51
  52. 52. Index simple colonne CREATE INDEX idx on table_price ( price); Index multi-colonne CREATE INDEX idx_price_cat in table_price (price, cat); Pas d'index sur expression SELECT * FROM test1 WHERE lower(col1) = 'value'; CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));  Pas d'index partiel CREATE INDEX low_price_idx on table_price(price) where price BETWEEN 1 AND 10; Les indexes LightPath 2014© - http://www.jmrenouard.fr 52
  53. 53. Index BTREE Utile quand la granularité des données est forte. Ex : pour l'indexation d'identifiant unique. Index HASH Utile quand la granularité des données est faible.  Ex : La couleur d'une voiture. Les indexes LightPath 2014© - http://www.jmrenouard.fr 53
  54. 54. Index RTREE Utile pour les données spatiales. Ex : Coordonnées d'une étoile dans l'univers. Index FULLTEXT Utile pour les recherche dans du texte. Ex : recherche d'un texte à partir d'une citation. Les indexes LightPath 2014© - http://www.jmrenouard.fr 54
  55. 55. Documentation de MySQL http://dev.mysql.com/ LightPath 2014© - http://www.jmrenouard.fr 55
  56. 56. LightPath: ◦Société de conseil et d’ingénierie ◦Formations, Conseil, Audit et mise en oeuvre ◦jmrenouard@lightpath.fr Jean-Marie RENOUARD ◦jmrenouard@gmail.com ◦Twitter: @jmrenouard ◦http://www.jmrenouard.fr LightPath 2014© - http://www.jmrenouard.fr 56

×