SQL Tutorial für Anfänger | Grundkurs Deutsch Programmieren lernen https://www.youtube.com/watch?v=7HZbGReAi5s Transkript (automatisch erstellt) 0:00 in diesem tutorial lernst du alles was du über sql als anfänger wissen muss sql oder auch sie cool steht für structured query language daten werden häufig in 0:11 einer tabelle struktur gespeichert und mit dieser abfragesprache können wir aus diesen tabellen daten abfragen wir können die daten in diesen tabellen auch 0:22 verändern oder sogar komplett neue tabellen erstellen sql ist dabei nicht irgendeine sprache sondern tatsächlich die abfragesprache für das meistgenutzte 0:33 datenbanksystem überhaupt und zwar die relationale datenbank das bedeutet du wirst in diesem kurs erst einmal lernen was eine relationale datenbank ist 0:43 anschließend lernst du wie du mit sql zu solch einer datenbank neue daten hinzufügen kannst du lernst wie du die daten abfragen und vätern kannst wie du 0:53 neue tabellen erstellen kannst und wie du komplexe abfragen erstellen kannst für dieses tutorial muss zunächst installieren sondern wir arbeiten hier 1:03 mit eine grafische oberfläche wo du daten aus einer tabelle abfragen und anzeigen kannst und hier oben kannst du direkt ein sql code eingeben aber 1:13 zunächst erstmal was ist überhaupt eine relationale datenbank stell dir einfach solch eine tabelle vor du hast einen laden und hast natürlich auch kunden und 1:25 selbstverständlich führst du auch eine kartei über diese kunden gerade bei solchen kundendaten macht es natürlich sinn diese daten in tabellenform 1:34 abzuspeichern das heißt jeder kunde bei dir hat eine nummer eine so genannte custom a id einen namen einen kontakt nahm vielleicht noch an denen etwas 1:43 geliefert wird eine adresse eine stadt eine postleitzahl und natürlich ein land nehmen wir mal an du hast ein warenhaus dann hast du natürlich viele kunden und 1:55 dementsprechend hast du natürlich auch sehr viele daten in solch einer tabelle normalerweise hast du natürlich nicht nur eine tabelle sondern mehrere 2:04 beispielsweise auch noch für deine bestellungen das hier wäre jetzt die untere tabelle in der unteren tabelle siehst du also ebenfalls eine 2:13 bestellnummer die sogenannte order id dann die customer idea was die jeweilige kundennummer ist welcher mitarbeiter das ganze bearbeitet hat in der employee id 2:24 dann noch das datum wann das ganze bestellt wurde unter noch eine sogenannte schipper id die der person zuzuordnen ist die das ganze versendet 2:34 hat wie du schon siehst ist die customer die jetzt bei der ersten bestellung 2 und bei unserer person oben gibt es ebenfalls eine customer id2 und du 2:45 möchtest jetzt vielleicht die bestellung herausfinden die dieser kunde gemacht hat oder du möchtest zu der jeweiligen bestellung herausfinden welcher kunde 2:56 denn jetzt hinter der customer id2 steckt du musst also eine relation zwischen der tabelle orders und der tabelle customers herstellen du brauchst 3:07 daten aus beiden tabellen und genau das kannst du mit sql machen du kannst dir daten aus beliebig vielen tabellen raussaugen und diese beliebig 3:18 kombinieren um verschiedene sachen herauszufinden das heißt wenn du jetzt beispielsweise in einem warenhaus arbeitest dann existieren dort in der 3:27 realität natürlich nicht zwei tabellen sondern ganz ganz viele über die mitarbeiter über die versender die die ware versenden und noch deutlich mehr 3:38 und wenn dein chef jetzt zu mir kommt und sagt hey wir brauchen alle bestellungen die 1996 in berlin getätigt wurden dann kannst du solch eine abfrage 3:49 mit hilfe von sql erledigen sql oder auch sequel genannt ist also eine sprache um aus relationalen datenbanken verschiedene daten abzufragen 4:03 im ersten abschnitt schauen wir uns erst einmal unser interface an und versuchen dann ein paar daten zu unserer tabelle hinzuzufügen wir sehen also diese 4:14 oberfläche hier das ganze ist natürlich auch verlinkt in der youtube beschreibung da kannst du einfach auf den link drücken und dann siehst du 4:23 diese oberfläche hier und hier steht jetzt schon so ein bisschen sql code drin und rechts an der seite sind einige tests datenbanken die wir verwenden 4:33 können die datenbank die du eben schon gesehen hast war die customer datenbank und die orders datenbank wenn du hier drauf drückt dann siehst du auch immer 4:42 gleich was in dieser datenbank gespeichert ist das liegt daran dass sobald du hier drauf drückt automatisch dieser code hier ausgeführt wird und das 4:54 ist auch schon der einfachste code dem man den sql machen kann select also auswählen dann neues wort stern was so viel bedeutet wie alles dann from also 5:07 wovon wir das ausgeben wollen und dann in diesen eckigen klammern das brauchen wir sogar gar nicht die kammern wegnehmen customers also die tabelle das 5:17 bedeutet wenn wir diesen code hier aus führen dann kommen wir hier unten wie wir sehen an diese tabelle wir wählen alle daten aus unserer tabelle customers 5:29 wenn ich jetzt statt customers hier beispielsweise products schreibe dann kann ich auf diese produkte tabelle hier rechts unten zu greifen führen wir das 5:39 ganze mal aus und wir sehen nun hier ganz genau was für eine product id wir haben was für ein produkt also hier chairs dann was für eine supply die 5:50 category id wir haben und natürlich auch noch die unit und der preis damit haben wir jetzt alle informationen die in dieser tabelle vorhanden sind wir können 6:01 uns in diesem interface hier komplett austoben wir können daten löschen aus den tabellen wir können daten hinzufügen wir können daten manipulieren und wenn 6:11 wir alles kaputt gemacht haben oder zu unserer ausgangssituation zurückkehren wollen dann können wir hier rechts unten einfach auf restore database drücken und 6:21 anschließend ist alles wieder da wo wir ganz am anfang waren das heißt wir haben hier also die perfekte umgebung und einfach mal alles auszuprobieren was wir 6:31 so ausprobieren wollen wenn ich nun beispielsweise einen neuen mitarbeiter hinzufügen möchte dann klicke ich auf diese tabelle employees hier haben wir 6:41 aktuell zehn mitarbeiter und ich möchte nun einen elfter mitarbeiter hinzufügen und diesen elf mitarbeiter füge ich hinzu indem ich hier oben ein sql code 6:53 eingeben das heißt wir müssen nun quellcode schreiben und können natürlich nicht einfach hier auch so ein plus oder sowas drücken um diese daten 7:01 hinzuzufügen dafür schreibe ich jetzt den code in wörth into um zu sagen dass ich etwas einfügen möchte nun sage ich in welche von meinen ganzen tabellen ich 7:14 hier etwas einfügen möchte ich möchte in die employees tabelle etwas rein fügen also schreibe ich insert into employees 7:24 übrigens in den meisten datenbanksystemen da draußen ist es egal ob du die befehle groß oder klein schreibst allgemein werden die befehle 7:32 sehr ähnlich geschrieben je nachdem welches datenbanksystem du benutzt kann es allerdings sein dass der eine oder andere befehl mal minimal 7:40 unterschiedlich geschrieben wird allgemein ist es aber egal ob du jetzt microsoft sql server benutzt ob du oracle dw benutzt michael postgres maria 7:50 db oder was es sonst noch alles gibt es gibt sehr viele datenbanksysteme die mit sql funktionieren in den meisten datenbanksystemen hat es sich 7:59 eingebürgert dass für die sql befehle also sowas wie inserate und intuit marco schreiben und alles was immer anders ist klein schreiben und nun mit dem ersten 8:08 buchstaben zb groß sowie employees nachdem wir also gesagt haben in welche tabelle wir etwas einfügen wollen müssen wir jetzt noch sagen was wir in dieser 8:18 tabelle einfügen wollen und wohin wir das ganze einfügen wollen wir sagen als erstes in welche spalten wir das ganze einfügen wollen wir wollen in employee 8:28 id etwas einfügen also schreiben wir so eine runde klammer auf und dann den namen der ersten spalte dann ein komma namen der nächsten spalte ein komma name 8:39 der nächsten spalte und immer so weiter das machen wir jetzt für alle spalten weil wir wollen ja in alle spalten werte einfügen unser mitarbeiter sollte alle 8:51 werte hier befüllt haben und so weit fertig sind machen wir wieder eine klammer zu so sieht das ganze jetzt aus nun müssen wir natürlich noch sagen 9:00 welche werte wir für diese ganzen spalten einfügen wollen deswegen schreiben wir jetzt als nächstes values das ganze muss nicht an eine neue zeile 9:08 geschrieben werden aber ich finde das ganze kann man so ein bisschen besser lesen und hier schreiben wir nun wieder eine klammer auf und eine klammer zu und 9:17 schreiben in diese klammer nun in anführungszeichen wieder mit komma getrennt was wir denn hier reinschreiben wollen beispielsweise als mitarbeiter 9:25 nehmen wir mal die elf dann nehme ich als nachnamen ergehen als vornamen yunus dann nehme ich als geburtsdatum mein geburtsdatum also 1991 10 03 ein foto 9:39 habe ich nicht da schreibe ich jetzt einfach mal irgendwas rein die 1 punkte jetzt habe ich halt das gleiche bild was auch der erste 9:49 mitarbeiter hat und dann noch ein paar notizen hier schreibe ich irgendwie nur hallo welt ich lerne sql und nun führen wir das ganze einfach 10:02 mal aus und gucken was passiert hier unten steht jetzt einfach nur bei review of major changes to the database effekte 1 was mit anderen worten 10:14 bedeutet wir haben änderungen an unserer datenbank vorgenommen und wir haben genau eine reihe verändert und zwar die reihe die wir jetzt neu eingefügt haben 10:26 wenn wir jetzt unsere tabelle angucken wollen dann schreiben wir hier einfach wieder select stern fromm und den namen unserer datenbank die wir gerade 10:36 verändert haben alternativ könnte ich hier auch rechts einfach draufklicken wenn ich das ganze 10:45 jetzt aus führe dann sehen wir dass unsere gesamte tabelle hier wieder angezeigt wird und die wir sehen hat unsere tabelle jetzt einen weiteren 10:55 eintrag und zwar den eintrag mit der employee id 11 und dort habe ich jetzt nicht reingeschmuggelt als weiteren mitarbeiter und genau so kannst du 11:07 verschiedene neue werte zu einer tabelle mit sql hinzufügen wenn du das ganze jetzt üben möchten empfehle ich dir einfach ein zwei andere tabellen zu 11:16 nehmen und einfach mal selber weitere daten hinzuzufügen dadurch kannst du überprüfen ob du das ganze verstanden hast und ob du diesen befehl auch 11:25 anwenden kannst weil zugucken kann jeder ausprobieren da merkt man dann häufiger mal dass man doch einen kleinen fehler gemacht hat oder sich irgendwie vertippt 11:33 oder vielleicht doch noch nicht das ganze anwenden kann wenn das der fall ist das gut einfach ein zwei minuten zurück und guck dir nochmal an wie ich 11:41 das ganze einfügen ansonsten beschäftigen wir uns jetzt damit wie wir denn einzelne werte aus unserer tabelle abfragen können 11:51 nachdem wir im letzten abschnitt einen neuen eintrag zu unserer tabelle hinzugefügt haben wollen wir im jetzigen abschnitt natürlich unsere daten 11:58 abfragen das heißt wir haben ja hier verschiedene tabellen und wolle nun aus diesen verschiedenen tabellen datenabfragen stellen wir uns mal vor 12:07 wir haben die tabelle customers ja das steht hier häufig schon standardmäßig drin so wie bei mir jetzt gerade und dort wollen wir nun unsere daten 12:15 abfragen dann steht hier dieser befehl hier schon standardmäßig drin ich lösche jetzt mal die untere zeile und wir führen erst mal nur die obere zeile aus 12:26 hier steht select stern from customers also wähle aus stern steht für alles fromm steht wovon wir das ganze aussehen wollen und die tabelle heißt customers 12:39 also wir werden alles aus der tabelle customers und das ergebnis wird ja auch gleich unten angezeigt alle einträge aus unserer tabelle customers ich könnte 12:51 jetzt hier oben beispielsweise auch eintragen select stern from orders und dann würde ich aus der tabelle order ist alles abfragen also alle 13:00 196 einträge die es hier in den bestellungen gibt all das ist jetzt nicht besonders interessant wir könnten hier auch beispielsweise 13:10 categories eintragen dann würden wir alle kategorien bekommen eben stand hier standardmäßig jetzt noch eine weitere zeile drin und zwar oder bei oder bei 13:22 heißt einfach sortieren nach also wir können diese tabelle jetzt anhand von einem feld sortieren wenn wir sie beispielsweise anhand des feldes 13:32 category nahm also nach dem namen der kategorie sortieren wollen dann schreiben wir hier einfach order by kategorie namen und führen das ganze mal 13:42 aus und sehen dass hier nun beispielsweise beverages also ein board mit b als erstes steht dann wird er mit c dann mit de und immer so weiter also 13:52 wir haben jetzt unsere tabelle anhand des feldes category nahm alphabetisch sortiert hier können wir nur noch andere felder reinschreiben beispielsweise 14:01 description da wird wir unsere tabelle anhand der beschreibung hier rechts sortieren außerdem stand hier noch ein komisches wort und zwar dieses asc wenn 14:13 wir das dahinter tun dann ändert sich gar nichts das heißt einfach dass wir es in es sending oder sortieren wollen standing order steht für aufsteigender 14:24 reihenfolge und genau das ganze machen wir auch hier die reihenfolge ist aufsteigend wir könnten sie auch absteigend machen dafür würden wir hier 14:33 de sc schreiben gehen wir das ganze einmal ein und nun ist die reihenfolge genau andersrum weil das ending order steht für absteigender reihenfolge also 14:45 je nachdem ob du hier asc rein schreibst du das ganze aus fürst oder de sc rain schreibst hast du die tabelle entweder in die eine richtung oder in die andere 14:55 richtung sortiert wenn du gar nix rein schreibst dann ist es genauso wie wenn du asc rein schreiben würdest also ganz normal in die standard richtung 15:04 alphabetisch sortiert jetzt denkst du wahrscheinlich ok schon ganz cool aber kann man mit sql denn nicht noch mehr machen und ja das ist natürlich möglich 15:13 du kannst unglaublich viele verschiedene abfragen mit sql erstellen beispielsweise kannst du wenn du hier alle möglichen kunden hast nur die 15:24 einträge aus der stadt berlin abfragen das ganze kannst du machen indem du natürlich so wie hier oben wieder schreibt select stern from customers 15:35 allerdings kannst du hier hinter nun ein sogenanntes keyboard einfügen und dieses werk ii word bedeutet dass du nun eine 15:45 einschränkung machen könntest du kannst beispielsweise sagen wer city also das feld was hier rechts unten ist gleich in anführungszeichen 15:56 berlin und wenn wir das ganze jetzt ausführen dann kriegen wir nur die einträge wo die stadt berlin ist wenn ich jetzt beispielsweise madrid ein gebe 16:07 und das ganze ausführe sehen wir dass wir gleich drei einträge haben bei drei kunden kommen aus der stadt madrid und jetzt stellen wir uns einfach vor wir 16:17 wollen alle kunden haben die innstadt erleben oder die innenstadt beleben das heißt zum beispiel entweder in madrid oder in berlin dann kann man das ganze 16:27 so macht man schreibt und schreibt es hier sowohl madrid in anführungszeichen in diese klammern als auch zum beispiel berlin ja das hier ist jetzt einfach 16:38 eine liste von verschiedenen einträgen das definiert man so runde klammer auf ganz am ende runde klammer zu und dann in anführungszeichen immer die 16:48 jeweiligen begriffe aus dieser liste und das ganze ist er mit einem komma getrennt und wir wollen nun alle einträge aus unserer tabelle haben wo 16:57 die stadt entweder madrid ist oder berlin führen wir das ganze mal aus jetzt hat sich unser eintrag natürlich hier um 1 erweitert 17:07 und jetzt stellen wir uns einmal vor wir wollen alle felder haben aus unserer tabelle wo der contact nahm mit maria beginnt ja also wir wollen nicht das 17:17 ganze feld haben sondern nur einen teil von dem text der hier drin steht das heißt ich schreibe jetzt nicht mehr contact nahm gleich in anführungszeichen 17:31 maria weil das würde nicht funktionieren da gibt es kein ergebnis für wieder unten steht stattdessen kann man schreiben wer kontakt namen like maria 17:42 und hier hinter kommt nun ein prozent zeichnen das bedeutet dass der text mit maria anfängt und danach ein beliebiger text kommt wenn ich das ganze ausfülle 17:53 dann sehen wir dass hier zwei marias rauskommen war ja anders aus berlin und maria larsson aus recke in schweden ich könnte jetzt auch beispielsweise nur 18:05 alle kontakte mehr holen die mit am anfang in dem ich hier einfach m prozent schreibe und das sind dann natürlich einige mehr oder beispielsweise mit und 18:17 da kann ich echt beliebig viel filtern und das ganze ist dann schon ziemlich ziemlich hilfreich beispielsweise werden wir alle leute haben wollen die mit 18:26 einer postleitzahl anfangen das ganze kannst du jetzt einmal als übung anfang ja versuch mal alle leute herauszufinden wo die postleitzahl mit null beginnt 18:42 hast du gemacht okay wenn nicht dann machen wir das ganze gemeinsam ich gebe jetzt hier in das war einfach mal postakut ein und sage dass ich hier mit 18:51 einer null anfangen möchte und nun haben wir alle postleitzahlen wo das ganze mit null anfängt allerdings befinden sich diese post seine mexiko in brasilien in 19:02 spanien in deutschland überall und das ganze kann natürlich so nicht stimmen ja das muss man in der realität wahrscheinlich nicht so häufig machen 19:11 deswegen können wir das ganze jetzt auch kombinieren und können sagen wo der post code mit null anfängt und gleichzeitig das land mexiko zum beispiel ist das 19:27 ganze machen wir jetzt einmal und du kannst ja einmal kurz das video noch mal anhalten und einmal experimentieren wie man das ganze machen könnte 19:35 ansonsten machen wir das ganze jetzt gemeinsam und zwar kann ich hier hinter einfach schreiben and country gleich und hier schreibe ich jetzt rein 19:46 mexiko wenn ich das ganze jetzt aus führe dann haben wir zwei abfragen miteinander verbunden und man merkt schon das ganze liest sich an sich 19:59 genauso wie englisch ja wir wollen alle einträge aus customers haben wo der apostel code mit null anfängt also sowie 0 irgendwas ist und wo das land gleich 20:12 mexiko ist und das ganze haben wir hier wunderbar abgefragt und das ganze kann man natürlich beliebig kombinieren vielleicht wollen wir jetzt nur leute 20:23 haben die in einer gewissen adresse in mexiko leben und beispielsweise anna heißen dann würde ich jetzt aufschreiben und als contact nahm natürlich hier den 20:33 kontakt namen wenn man sich übrigens verschreibt ja wenn man hier jetzt irgendeinen verein schreibt was nicht ganz richtig ist und wir das ganze 20:40 ausfüllen dann bekommt man solch eine fehlermeldung vielleicht hast du dich schon das ein oder andere mal jetzt gesehen wenn du das tutorial nach 20:48 gemacht hast diese fehlermeldung bedeutet überhaupt nichts schlimmes ja man muss sie einfach nur richtig lesen und hier steht nun dort prix per 20:56 statement also er konnte dieses statement dass wir hier aus rein geschrieben haben nicht ausführen und dann steht hier noch 1 boss colin also 21:06 es gibt nicht so eine spalte und dann steht hier auch der name der spalte contact ahs und so weiter gibt es nicht steht hier ganz klar also einfach diese 21:18 fehlermeldung lesen wenn man die verschlüsse wenn man die sieht und nicht gleich verzweifeln denken und eine komische fehlermeldung das passiert sehr 21:25 häufig ist aber meistens überhaupt nicht schlimm und wenn du diese fehlermeldung nicht verstehst ist es auch gar kein problem dann macht man folgenden trick 21:35 man kopiert sich den teil der fehlermeldung der wahrscheinlich immer gleich ist das hier ist wahrscheinlich immer anders aber das hier oben ist 21:42 wahrscheinlich immer gleich deswegen kopiere ich mir den teil fügt das ganze bei google ein und dann sehe ich hier direkt auf stack overflow das erste 21:52 ergebnis was wahrscheinlich meine fehlermeldung beschreibt hier schreibt jemand okay das ist mein sql code jetzt schon mal ein bisschen komplexer noch 22:01 als das was wir hier machen und wenn ich hier runter gucke dann gibt es hier auch jemanden der mir diese frage beantwortet und sagt wie man das problem 22:10 wahrscheinlich lösen kann ja und so etwas hilft auch häufig weiter ja wenn es nicht weiterhilft dann kann man auch einfach weiter lesen und den nächsten 22:20 eintrag den nächsten eintrag oder auch noch ein zwei google ergebnisse weiter aber gerade weil so anfänger sachen ja wo man jetzt gerade anfängt findet man 22:27 sehr sehr häufig so den fehler wenn man selber nicht darauf kommt was so eine fehlermeldung hier bedeutet ok also entfernen wir jetzt hier dieses komische 22:37 a s oder was da stand und jetzt funktioniert das ganze wieder an dieser stelle habe ich noch mal ein kleines beispiel für eine anfrage die noch ein 22:46 ticken komplexer ist und zwar geht es wieder darum dass wir aus unserer tabelle customers datenabfragen wollen wir sagen also wieder select stern rom 22:58 rom würde ich es auch wieder groß schreiben customers so jetzt haben wir alle daten und jetzt möchte ich dieses werk so 23:08 abändern dass sich entweder alle daten aus usa kriege wo die postleitzahl mit einer neuen anfängt oder alle aus mexiko wo die postleitzahl mit einer null 23:20 anfängt also zwei verschiedene abfragen wo beide sachen komplett anders ist und was man hier in diesem fall braucht ist eine so genannte klammere das heißt ich 23:32 könnte jetzt hier sagen wer in klammern country gleich usa in anführungszeichen 23:43 and hostel code like wieder anführungszeichen soll anfang mit einer neuen und danach 23:52 irgendetwas anderes so wenn ich das hier aus führen dann kriege ich schon mal alle aus usa wo die postleitzahl mit einer neuen anfängt und jetzt kann ich 24:02 hier hinten ein ohr hinzufügen also ein oder und jetzt kann ich hier eine weitere abfrage einfügen das heißt hier könnte ich jetzt sagen country gleich 24:13 mexico and post it 24:21 like anführungszeichen und hier sage ich nun 0 und prozent es soll also mit einer null anfangen führen wir das ganze 24:31 einmal aus hier habe ich noch mexiko geschrieben hier muss natürlich mexiko stehen und wenn ich jetzt auch ran sql drücke dann sehen wir dass hier nun auch 24:40 die ganzen einträge von mexiko dabei sind ja das heißt wir haben hier jetzt usa und mexiko und in mexiko fangen die alle mit null an und den usa fangen die 24:50 ganzen dinge mit 9 an ich empfehle dir solche komplexe abfragen auch noch ein bisschen weiter zu machen zum beispiel könntest du dir alle leute raussuchen di 24:59 maria heißen und den usa oder mexiko wohnen ja also überlegt ihr ein paar abfragen und trainiert das ganze einfach mal verseuchte komplexe abfragen wirst 25:08 du auch in der realität im berufsalltag häufiger mal brauchen wir haben ja nicht nur eine tabelle sondern wir haben mehrere tabellen so 25:19 haben wir beispielsweise eine tabelle da sind all unsere kunden drin und eine andere tabelle da sind all unsere bestellungen drin das heißt wir haben 25:29 jetzt hier einen ausschnitt aus beiden tabellen und jetzt stell dir einmal vor deinen chef kommt zu dir und sagt hey wir brauchen alle bestellungen die 25:39 renate messner gemacht hat dann kannst du natürlich jetzt irgendwie in deiner tabelle nachgucken mit den kunden und sie ist okay renate messner hat die 25:50 kundennummer 44 und nun gehst du in die andere tabelle wo die bestellungen drin sind und sucht dort nach allen bestellungen die die customer 26:02 44 haben da müsstest du jetzt natürlich mehrere abtragen hintereinander ausführen und das ganze kann auch gerade wenn solche abfragen noch größer noch 26:13 komplexer werden schnell nervig werden vor allen dingen kommt so ein fall ja nicht einmal vor sondern das ganze muss automatisiert werden und wird 26:21 wahrscheinlich jeden tag ausgeführt genau aus diesen gründen macht es sinn neue tabellen zu erstellen wir können nun eine tabelle erstellen wo zu jeder 26:32 bestellung beispielsweise noch der name hinzugefügt wird oder wo zwei tabellen einfach komplett kombiniert werden bei solchen kombinationen wollen wir 26:42 natürlich nicht alle möglichen kombinationen haben sondern wir nehmen beispielsweise unsere tabelle mit den bestellungen und bei dieser tabelle 26:50 ergänzen wir jetzt einfach alle feder die wir zu unseren kunden daten haben in die jeweilige zeit das bedeutet wir haben jetzt 26:58 beispielsweise zwei bestellungen von unserer kunden mit der customer die 44 in beiden zeilen ergänzen wir nun die gesamte reihe aus unserer kunden tabelle 27:11 mit der zeile 44 das heißt dort wo in beiden zeilen als customer die 44 vorkommt dort wollen wir dann die oberen einträge noch dahinter hinzufügen und 27:24 quasi beide tabellen kombinieren man kann zwei tabellen miteinander verbinden indem man ein so genannten join verwendet das bedeutet wir fragen jetzt 27:36 nicht nur alle bestellungen hier ab so wie wir das ganze hier nun schon machen sondern wir sagen dass wir diese bestellung tabelle als unsere linke 27:45 tabelle bezeichnen und diese linke tabelle wird nun mit einer rechten tabelle kombiniert deswegen sage ich hier left join 27:54 join steht immer für kombinieren warum sage ich jetzt hier left join ganz einfach weil ich für jeden eintrag auf meiner linken tabelle also aus der 28:05 tabelle orders noch ein paar spalten hinzufügen möchte und zwar alle spalten aus unserer tabelle customers das heißt ich sage jetzt hier left join 28:18 customers und kombiniere damit nun diese beiden tabellen jetzt muss ich natürlich noch sagen anhand von welchem feld ich diese tabellen kombinieren möchte und 28:31 dafür muss ich jetzt noch schreiben und ich möchte von orders also aus dieser tabelle die customer id verbinden mit der tabelle customers punkt customer 28:45 id das heißt ich muss hier nun wieder customers schreiben hier hinter customers id und kombinieren nun aus dieser customer tabelle der skate 28:55 customer die mit meiner order tabelle und hier das feld customer id das heißt in beiden tabellen gleich und weil wir wollen dass diese beiden gleich sind 29:04 muss man hier hinter noch so ein gleich zeichen setzen das heißt wir wählen nun unsere tabelle orders aus und kombinieren die mit unserer tabelle 29:15 customers und zwar immer genau da wo die customer id das heißt zum beispiel diese zahlen hier der customer id aus unserer anderen tabelle entspricht 29:26 wenn wir das ganze jetzt kombinieren dann kommt hier unten so eine riesen tabelle raus und hier sehen wir nun dass wir sehr sehr viele daten haben die den 29:38 wir auf jeden fall schon mal deutlich mehr anfangen können wir haben hier nicht einfach nur plump die bestellung city und sowas sondern wir haben 29:46 dahinter auch den namen wir haben einen kontakt haben wir haben die adresse die stadt und so weiter und damit kann man jetzt schon mal deutlich mehr anfangen 29:54 wir können nun beispielsweise herausfinden wie viele bestellungen in helsinki gemacht wurden dafür kann ich jetzt das ganze so wie vorher gelernt 30:04 auch schon einfach einschränken und sage hier varsity gleich helsinki und wenn ich das ganze jetzt aus führe dann hin wir okay es wurde nur 30:16 eine bestellung aus helsinki getätigt wenn ich hierhin gegen madrid rein schreibe und das ganze ausführe sehen wir dass dort schon etwas mehr 30:25 bestellungen getätigt wurden und wenn ich jetzt beispielsweise herausfinden möchte wie viel unser kontakt nahm renate messner bestellt hat dann 30:33 schreibe ich hier einfach wo er kontakt gleich renate messner und da findet man jetzt wirklich schon sehr sehr viel raus wenn wir uns diese orders tabelle hier 30:45 angucken dann wäre es doch sehr interessant zusätzlich nochmal herauszufinden was denn eigentlich bestellt wurde und deswegen wäre es 30:54 natürlich irgendwie von vorteil von dieser orders tabelle hier auf die produkte zu kommen hier gibt es jetzt eine product id produkten aim supplier 31:03 und so weiter und diese product id ist ja eindeutig das ding womit man hier eindeutig identifizieren kann um welches produkt es sich handelt das heißt eins 31:13 ist dieses produkt hier zwei ist dieses produkt und so weiter es müssen wir also irgendwie auf diese product id schließen können von den bestellungen und das 31:24 ganze das klappt hier leider nicht weil hier in den order star ist keine die vorhandenen für die produkte das heißt wie sollen wir denn jetzt hier so einen 31:34 left join machen dafür gibt es neben den orders auch noch die order details da gibt es also immer eine order id und dann gibt es hier noch ganz ganz viele 31:47 details zu jeder bestellung wir sehen hier oben dass es 518 oder details gibt aber nur 196 orders das heißt es gibt noch mal deutlich mehr details als es 32:00 bestellungen gibt und dementsprechend wollen wir jetzt erstmal nur zu diesen orders alle oder details bekommen das heißt diese order id hier und die order 32:11 id hier die müssen irgendwie miteinander verbunden werden und das ganze du hast es dir wahrscheinlich schon gedacht gebe ich dir jetzt einmal als aufgabe das 32:19 heißt du hast dieses video jetzt an und versucht einmal die order mit den oder details zu verknüpfen bis gleich 32:32 so wie du gemerkt hast die aufgabe war schon etwas anspruchsvoller wenn du es nicht geschafft hast dann machen wir das ganze jetzt einmal zusammen das heißt 32:41 ich wähle mir hier natürlich wieder unsere orders aus und sagen nun left join weil ich natürlich nur für jede order 32:51 also für alle 196 einträge einmal etwas herausfinden möchte aus oder details das heißt ich schreibe hier nun dass ich das ganze mit oder die tales verbinden 33:04 möchte und jetzt muss ich natürlich auch noch sagen welches feld ich verbinden möchte und deswegen schreibe ich hier oder 33:12 die tate punkt oder id gleich orders punkt oder id ob ich hier übrigens erst das schreibe oder erst das 33:26 also ob ich schreibe orders punkt order idee gleich oder details punkt order id oder andersrum das ist komplett egal so wenn ich das ganze jetzt hier aus führen 33:36 dann haben wir nun eine kombination aus allen möglichen bestellungen mit allen bestellung details wir haben hier jetzt also 33:49 518 ergebnisse und jetzt fragen wir uns vielleicht ok warum haben wir denn 518 ergebnisse und nicht 196 ergebnisse schließlich gibt es doch 34:01 nur 196 bestellungen und wir wollten für jede bestellung die order die tace haben das liegt daran dass eine order id in den order details so wie man hier sieht 34:12 mehrfach vorkommt es gibt mehrere einträge mit details zu einer einzigen bestellung und deswegen gibt es hier nun alle 518 einträge 34:25 und jetzt wollen wir aus diesen bestell details natürlich noch wissen welches produkt bestellt wurde das heißt wir müssen nun diese zwei tabellen die wir 34:36 kombiniert haben noch mit einer dritten tabelle kombinieren das heißt ich schreibe hier wieder left join um unsere ganzen einträge hier auf jeden fall zu 34:46 behalten und kombiniere das ganze jetzt mit products nachdem ich das ganze gemacht habe sage 34:56 ich nun natürlich noch welche fehler ich kombinieren möchte also schreibe ich wieder und schreibe nun dass ich oder die tales punkt product id also dass 35:08 sich das feld product id aus der tabelle oder details verbinden möchte mit dem feld product id das heißt da genauso aus der tabelle products wenn du da unsicher 35:19 bist einfach nochmal auf products draufdrücken vorher am besten für diese komplexe abfrage hier kopieren damit man die nicht wieder neue tippen muss wenn 35:28 ich das ganze jetzt aus führe dann sehe ich dass ich nach wie vor 518 einträge habe dass sich aber zu all diesen einträgen jetzt hier hinten noch alle 35:37 informationen aus der products tabelle hinzugefügt habe das bedeutet ich habe jetzt hier auch den preis des jeweiligen produktes ich habe die unit ich habe 35:49 hier die category id usw product nahm also wirklich alles drin und damit kann man jetzt schon viel anfangen allerdings haben wir hier ist natürlich auch sehr 36:00 sehr viele verschiedene informationen die ein vielleicht auch etwas überfordern und genau deswegen kann man hier oben bei diesen stern jetzt zum 36:11 beispiel auch die da sagen welche fehler man denn anzeigen möchte aktuell sagen wir dass wir einfach alle spalten anzeigen wollen durch diesen stern hier 36:20 jetzt können wir allerdings sagen dass wir nicht hier oben einfach plump diesen stern eingeben um alle spalten anzuzeigen sondern dass wir hier zum 36:28 beispiel einfach product namen eingeben dann hätten wir nur die spalte product nahm und nix anderes und so wir jetzt einfach uns nur die 36:39 dinge heraus suchen die wir denn haben wollen das heißt zum beispiel product nehmen wollen wir haben komme den preis wollen wir haben also geben wir den auch 36:49 ein außerdem wollen wir vielleicht auch noch zum beispiel das datum haben also welches produkt bestellt wurde an welchem datum und dann 37:01 wollen wir natürlich auch noch wissen wie viel der bestellt wurde also wanted ii so und damit können wir jetzt schon mal sehr viel anfangen übrigens man kann 37:12 auch dieses papier noch weiter kombinieren um beispielsweise auch noch herauszufinden welcher kunde denn jetzt zum beispiel abhängig vom namen welches 37:21 produkt bestellt hat und so weiter und so fort und nachdem wir das ganze hier gemacht haben sehen wir nun ok oder date product quality 37:31 preis ja also wir wissen jetzt ist wurden zwölf dinger zu jeweils 21 dollar oder was das auch immer für eine einheit ist vielleicht auch euro besteht ja hier 37:42 steht das produkt was bestellt wurde und hier steht auch das datum die bestellungen liegen übrigens alles schon sehr sehr lange in der vergangenheit wir 37:52 können uns diese ergebnisse natürlich auch in einer neuen tabelle speichern manchmal macht es sinn hier rechts einfach eine neue tabelle anzulegen und 37:59 dort alles mögliche rhein zu speichern was wir so haben wollen das heißt wenn wir diese ergebnisse jetzt länger aufbewahren wollen dann können wir hier 38:09 einfach eine neue tabelle einfügen mit dem befehl create neues wort table nun der name der tabelle ich nenne das ganze mal product orders und dann schreibe ich 38:21 noch es und alles was hinter diesen es steht das ist nun was in die tabelle reinkommt das heißt das ganze ergebnis hier wird nun in die neu erstellte 38:31 tabelle die wir herstellen product orders eingefügt ich führe das ganze mal aus und hier unten steht major changes to the database sieht 38:42 schon ziemlich cool aus und wir sehen nun dass hier eine neue tabelle entstanden ist rechts an der seite product orders und dort ist nun alles 38:51 drin was wir eben erstellt haben also eine tabelle die wir jetzt permanent haben und der mit der wir weiterarbeiten können 38:59 dein chef kommt zu dir und will noch deutlich mehr wissen er will beispielsweise wissen wie viel geld denn jetzt bei einer bestellung ausgegeben 39:07 wurde außerdem interessiert ihn natürlich wie viel insgesamt bestellt wurde wie viel geld bei einbestellung in einem monat ausgegeben wurde und so 39:14 weiter und so fort und deswegen ist es wichtig dass wir unsere abfragen noch ein bisschen komplexer formulieren um es zu schaffen auch noch deutlich mehr 39:24 insights über unsere daten zu gewinnen und genau das ganze schauen wir uns jetzt einmal an wir haben hier unser beispiel von letzten mal ja wir haben 39:34 bereits drei tabellen miteinander kombiniert einmal orders einmal oder details und einmal products und daraus haben wir es nur die feder genommen die 39:45 wir dann brauchen und wissen jetzt wer ein datum ein produktnamen eine menge die bestellt wurde zu einem gewissen kreis wir wollen jetzt aber 39:54 beispielsweise auch wissen wieviel denn insgesamt in dieser bestellung hier ausgegeben wurde und dementsprechend müssen wir natürlich nicht nur hier den 40:04 einzelnen preis für ein produkt haben sondern die gesamtsumme die hier ausgegeben wurde und dementsprechend müssen wir das ganze natürlich 40:12 ausrechnen und das coole ist dass man hier in diesem select ding hier oben nicht nur einfach hier oben die spalten angeben kann die man hier haben möchte 40:21 sondern man kann auch weitere spalten hinzufügen und hier sogar rechnen das heißt ich könnte hier ist beispielsweise sagen ich möchte eine weitere spalte 40:30 hinzufügen und die ist quantity x prize ich multipliziere also dass hier mit dem hier wenn ich das ganze ausführe sehen wir dass hier nun einfach eine 40:44 neue spalte entstanden ist jetzt konnte ti x prize so wie es da oben rein geschrieben habe und es wird das feld konnte ti mit dem feld preis 40:52 multipliziert und dadurch haben wir hier noch mal ein deutlich besseres ergebnis womit wir deutlich mehr anfangen können wenn ich das ganze jetzt umbenennen 41:01 möchte weil ich hier nicht einfach möchte das hier konnte thema preis steht ist ja ein bisschen unprofessionell kann ich hier hinter auch noch ein ass 41:09 schreiben und kann nun hier sagen wie ich das ganze nennen möchte zum beispiel tote ich das wieder ausführen dann sehen wir 41:19 hier dass wir oben nun einfach tote steht es wird also einfach hier oben das ding umbenannt dein chef möchte jetzt beispielsweise wissen wie viel denn 41:28 insgesamt verdient wurde im jahr 1996 das bedeutet wir müssen nun natürlich von unseren abfragen hier herausfinden 41:39 welche denn alle im jahr 1996 gemacht wurde weil wenn ich hier runter gehe sehe ich das auch manche hier aus dem jahr 1997 sind wir müssen also hier 41:50 wieder filtern und wie wir etwas fitter das wissen wir schon ja das haben wir bereits gemacht und zwar mit dem verb statement das heißt ich schreibe jetzt 42:00 hierher und filter nach order date und ich möchte jetzt dass immer wenn es mit dem hier was ich nun markiert habe anfängt aufgenommen wird und unsere 42:10 tabelle und sonst nicht ja das heißt ich möchte hier jetzt nicht nach dem gesamten datum filtern also nicht sowas hier sondern wir verwenden den navas war 42:20 es nochmal like operator genau und hier hinter müssen wir jetzt ein prozent zeichen schreiben um zu sagen dass wir hinter diesem 1996 und - und so noch ein 42:33 bisschen mehr anzeigen wollen ja also alles was mit 1996 - anfängt und danach kommt da noch irgendetwas anderes das wollen wir anzeigen und haben wir es 42:44 auch gemacht und wir sehen hier dass wir nur noch einträge haben die aus 1996 stammt jetzt wollen wir allerdings nicht einfach hier ist so alle dinge 42:56 haben sondern wir wollen nun diesen tote also dieses komplette bestellvolumen von all unseren bestellungen aufsummieren und das bedeutet wir brauchen nun eine 43:08 neue funktionalität wie schaffen wir es in sql die summe von all diesen spalten hier oder von allen zeilen aus der spalte tote zu bilden das geht mit der 43:20 so genannten summen funktion hier oben können wir jetzt statt select oder date usw einfach nur schreiben dass wir die summe haben wollen also schreiben wir 43:30 selects anklamer auf und da steht jetzt quantity mal preis drin und das ganze bezeichnen wir so wie vorher als tote das können wir auch weglassen und 43:43 nachdem wir das hier machen wird nun aus allen spalten also aus dem gesamten ergebnis was in dem hier unten geliefert wird einfach die quality mal den preis 43:55 für jede einzelne zeile genommen so gucken wir was da rauskommt und wir sehen hier ist wurde 283.000 euro oder dollar oder was auch 44:06 immer ist gewinn gemacht es gibt auch noch weitere funktionen die man hier oben aufrufen kann man kann beispielsweise avg schreiben das steht 44:15 für average das heißt hier könnte ich jetzt schreiben es average und wenn ich das jetzt einfüge dann habe ich den durchschnitt einer bestellung und 44:25 natürlich können wir hier auch mit komma getrennt mehrere sachen hintereinander schreiben das heißt wir könnten hier schreiben summe und könnten hier 44:34 schreiben tote und wenn ich das hier so schreiber haben wir zwei spalten einmal die gesamt bestell summe und einmal die durchschnittliche bestellung man kann 44:44 hier auch noch count verwenden auch noch ganz interessant das heißt ich würde hier einfach mal schreiben count ganz am anfang hier rein kann 44:53 jetzt eigentlich irgendwas ist egal welcher spalte wird zählen weil es ja immer gleich viel und hier würde ich jetzt einfach mal als titel wählen 45:04 und wenn ich das jetzt ausführte wissen wir okay es gab 405 bestellungen im jahr 1996 45:13 davon wurden jetzt 283.000 euro umsatz generiert und durchschnittlich wurde in einer bestellung für 45:22 698 euro oder dollar oder was auch immer das ist hier bestellt jetzt nehmen wir einmal an wir haben unseren jahresabschluss hier gespeichert 45:33 das heißt ich schreibe hier einmal create table jahresabschluss 1996 s und speichert das ganze dann 45:44 haben wir jetzt hier eine neue tabelle und vielleicht wollen wir tabellen auch irgendwann mal wieder entweder löschen oder updaten fangen wir an mit dem 45:53 löschen das geht wirklich ganz einfach aber es darf natürlich nicht ausgelassen werden das macht man einfach mit dem befehl drop neues wort table und 46:02 dahinter dass der name von der tabelle die gelöscht werden soll das bedeutet wenn ich das hier ein tipp da kriegen wir auch keine abfrage ob das wirklich 46:11 getan werden soll oder so zeigt die tabelle wurde hier einfach gelöscht auf der rechten seite wenn ich auch dem webbrowser aktualisiere ist die tabelle 46:19 immer noch weg das nächste was auch noch wichtig ist ist natürlich das updaten von feldern jetzt stellen wir uns einmal vor andrew hat geheiratet und hat jetzt 46:30 einen anderen nachnamen dann müssen wir diesen natürlich updaten und dafür müssen wir erst einmal sagen welche tabelle wir updaten wollen das heißt ich 46:43 schreibe update employees und nun muss ich sagen was ich updaten möchte ich möchte beispielsweise mit z sagen dass ich last name updaten 46:56 möchte zu wie heißt er jetzt bilder und im nächsten schritt möchte ich jetzt natürlich noch sagen welches tätig updaten möchte weil ich möchte hier hin 47:05 nicht alle im dorf namens aus meinen mitarbeitern hierzu müller ändern sondern nur einen ganz bestimmten und deswegen brauche ich hier so wie sonst 47:15 auch nochmal wer und sage jetzt beispielsweise where id diese id ist immer das aller sicherste das ist der so genannte 47:23 primary key und da sagen wir jetzt employee id2 an dieser stelle schauen wir uns noch einmal an was ein sogenannter primary ist unsere daten 47:35 speichern wir ja immer in solch einer tabelle neben daten wie dem namen der adresse der stadt oder postleitzahl haben wir ganz links allerdings auch 47:43 immer diese customer id diese id ist eine zahl die ganz eindeutig jeder reihe zuzuweisen ist das heißt die reihe mit der customer die einst die gibt es nur 47:55 einmal die reihe mit der customer id2 gibt es auch nur einmal und das heißt wenn ich sagen möchte gibt mir die reihe 4 dann gibt es diese nur ein einziges 48:04 mal und die hat immer als customer nannte horn und als kontaktnahme thomas hd jeder eintrag in unserer datenbank hat also immer einen ganz eindeutigen 48:15 schlüsse womit wir den jeweiligen eintrag in der datenbank wiederfinden können und wenn ich jetzt das ganze ausführe steht hier humaid changes to 48:24 the database effect 1 ich klicke wieder auf employees und sehe dass der liebe herr jetzt andrew miller heißt 48:38 und jetzt kommt natürlich noch die preisfrage was ist denn wenn ich aus versehen etwas geändert habe naja dann hast du natürlich erst einmal pech weil 48:49 sql hat standardmäßig kein befehl um das ganze wieder rückgängig zu machen weil das ganze allerdings häufiger passiert ist ist so dass moderne datenbanksysteme 49:00 dafür natürlich einen mechanismus eingeführt haben der ist jedoch bei jedem datenbanksysteme ein bisschen anders das heißt je nachdem ob du jetzt 49:09 oracle verwendet ob du microsoft verbände ist ob du meist equal verwendest ob du maria db postgres verwendet ja da ist der mechanismus 49:17 immer ein bisschen anders aber normalerweise gibt es in jeder dieser datenbank systeme eine möglichkeit das ganze wieder ein schritt rückgängig zu 49:27 machen bei oracle zum beispiel ist es so dass man solche änderungen häufig auch noch kommen muss das heißt man macht eine änderung grundsätzlich immer erst 49:35 einmal auf einer kopie und diese kopie die kann man dann abspeichern so zu sagen und damit das original überschreiben außerdem ist es natürlich 49:44 so dass gerade in großen firmen oder wenn das ganze professionell gemacht wird häufiger natürlich das ganze gepäck ab wird ja dhs tabellen werden 49:53 regelmäßig gebäck abt und irgendwo anders gespeichert und das würde ich auch jedem der mit so einem datenbanksystem mit wichtigen daten 50:00 arbeitet auf jeden fall empfehlen wichtig ist informiert ich auf jeden fall vorher ob solch ein sicherheitsmechanismus beide einem 50:08 datenbanksystem existiert und ob diese auch ganz sicher aktiviert ist wird dem wissen was du in diesem video gelernt hast bist du nun in der lage wirklich 50:17 komplexe abfragen auf datenbanksystemen zu machen herzlichen glückwunsch ich versichere dir das ganze wird dich in deiner karriere und in deiner arbeit 50:26 sehr viel weiterbringen wenn du das eine oder andere mal mit datenbanksystemen arbeiten musst wenn du jetzt sagt okay das hat ihr mega spaß gemacht und 50:35 programmieren ist echt cool für dich ja weil es cool ist programmieren dann schaue ich doch gerne mal auf diesem kanal hier um denn hier geht es um 50:43 nichts anderes als um das thema wie man programmieren lernen und das auf dem einfachsten weg der möglich ist also wenn ich das interessiert szabo und 50:52 ansonsten würde ich sagen wir sehen uns wieder im nächsten video mach's gut dein yunus