Kuinka harjoitella SQL:ää ja Pythonia yhdessä realististen ongelmien kanssa

Viimeisin päivitys: 05/12/2026
Kirjoittaja: C SourceTrail
  • Käytä SQLitea ja Pythonia paikallisesti luodaksesi realistisen SQL-harjoitteluympäristön ilman täyttä tietovarastoa tai Spark-klusteria.
  • Hallitse ensin SQL-ydintaidot: suodattaminen WHERE-operaattorilla, useiden taulukoiden yhdistäminen ja tietojen koostaminen GROUP BY- ja HAVING-operaattorien avulla.
  • Normalisoi skeemat useiksi taulukoiksi ensisijaisilla ja viiteavaimilla ja käytä sitten JOIN-operaatioita suhteiden rekonstruointiin analyyseissäsi.
  • Yhdistä paikallista harjoittelua interaktiivisiin SQL-alustoihin harjoitellaksesi haastattelutyyppisiä kysymyksiä ja palauttaaksesi itseluottamuksen nykyaikaisilla datatyökaluilla.

SQL- ja Python-harjoitustehtävät

Jos yrität palata SQL:n ja Pythonin pariin muutaman vuoden tauon jälkeen, on täysin normaalia tuntea olosi eksyneeksi. – varsinkin jos edellisessä työssäsi käytit omaa työkalua ja mukavia Databricks-muistikirjoja, joita sinulla ei enää ole. Nykyaikaiset työpaikkailmoitukset, jotka vaativat Pythonia, SQL:ää ja jopa PySparkia, voivat näyttää pelottavilta, kun jokainen opas alkaa esimerkiksi sanoilla ”lataa vaatimusdatasi tietovarastoosi” ja ajattelet: ”Juuri sitä minulla ei ole.”

Hyvä uutinen on, että voit toistaa suurimman osan oppimiskokemuksesta omalla kannettavalla tietokoneellasi. käyttämällä ilmaisia ​​työkaluja, pieniä esimerkkidatajoukkoja ja jäsenneltyä harjoitustehtäväjoukkoa. Tässä oppaassa käymme läpi selkokielellä, miten rakennetaan realistinen paikallinen ympäristö, miten SQL toimii (peruskyselyistä JOIN-kyselyihin ja aggregointiin) ja miten nämä SQL-kyselyt paketoidaan Pythoniin, jotta voit harjoitella juuri sellaisia ​​tehtäviä, joita kohtaat nykyaikaisissa datatyötehtävissä.

Yksinkertaisen paikallisen harjoitusympäristön rakentaminen SQLite:n ja Pythonin avulla

Et tarvitse täysimittaista tietovarastoa tai Spark-klusteria harjoitellaksesi SQL:ää ja PythoniaOppimiseen ja haastatteluihin valmistautumiseen kevyt, sulautettu tietokanta, kuten SQLite, on enemmän kuin riittävä. SQLite tallentaa kaikki tietonsa yhteen tiedostoon levylle, mikä tekee siitä täydellisen leluprojekteihin, prototyyppeihin ja opetusharjoituksiin.

Käsitteellisesti SQLite-tietokanta näyttää paljon taulukkolaskentaohjelmalta, jossa on useita arkkejajokainen arkki on taulukko, jokainen rivi on ennätys, ja jokainen sarake on alaRelaatiotietokantojen ammattikielessä taulukoita kutsutaan joskus "relaatioiksi", rivejä "tupleiksi" ja sarakkeita "attribuuteiksi", mutta käytännön työssä voit tyytyväisenä pitäytyä arkipäiväisissä termeissä taulukko, rivi ja sarake.

Pythonissa on sisäänrakennettu SQLite-ajuri nimeltä sqlite3, mikä tarkoittaa, että sinun ei tarvitse asentaa erillistä tietokantapalvelinta. Python-skriptisi avaa yhteyden .sqlite tiedosto (luomalla sen, jos sitä ei ole olemassa), hanki kohdistin objekti (hyvin samanlainen kuin tiedostokahva) ja lähettää sitten SQL-komentoja kyseisen kohdistimen kautta käyttämällä execute(). Katso meidän SQLite SELECT ja WHERE opas käytännön esimerkeistä datan lukemisesta ja suodattamisesta.

SQL- ja Pythonin ongelmat
Aiheeseen liittyvä artikkeli:
Usein esiintyviä SQL- ja Python-ongelmia ja niiden käsittely

