MySQL: les 4 Agenda - Cursusmateriaal opleiding web developer

Download Report

Transcript MySQL: les 4 Agenda - Cursusmateriaal opleiding web developer

Opleiding Web Developer 2014-2015 20/01/15  

MySQL:  les  4  

Project  bibliotheek   •   •   •   •   •   •  

Agenda  

Verbinden  vanuit  PHP   SQL  injecDes   MySQL  FuncDons   "Project  management"   Oefening  bibliotheek   Planning  resterende  lessen  Database   1   © Vincent De Munck

Opleiding Web Developer 2014-2015

Queries  uitvoeren  vanuit  PHP  

•   Oude  methode:  mysql()   à  NIET  GEBRUIKEN!   Voor  wie  deze  library  reeds  gewoon  is:   hZp://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers     •   2  nieuwe,  betere  methodes:   mysqli()   •   Voordeel:  object-­‐georienteerd  of  procedureel   –   PDO()   •   Voordeel:  werkt  met  12  verschillende  merken  databases   •   Voordeel:  named  parameters  in  prepared  statements!   Voorbeelden:  zie  map  Database  03   •   •   •  

Nuage  links  

hZp://net.tutsplus.com/tutorials/php/pdo-­‐vs-­‐ mysqli-­‐which-­‐should-­‐you-­‐use/     hZp://net.tutsplus.com/tutorials/php/php-­‐ database-­‐access-­‐are-­‐you-­‐doing-­‐it-­‐correctly/   hZp://net.tutsplus.com/tutorials/php/why-­‐you-­‐ should-­‐be-­‐using-­‐phps-­‐pdo-­‐for-­‐database-­‐access/   20/01/15   2   © Vincent De Munck

Opleiding Web Developer 2014-2015

Veiligheid:  voorkom  SQL  injecDes!  

Voorbeeld:  u  heeb  een  blog  en  laat  via  de  navigaDe  een   bericht  ophalen  via  het  ID  nr  in  een  GET  variabele.   Deze  GET  variabele  moet  dus  gebruikt  worden  in  uw  query.     $query  =  ' SELECT  Dtel,  tekst  FROM  posts     WHERE  id  =   '  .   $_GET['post']   .  '  AND  acDef  =  1; '     Wat  als  iemand  volgende  ID  opgeeb?   $_GET['post']   =  ' 1;  DROP  posts; '   à  

UW  TABEL  WORDT  VERWIJDERD!!!  

De  oplossing?  Prepared  statements  &  parameter  binding!   •   •   •   •  

MySQL  FuncDes  

Waardes  transformeren   Kan  meestal  ook  in  PHP,  maar  vaak  sneller  in  de   database   Vaak  gebruikt  om  de  waarde  van  een  kolom  te   veranderen  bij  een  SELECT   Maar  kan  ook  gebruikt  worden  in  WHERE,   HAVING,  GROUP  BY,  ORDER  BY,  UPDATE,…   20/01/15   3   © Vincent De Munck

Opleiding Web Developer 2014-2015 •   •   •   •   •   •  

Aggregate  funcDons  

MIN()  :  laagste  waarde  in  kolom   MAX():  hoogste  waarde  in  kolom   AVG():  gemiddelde  van  kolom   SUM():  som  van  kolom   COUNT(kolomnaam):  aantal  rijen  in  kolom   COUNT(DISTINCT  kolomnaam):  unieke  rijen  in   kolom   hZp://dev.mysql.com/doc/refman/5.0/en/group-­‐ by-­‐funcDons.html

    •   •  

String  funcDons:  concatenaDon  

CONCAT(deel1,  deel2,  deel3,  deel4,  …)  

à à  lijmt  de  delen  aan  elkaar  tot  één  string.            Bvb:  CONCAT(voornaam,  '  ',  achternaam)    Geeb  null  indien  een  van  de  delen  null  is.  

CONCAT_WS(scheidingswaarde,  deel1,  deel2,…)  