Vaikka tämä artikkeli keskittyy SQLiten ohjaamiseen Pythonista, saatavilla on myös kätevä graafinen työkalu nimeltä "Database Browser for SQLite". (joskus jaettuna nimellä DB Browser for SQLite). Sen avulla voit tarkastella taulukoita visuaalisesti, lisätä tai muokata muutamia rivejä käsin ja suorittaa yksinkertaisia ​​SQL-lauseita. Se on kuin tekstieditori tietokantatiedostoille: nopeat manuaaliset muutokset ovat helpompia graafisessa käyttöliittymässä, mutta kaikki toistuvat tai monimutkaiset asiat on parempi skriptata Pythonilla.

Relaatiotietokannat ovat jäykempiä kuin Pythonin listat tai sanakirjat: ne vaativat määriteltyä skeemaaKun luot taulukon, sinun on määriteltävä sarakenimet ja odotetut tietotyypit (teksti, kokonaisluku, päivämäärä/kellonaika jne.). SQLite tallentaa ja indeksoi tiedot tavalla, joka pitää haut tehokkaina, vaikka tietojoukko kasvaisi muistin mukavuuden ulkopuolella. Käytännön oppimispolkuja ja käytännön esimerkkejä varten katso SQL-tietoanalyysi.

Taulukoiden luominen ja tietojen lisääminen SQL:llä ja Pythonilla

Harjoittelun aloittamiseksi tarvitset ensin taulukon – ajattele sitä tietojesi muodon suunnittelunaOletetaan, että haluat pienen musiikkikirjastotaulukon. Käyttämällä Pythonin sqlite3 moduulissa voit muodostaa yhteyden tietokantatiedostoon, poistaa taulukon vanhan version, jos sellainen on olemassa, ja luoda sitten uuden taulukon, jossa on selkeästi tyypitetyt sarakkeet.

Näin tuo työnkulku näyttää käsitteellisesti Pythonissa: sinä soitat sqlite3.connect('music.sqlite') avataksesi tai luodaksesi tietokantatiedoston ja kutsu sitten conn.cursor() saadaksesi kohdistimen. Kohdistimen kautta voit suorittaa SQL-komentoja, kuten DROP TABLE IF EXISTS Songs tyhjentääksesi aiemmat skeemat, ja sen jälkeen CREATE TABLE Songs (title TEXT, plays INTEGER) määrittääksesi uuden taulukon, jossa on kaksi saraketta.

Kun taulukko on luotu, vaihdat DDL:stä (Data Definition Language) DML:ään (Data Manipulation Language) seuraavasti: INSERT lausuntojaPythonissa tulisi aina käyttää parametrisoituja kyselyitä: write INSERT INTO Songs (title, plays) VALUES (?, ?) ja välitä tuple kuten ('Thunderstruck', 20) toisena argumenttina execute()Kysymysmerkit ovat paikkamerkkejä, jotka Python korvaa turvallisesti, auttaen sinua välttämään SQL-injektioongelmia ja bugien lainaamista.

Lisäysten tai päivitysten suorittamisen jälkeen sinun on soitettava conn.commit() tyhjentääksesi muutokset levylleEnnen commit-toimintoa toiminnot tallentuvat vain tapahtumapuskuriin. Tämä eroaa yksinkertaisista tiedostojen kirjoittamisista, ja se on yksi tärkeimmistä tavoista, jotka kannattaa rakentaa varhaisessa vaiheessa: kysely, muokkaus ja sitten commit.

Tietojen lukemiseen takaisin käytetään SELECT lauseke ja iteroi kohdistimen yli. Esimerkiksi, SELECT title, plays FROM Songs suoratoistaa jokaisen rivin Python-tuplena, kuten ('Thunderstruck', 20)Kohdistin ei lataa kaikkia tuloksia kerralla; sen sijaan se hakee rivejä laiskasti, mikä on hyödyllistä, kun lopulta käsitellään suurempia tietojoukkoja.

Ydin SQL-kyselyelementit ja suodatus WHERE-funktiolla

Jokainen SQL-kysely rakentuu pienelle joukolle lausekkeita, jotka esiintyvät vakiojärjestyksessä: SELECT, FROM, WHERE, GROUP BY, HAVINGja ORDER BYAinakin määrität haluamasi sarakkeet (SELECT) ja mistä taulukosta (FROM). Valinnaiset lausekkeet sitten tarkentavat, kokoavat, suodattavat koostetut tulokset ja lajittelevat tulosteen.

WHERE lauseke suodattaa rivit ennen ryhmittelyä tai yhdistämistäNumeerisille sarakkeille voit käyttää vertailuoperaattoreita, kuten =, != (Tai <>), >, <, >=, <=Tekstipalstat tukevat näitä sekä kuvioiden yhteensovittamista LIKE ja jäsenyystarkastukset kautta INPäivämäärä/aika-arvot tukevat samoja relaatiovertailuja, ja usein näkee alueita ilmaistuna muodossa BETWEEN.

Null-arvojen käsittely SQL:ssä on niin omituista, että se ansaitsee erityistä huomiota.Säännölliset vertailut, kuten = ja != älä käyttäydy niin kuin voisit odottaa NULL, joten SQL tarjoaa IS NULL ja IS NOT NULL tarkistamaan puuttuvat arvot. Totuusarvosarakkeet toimivat yleensä = ja !=, mutta tarvitset silti IS NULL kun itse totuusarvo voi puuttua.

Kun yhdistät useita ehtoja, muista, että AND ja OR noudattaa etusijasääntöjäJos kirjoitat age < 5 OR age > 10 AND breed = 'Ragdoll'SQL arvioi AND ensin. Ilmaistaksesi ”alle 5-vuotiaat tai yli 10-vuotiaat ragdoll-kissat”, sinun tulee käyttää sulkeita: (age < 5 OR age > 10) AND breed = 'Ragdoll'Näiden loogisten yhdistelmien kanssa tottuminen on ratkaisevan tärkeää tosielämän analytiikkatyössä.

Kuvioiden yhteensovittaminen LIKE antaa sinun etsiä merkkijonoja, jotka alkavat, loppuvat tai sisältävät tiettyjä osiaProsenttimerkki % on jokerimerkki mille tahansa merkkijonolle, joten breed LIKE 'R%' löytää rodut, jotka alkavat R-kirjaimella fav_toy LIKE 'ball%' löytää leluja, joiden nimi alkaa sanalla ”pallo”, ja coloration LIKE '%m' löytää värikuvioita, jotka päättyvät kirjaimeen ”m”. Yhdistettynä AND/OR, tästä tulee tehokas tekstin suodatustyökalupakki.

Yhden taulukon kyselyiden harjoittelu leluaineistolla

Hyödyllinen tapa rakentaa lihasmuistia on tallentaa pieni skeema mieleesi ja ratkaista useita kyselyitä sen pohjalta.. Kuvittele a cat taulukko, jossa on sarakkeita, kuten id, name, breed, coloration, age, sexja fav_toyTämä antaa sinulle riittävästi vaihtelua – tekstiä, numeroita, yksinkertaisia ​​kategorioita – harjoitellaksesi useimpia peruskyselymalleja.

Boolean-tyyppisissä tarkistuksissa suodatetaan usein yhden sarakkeen perusteella ja sitten kerrostetaan lisäehtojaJos haluat listata "tylsät" uroskissoja, joilla ei ole kirjattua lempilelua, valitse name jossa sex = 'M' ja fav_toy IS NULLTämä havainnollistaa, kuinka null-tarkistukset toimivat yhdessä suorien vertailujen kanssa tietyn rivien osajoukon eristämiseksi.

Kohdistaaksesi tiettyjä rotuja tai sulkeaksesi ne pois, yhdistät tasa-arvon loogiseen negaatioon.Vain tietyn ikäisten ragdoll-kissojen valitseminen käyttää breed = 'Ragdoll'; persialaisia ​​ja siamilaisia ​​lukuun ottamatta se voisi näyttää breed NOT LIKE 'Persian' AND breed NOT LIKE 'Siamese'Vaikka jotkin tietokannat tukevat NOT IN ('Persian', 'Siamese'), eksplisiittisen kaavan harjoittelu auttaa sinua vahvistamaan ymmärrystäsi NOT ja LIKE.

Harjoitukset, kuten ”naaraskissat, jotka rakastavat leikkikaluja eivätkä ole persialaisia ​​tai siamilaisia”, pakottavat sinut yhdistämään tekstisuodattimia, tasa-arvoja ja loogisia operaattoreitaValitsisit id, name, breed, coloration ja rajoita rivejä käyttämällä sex = 'F', fav_toy = 'teaser'ja yhdistetty ehto, joka sulkee pois ei-toivotut rodut. Sulkeiden huomioiminen varmistaa, että kaikkia aliehtoja sovelletaan aiotussa yhdistelmässä.