à à  lijmt  de  delen  aan  elkaar  met  de   scheidingswaarde  ertussen    negeert  delen  die  null  zijn   à  goed  alternaDef  voor  CONCAT()  indien  u  weet  dat   een  kolom  null  kan  zijn.Als  scheidingswaarde  geeb  u   dan  een  lege  string  mee:        CONCAT_WS('',  kolom1,  kolom2,…)   20/01/15   4   © Vincent De Munck

Opleiding Web Developer 2014-2015 •   •   •   •   •   •  

Andere  string  funcDons  

LOWER():  kleine  leZers   UPPER():  hoofdleZers   TRIM():  spaDe  aan  begin/einde  wegnemen    (zie  ook  LTRIM()  en  RTRIM()  voor  links/rechts)   LIKE:  gelijkaardige  string.  Bvb:   SELECT  *  FROM  tbl  WHERE  naam  LIKE  'Vande%'   LENGTH():  lengte  van  string   hZp://dev.mysql.com/doc/refman/5.0/en/ string-­‐funcDons.html

  20/01/15   •   •  

Numerieke  funcDes  

Zowat  alle  wiskundige  bewerkingen.   Zie  online  handleiding:   hZp://dev.mysql.com/doc/refman/5.0/en/ numeric-­‐funcDons.html

  5   © Vincent De Munck

Opleiding Web Developer 2014-2015 •   •   •  

TijdsfuncDes  

DATE():  dateDme  naar  datum  omzeZen   DAY(),  MONTH(),  YEAR(),…:  deel  van  datum   DATEDIFF():  verschil  tussen  twee  data   •   Zie  online  handleiding:   hZp://dev.mysql.com/doc/refman/5.0/en/date-­‐ and-­‐Dme-­‐funcDons.html

  20/01/15  

EncrypDe/DecrypDe  

 

  •   •  

AES_ENCRYPT(brontekst,  sleutel)  

à  alDjd  ander  resultaat!   •  

AES_DECRTYPT(versleutelde-­‐tekst,  sleutel)  

MD5(brontekst):  MD5  hash  van  brontekst   SHA1(brontekst):  SHA-­‐1  hash  van  brontekst   6   © Vincent De Munck

Opleiding Web Developer 2014-2015

Allerlei  

•   •   RAND():  willekeurig  getal  tussen  0  en  1   Veel  voorbeelden  met  ORDER  BY  RAND()  

 

à  is  ok  indien  u  echt  de  hele  lijst  in  willekeurige    volgorde  wil  krijgen     à  niet  efficiënt  als  u  één  willekeurig  item  wil  en        LIMIT  1  doet      In  dit  geval,  beter  dit  voorbeeld  volgen:   hZp://forums.phpfreaks.com/topic/36709-­‐the-­‐ mysql-­‐sDcky/#entry178450     20/01/15   •   •   •  

Control  funcDons  

IF(expressie,  resultaat-­‐juist,  resultaat-­‐onjuist)   CASE  waarde  WHEN  vergelijkings-­‐waarde  THEN   resultaat-­‐juist  ELSE  resultaat-­‐fout  END  

hZp://dev.mysql.com/doc/refman/5.0/en/ control-­‐flow-­‐funcDons.html

  7   © Vincent De Munck

Opleiding Web Developer 2014-2015 •   •   •  

Online  resources  

MySQL  handleiding   hZp://dev.mysql.com/doc/refman/5.0/en/ funcDons.html

  Overzicht  Tutorialspoint:   hZp://www.tutorialspoint.com/mysql/mysql-­‐ useful-­‐funcDons.htm

  Enkele  Dps   hZp://www.bigdbahead.com/?p=46   20/01/15  

PROJECT  MANAGEMENT  

© Vincent De Munck 8  

Opleiding Web Developer 2014-2015

Wat  de  klant  beschreven  heeb  

20/01/15  

Wat  de  verkoper  beloofd  heeb  

© Vincent De Munck 9  

Opleiding Web Developer 2014-2015 Wat  de  project  manager  begrepen  heeb   20/01/15  

Hoe  de  analist  het  ontworpen  heeb  

© Vincent De Munck 10  

Opleiding Web Developer 2014-2015 Hoe  de  programmeur  het  geschreven  heeb   20/01/15  

Wat  de  testers  ontvangen  hebben  

© Vincent De Munck 11  