Kun olet tottunut näihin esimerkkeihin raa'alla SQL:llä, toteuta ne uudelleen Pythonin avulla käyttämällä parametrisoituja kyselyitä.Kirjoita lyhyitä käsikirjoituksia, joissa kysytään rotua, vähimmäisikää tai lelun tyyppiä. input(), kytke ne WHERE lausekkeita ja tulosta tulokset. Tämä on juuri se silta kyselyjen kirjoittamisen ja todellisen sovelluskoodin välillä, jota monet junioritason dataroolit odottavat.

SQL-liitosten ymmärtäminen ja harjoittelu

Heti kun pääset lelu-ongelmien yli, liityt jatkuvasti useisiin pöytiin. JOIN-operaatioiden avulla yhdistät toisiinsa liittyviä tietojoukkoja: asiakkaita tilauksiin, taiteilijoita taideteoksiin, pelejä yrityksiin ja niin edelleen. SQL:ssä kuvaat, mitkä sarakkeet tulisi saada vastaamaan taulukoiden välillä, ja tietokantamoottori yhdistää rivit yhdistetyksi tulosjoukoksi.

Haastatteluissa ja oikeissa projekteissa kohtaat neljä ensisijaista liittymistyyppiä: INNER JOIN (usein kirjoitettu vain JOIN), LEFT JOIN, RIGHT JOINja FULL OUTER JOINSisäinen liitos palauttaa vain rivit, joilla molemmilla taulukoilla on vastaavat avaimet; vasen liitos säilyttää kaikki vasemman taulukon rivit ja täyttää NULLs, kun oikealla taulukolla ei ole vastinetta; oikea liitos tekee symmetrisen asian; ja täysi ulkoliitos palauttaa jokaisen rivin molemmilta puolilta, mahdollisuuksien mukaan vastinetta käyttäen NULL missä ei.

Ajatella LEFT JOIN ja RIGHT JOIN "luota tähän puoleen enemmän" -operaatioinaVasemmassa liitoksessa vasen taulukko on ensisijainen totuuden lähde: jokainen sen rivi esiintyy tulosteessa ainakin kerran, vaikka oikea taulukko ei lisäisi mitään. Täydessä liitoksessa kumpikaan osapuoli ei ole etuoikeutettu – yksinkertaisesti yhdistät kaikki molempien taulukoiden avaimet ja tasaat ne päällekkäisyyksistä.

Jotta usean taulukon kyselyt pysyisivät luettavina, anna taulukoillesi aina alias.Kirjoittamisen sijaan SELECT artist.name toistuvasti, kirjoita FROM artist AS a ja sitten viittaa sarakkeisiin muodossa a.name. Samalla lailla, piece_of_art voi tulla poaja museum voi olla mKun kyselysi kasvaa kolmeen tai useampaan liitokseen, hyvät aliakset ovat selkeyden ja kaaoksen välinen ero.

Klassinen harjoitusjärjestely käyttää kolmea taulukkoa: artist, museumja piece_of_art. artist pöytä saattaa pitää id, name, birth_year, death_year ja ensisijainen ala, kuten vesiväri tai kuvanveisto. museum pöytäkaupat id, name ja country. piece_of_art pöytätelineet id, name, artist_id ja museum_idNuo kaksi viimeistä saraketta ovat viiteavaimia, jotka linkittävät jokaisen taideteoksen sen tekijään ja sijaintiin.

Tuon skeeman avulla voit harjoitella sisäliitoksia, vasemmanpuoleisia liitoksia ja ehdollisia suodattimia.Esimerkiksi jos haluat listata vuoden 1800 jälkeen syntyneitä taiteilijoita, jotka elivät yli 50 vuotta, heidän teostensa nimien rinnalla, yhdistäisit artist ja piece_of_art on artist.id = piece_of_art.artist_id ja suodata sitten death_year - birth_year > 50 ja birth_year > 1800. Valittujen sarakkeiden alias artist_name ja piece_name Selvyydeksi.

Nähdäksesi kaikki taideteokset yhdessä museoiden nimien ja maiden kanssa – mukaan lukien "kadonneet" teokset, joilla ei ole museotunnusta – käyttäisit jotakin LEFT JOIN alkaen piece_of_art että museum on museum_idTällä tavoin taideteokset, joihin ei liity museota, näkyvät edelleen tuloksessa, ja NULL museon sarakkeissa. Rivien suodattaminen, joissa artist_id IS NULL antaa sinun tunnistaa tuntemattomien taiteilijoiden teoksia ja silti liittyä niitä säilyttäviin museoihin.

Vaativammissa harjoituksissa sinun on liityttävä kolmeen pöytään samanaikaisestiJos haluat listata jokaisen taideteoksen sekä taiteilijan että museon nimellä, liityt museum että piece_of_art on museum.id = piece_of_art.museum_id, liity sitten artist on artist.id = piece_of_art.artist_idKäyttämällä tavallista JOIN (sisäinen liitos) poistaa tarkoituksella taideteokset, joista joko puuttuu taiteilija tai museo, antaen käsityksen siitä, miten liitostyyppi vaikuttaa rivien määrään.

Aggregointi, GROUP BY ja HAVING käytännössä

Kun osaat hakea ja yhdistää tietoja, seuraava suuri taito on niiden yhteenveto.Yhdistelmätoiminnot, kuten SUM(), AVG(), COUNT(), MAX()ja MIN() laske mittareita rivijoukkojen yli. GROUP BY jakaa tietojoukkosi ryhmiin ja soveltaa näitä funktioita kunkin ryhmän sisällä – esimerkiksi yksi ryhmä vuotta, yritystä tai taiteilijaa kohden. Jos haluat harjoitella näitä käsitteitä jäsennellyillä kursseilla, katso kattava SQL-kurssi.

Kuvittele yksinkertainen sales_table sarakkeilla year, monthja salesTavallinen SELECT SUM(sales) AS total_sales FROM sales_table saat kaikkien rivien kokonaissumman. GROUP BY year muuttaa kysymystä: nyt kysyt kokonaismyyntiä vuodessa yhden kokonaisluvun sijaan.

Keskeinen sääntö on, että jokainen ei-aggregoitu sarake lomakkeessasi SELECT täytyy näkyä GROUP BY. Jos valitset year ja SUM(sales), ryhmittelet year. Jos valitset year ja month yhdessä aggregaattien kanssa, sitten ryhmittelet molempien mukaan year ja monthKäsitteellisesti ryhmiteltyjen sarakkeiden erilliset yhdistelmät määrittelevät ryhmät.

WHERE ja HAVING ovat molemmat suodattimia, mutta ne toimivat eri vaiheissa. WHERE suodattaa raakarivit ennen ryhmittelyä tai yhdistämistä. HAVING suodattaa ryhmitellyt tulokset käyttämällä koostelausekkeita. Voit esimerkiksi WHERE production_year BETWEEN 2000 AND 2009 ja sitten HAVING SUM(revenue) > 4000000 pitääkseen vain yritykset, joiden "hyvät pelit" tuottivat yli neljä miljoonaa liikevaihtoa.

Realistisempi harjoituskaavio on games taulukko sarakkeilla, kuten id, title, company, type, production_year, system, production_cost, revenueja ratingTämän yhden taulukon avulla voit harjoitella keskiarvojen, lukumäärien, yhteenlaskujen, ryhmittelyn ja sijoittelun harjoituksia – analytiikka-SQL:n peruspilareita.

Esimerkiksi laskeakseen vuosina 2010–2015 julkaistujen, yli 7-ikäisten pelien keskimääräiset tuotantokustannukset, valitsisit AVG(production_cost) ja rajoita rivejä WHERE production_year BETWEEN 2010 AND 2015 AND rating > 7Se on klassinen haastattelukysymys, ja voit helposti upottaa sen Pythoniin ja tulostaa tuloksena olevan yksittäisen luvun.

Voit myös tuottaa vuositason tilastoja suoraan samasta games taulukkoRyhmittele production_year, laske sitten COUNT(*) AS count, AVG(production_cost) AS avg_costja AVG(revenue) AS avg_revenueTämän tyyppinen kysely tarjoaa sinulle kompaktin aikasarjanäkymän, joka on erittäin yleinen BI-koontinäytöissä ja raportointityökaluissa.

Voit järjestää yritykset bruttovoiton perusteella kaikilta vuosilta käyttämällä aggregaattia companyKätevä kuvio on SELECT company, SUM(revenue - production_cost) AS gross_profit_sum FROM games GROUP BY 1 ORDER BY 2 DESC. Tässä GROUP BY 1 ja ORDER BY 2 käytä sarakesijainteja SELECT lista, joka voi pitää asiat ytimekkäinä, mutta jota on käytettävä huolellisesti, jotta kyselyitä ei rikota järjestämällä sarakkeita uudelleen myöhemmin.