Opleiding Web Developer 2014-2015 Hoe  de  sobware  gedocumenteerd  werd   20/01/15  

Wat  er  effecDef  geïnstalleerd  werd  

© Vincent De Munck 12  

Opleiding Web Developer 2014-2015

Wat  er  aan  de  klant  gefactureerd  werd  

20/01/15  

De  ondersteuning  na  verkoop  

© Vincent De Munck 13  

Opleiding Web Developer 2014-2015

Wat  de  klant  eigenlijk  nodig  had  

20/01/15  

Hoe  komt  dit?  

© Vincent De Munck 14  

Opleiding Web Developer 2014-2015 •   •   •   •   •  

Goede  raad  (1)  

Sobwareprojecten  eindigen  vaak  in  frustraDe  door   complexiteit  en  inherente  spanning  tussen  wat   commercieel  en  technische  haalbaar  is   Technisch  werk  wordt  al0jd  overschat  (ook  door  u)   CommunicaDe  is  essenMeel:   –   VerwachDngen  realisDsch  houden  en  afstemmen!   –   Begrijpen  wat  de  klant  echt  nodig  heeQ   (is  niet  noodzakelijk  wat  de  klant  zelf  bedacht  heeb)   KISS  (keep  it  simple,  stupid):  liever  een  eenvoudig   maar  nuag  dan  complex  en  warrig   Denk  niet  enkel  funcDoneel  (wat  moet  het  kunnen)   maar  ook  procesmaMg  (hoe  zou  men  het  gebruiken)   •   •   •   •  

Goede  raad  (2)  

"Bezint  eer  ge  begint":  denk  niet  meteen  aan   varchars  en  colla0ons.  Neem  de  Djd  om  uw  klant   te  begrijpen  en  na  te  denken  over  uw  ontwerp.   …maar  blijf  niet  eeuwig  hangen  in  de  analyse!   Denk  bewust  na  over  de  beperkingen  van  uw   ontwerp,  en  communiceer  deze  duidelijk.   Een  goede  leidraad:  cost/benefit.   MoDveer  uw  keuzes  qua  kwaliteit,  scope,   toekomstbestendigheid  en  eleganDe  op  basis  van   het  relaDeve  nut  dat  zij  bieden  versus  de  kost  die   zij  met  zich  meebrengen.   20/01/15   15   © Vincent De Munck

Opleiding Web Developer 2014-2015

EvaluaDecriteria  oefening  en  examen  

In  volgorde  van  belangrijkheid:  

1.

Kwaliteit:  uw  ontwerp  moet  tot  een  veilige,   betrouwbare  en  nuage  applicaDe  leiden.   Problemen  oplossen;  geen  nieuwe  creëren!  

2.

3.

Scope:  uw  applicaDe  moet  zoveel  mogelijk   noden  van  de  klant  oplossen.   Toekomstbestendigheid:  rekening  houden  met   noden  die  (nog)  niet  in  de  scope  passen.  

4.

Eenvoud  en  eleganMe:  een  helder  ontwerp  dat   efficiënt  gebruikmaakt  van  alle  resources   (programmeerDjd,  computercapaciteit,…).   •   •   •   •   •   •  

Oefening  Bibliotheek  

Database  06   à  Bibliotheek   Zelfstandig  of  in  groep  (max  3  personen)   Ontwikkelen:  za  11  januari  en  za  18  januari.   Deadline:  za  25  januari   –   Indienen  is  niet  verplicht,  maar  sterk  aangeraden   –   Deliverables:  datamodel  met  demo-­‐data,  enkele  SQL   queries  en  een  beschrijving  van  uw  ontwerp   –   U  kiest:  presentaDe,  one-­‐on-­‐one  of  louter  per  e-­‐mail   Individuele  feedback:  1  februari   Examen:  8  februari,  vergelijkbare  oefening  maar   veel  beperkter  in  omvang.   20/01/15   16   © Vincent De Munck

Opleiding Web Developer 2014-2015 20/01/15   hZp://www.contractonline.be/Database-­‐06/oef_bibliotheek.php

   

OEFENING  BIBLIOTHEEK  

© Vincent De Munck 17