Monimutkaisemmat kehotteet yhdistävät suodattimet, ryhmittely- ja jälkikoostesuodattimetOletetaan, että määrittelet "hyvät pelit" peleiksi, jotka on tuotettu vuosien 2000 ja 2009 välillä, joiden luokitus on yli 6 ja liikevaihto suurempi kuin tuotantokustannukset. Haluat kunkin yrityksen osalta tällaisten pelien lukumäärän ja niiden kokonaisliikevaihdon, mutta vain niiden yritysten osalta, joiden hyvien pelien liikevaihto ylittää 4 000 000. Suodattaisit rivit seuraavasti: WHERE on production_year, ratingja kannattavuus, ryhmittele company, laske COUNT(company) ja SUM(revenue)ja käytä sitten HAVING SUM(revenue) > 4000000Tämä yksi kysely kuvaa useimmat tosielämän henkiset vaiheet, joita kohtaat analytiikkatehtävissä.

Datan mallintaminen useilla taulukoilla ja avaimilla

Yhden taulukon suunnittelulla pääsee pitkälle, mutta relaatiotietokannat loistavat, kun normalisoit tiedot useissa taulukoissaNormalisointi on prosessi, jossa poistetaan tarpeeton tallennustila ja suhteet esitetään avainten avulla. Tämä pitää tietokannan pienempänä, nopeampana ja vähemmän virhealttiina.

Yksinkertainen mutta opettava esimerkki tulee Twitterin kaltaisten sosiaalisten graafien indeksoinnista.Oletetaan, että haluat seurata käyttäjätilejä ja niiden välisiä "seuraa"-suhteita. Yksi helppo lähestymistapa olisi yksi taulukko, jossa jokainen rivi kopioi sekä seuraajien että seurattavien nimet tekstinä. Tämä johtaa nopeasti voimakkaaseen toistoon ja epäjohdonmukaiseen kirjoitusasuun.

Sen sijaan jaat asiat osiin People pöytä ja Follows taulukko. People voi olla kokonaisluku id ensisijaisena avaimena, ainutlaatuisena name (käyttäjätunnus tai käyttäjätunnus) ja retrieved lippu, joka ilmaisee, oletko jo indeksoinut kyseisen tilin ystävälistan. Follows sisältää kokonaislukupareja from_id ja to_id, joka edustaa ohjattuja yhteyksiä käyttäjältä toiselle.

Tämän mallin kolme keskeistä käsitettä muodostavat: loogiset avaimet, ensisijaiset avaimet ja viiteavaimetLooginen avain on se, mitä ulkomaailma käyttää viitatessaan tietueeseen – tässä tapauksessa Twitter-tunniste kohdassa nameEnsisijainen avain on yleensä tietokannan luoma kokonaisluku (id), joka yksilöi jokaisen rivin ja on edullinen indeksoida ja vertailla. Viiteavain on kokonaisluku, joka osoittaa toisen taulukon ensisijaiseen avaimeen – from_id ja to_id vuonna Follows taulukko ovat viiteavaimia, jotka viittaavat People.id.

Tietojen laadun varmistamiseksi määrität rajoituksia taulukkomääritelmissäsi.. Esimerkiksi, name TEXT UNIQUE in People varmistaa, ettet voi vahingossa lisätä kahta riviä samalla kahvalla. UNIQUE(from_id, to_id) rajoitus Follows estää sinua tallentamasta samaa seurantareunaa useammin kuin kerran. Nämä rajoitteet toimivat myös turvaverkkoina, kun aloitat upsert-logiikan kirjoittamisen Pythonissa.

Pythonin sqlite3 moduuli, yleinen kaava on käyttää INSERT OR IGNORE kunnioittaa noita rajoituksia arvokkaastiJos yrität asettaa name joka on jo olemassa, SQLite ohittaa operaation hiljaisesti virheen sijaan. Voit sitten tarkistaa cursor.rowcount nähdäksesi, onko rivi todella lisätty, ja luottaa siihen cursor.lastrowid löytääkseen määrätyn id uusille käyttäjille.

Kun koodisi saa uuden näyttönimen, sen tulisi ensin yrittää etsiä vastaavaa id. Jos SELECT id FROM People WHERE name = ? palauttaa rivin, käytät kyseistä kokonaislukua uudelleen. Jos ei, lisäät nimen ja retrieved = 0, vahvista ja lue sitten lastrowidTuo ”etsi tai lisää” -malli on monien datan sisäänsyöttöskriptien ydin.

Kun sekä seuraajan että seurattavan tunnukset ovat tiedossa, suhteen kirjaaminen Follows on vain toinen INSERT OR IGNORE. teidän UNIQUE(from_id, to_id) rajoitus käsittelee kaksoiskappaleita, ja voit keskittyä seuraavaksi indeksoitavien profiilien päättämiseen rivien deduplikaation mikrohallinnan sijaan.

JOIN-funktion käyttö suhteiden rekonstruoimiseen normalisoiduista taulukoista

Normalisoidut skeemat korvaavat redundanssin epäsuoralla funktiolla: tallennat kokonaislukuja toistuvien merkkijonojen sijaan, mutta nyt sinun on yhdistettävä taulukoita kokonaiskuvan rekonstruoimiseksi.Juuri tätä SQL JOIN on suunniteltu, ja kun siihen on tottunut, JOIN-painotteiset kyselyt tuntuvat täysin luonnollisilta.

Jos haluat nähdä sosiaalisen graafin esimerkissä, kuka käyttää id = 2 seuraa, liittyisit mukaan Follows että People kohteen puolella. Käsitteellisesti juokset SELECT * FROM Follows JOIN People ON Follows.to_id = People.id WHERE Follows.from_id = 2Tämä tuottaa yhdistettyjä rivejä, jotka sisältävät sekä numeerisen reunan että ihmisen luettavissa olevan nimen jokaiselle seuraajalle.

Jokainen tuloksen rivi on "meta-rivi", joka yhdistää molempien taulukoiden sarakkeet.Kaksi ensimmäistä saraketta saattavat olla (from_id, to_id) alkaen Follows, kun taas seuraavat sarakkeet kuuluvat People - Kuten (id, name, retrieved). Koska JOIN ehto pakottaa Follows.to_id = People.id, voit nähdä kyseisen suhteen eksplisiittisesti: kunkin rivin toinen ja kolmas sarake vastaavat toisiaan.

Sama kaava ulottuu luonnollisesti useampiin pöytiinNäit sen jo artist, piece_of_artja museum, ja Twitter-indeksoija havainnollistaa sitä People ja FollowsMonimutkaisemmissa analyyttisissä prosesseissa voit yhdistää faktataulukoita (tapahtumat, tilaukset) useisiin ulottuvuustaulukoihin (käyttäjät, tuotteet, kampanjat) vastataksesi monitahoisiin kysymyksiin.

Koodia debugattaessa tai skeeman yhteensopivuutta tutkittaessa työnkulku, jossa käytetään Pythonia ja sitten DB Browser for SQLite -selaimella tarkastetaan, on erittäin tehokas.Suorita komentosarjasi tietokannan täyttämiseksi, sulje kaikki tiedostoa lukitsevat graafisen käyttöliittymän esiintymät ja avaa sitten .sqlite tiedosto selaimessa. Sieltä voit tarkastella kunkin taulukon sisältöä ja suorittaa ad-hoc-komennon SELECT kyselyitä oletustesi varmentamiseksi.

Yksi varoitus: SQLite käyttää tiedostolukkoja, joten jos tietokantaselaimessa on tietokanta auki muokkaustilassa, Python-skriptisi ei välttämättä muodosta yhteyttä tai commit-tiedostoa.Korjaus on sulkea tietokanta graafisessa käyttöliittymässä (tai poistua kokonaan selaimesta) ennen Python-koodin suorittamista uudelleen. Tietokantatiedoston lukitsevien työkalujen sulkeminen estää sinua salaperäisiltä "tietokanta on lukittu" -virheiltä.

Yhdistämällä nämä tekniikat – skeemasuunnittelu, rajoitteet, parametrisoidut kyselyt Pythonissa, JOIN-käskyt, GROUP BY ja HAVING – saat tehokkaan paikallisen laboratorion. ...täsmälleen sellaisen SQL- ja Python-työn harjoitteluun, jota tulet tekemään työssäsi. Pelkän SQLiten ja muutaman hyvin jäsennellyn esimerkkitaulukon avulla voit harjoitella haastattelutyyppisiä kysymyksiä, prototyyppisiä analyyttisiä logiikoita ja palauttaa itseluottamuksesi nykyaikaisilla datatyökaluilla.

Mihin DataLemurin kaltaiset alustat ja interaktiiviset kurssit sopivat

Paikallisen käytännön lisäksi interaktiiviset alustat voivat tarjota sinulle ohjatumman kokemuksen välittömällä palautteella.Työkalut, jotka ovat syntyneet käytännön kokemuksesta alan toimialalla – esimerkiksi alustat, jotka ovat luoneet Facebookin ja Googlen entisiä datainsinöörejä, jotka kirjoittivat päivänsä SQL:ää ja Pythonia kirjoittaen ja A/B-testejä ajaen – keskittyvät usein sisältönsä aitojen haastattelukysymysten ja analytiikkaskenaarioiden ympärille.

Kirjat, jotka käsittelevät tilastoja, koneoppimista ja liiketoimintaintuitiota datahaastatteluissa, ovat loistavia teorian oppiaineita., mutta ne eivät aina tarjoa sitä käytännönläheistä SQL-kenttää, jota monet oppijat kaipaavat. Juuri tätä aukkoa jotkut nykyaikaiset työkalut pyrkivät täyttämään: ne pakkaavat satoja haastattelutyyppisiä kysymyksiä selaimessa käytettävään SQL- ja analytiikkaympäristöön, jotta voit suorittaa, muokata ja suorittaa kyselyitä uudelleen huolehtimatta paikallisista asetuksista. Voit myös kokeilla sovellettuja esimerkkejä, kuten asiakasvaihtuvuuden riskinarviointi yhdistää SQL koneoppimisen perustyönkulkuihin.

Löydät myös interaktiivisia SQL-kursseja, jotka peilaavat täällä käsiteltyjä aiheita.: yhden taulukon kyselyt, joissa on SELECT ja WHERE, kahden tai kolmen taulukon liitokset, aggregointi ja ryhmittely, alikyselyt ja paljon muuta. Monet näistä kursseista perustuvat realistisiin tietojoukkoihin – ajattele pelejä, museoita tai transaktiomyyntiä – jotta kysymykset tuntuvat aidoilta liiketoimintaongelmilta keinotekoisten pulmien sijaan.

Jos PySparkin, DuckDB:n tai dbt:n kaltaisten työkalujen dokumentaatio tuntuu ylivoimaiselta, on täysin järkevää lykätä niiden lukemista, kunnes SQL-perusteet tuntuvat vahvoilta.Keskittymällä ensin SQLiteen ja Pythoniin voit sisäistää ydinkyselymallit ilman, että sinun tarvitsee taistella klusterikonfiguraatiosta tai pilvikäyttöoikeuksista. Kun perusteet ovat hallussa, PySparkin oppimisesta tulee enemmän hajautettua suoritusta kuin uusien kyselykäsitteiden oppimista.

Viime kädessä yksinkertaisen paikallisen asetelman, strukturoitujen harjoitustehtävien ja satunnaisen interaktiivisten alustojen käytön yhdistelmä antaa sinulle parasta kaikista maailmoista: täyden hallinnan ympäristöstäsi, vahvan käsitteellisen pohjan ja kokemusta huipputyönantajien rakastamista kysymystyyleistä. Säästäväisen harjoittelun myötä aiemmin pelottavasta SQL:n, Pythonin ja datatekniikan työkalujen yhdistelmästä tulee tuttu, jopa nautinnollinen työkalupakki, jota voit käyttää luottavaisin mielin uusissa rooleissa.

Kaiken kaikkiaan polkusi eteenpäin on selvä: luo SQLite-tietokanta Pythonilla, suunnittele muutama realistinen taulukko, harjoittele SQL-perus- ja keskitason malleja (suodattimet, liitokset, aggregointi, ryhmittely, HAVING), kääri kyselyt Python-skripteihin ja täydennä valinnaisesti oppimaasi interaktiivisilla SQL-alustoilla, jotka ovat rakentaneet ammattilaiset, jotka ovat olleet juuri siinä pisteessä kuin sinä nyt.; näin tekemällä rakennat tekniset vaistosi uudelleen, vähennät nykyaikaisten datapinojen aiheuttamaa ahdistusta ja olet valmis käsittelemään nykypäivän dataroolien SQL- ja Python-vaatimuksia.

Related viestiä: