Duomenų bazės - DonatasNoreika/python1lygis GitHub Wiki

Kas yra duomenų bazė

  • Duomenų bazė – organizuotas duomenų rinkinys (lentelėse)
  • Duomenų bazė yra failas, o ne programa
  • Reliacinė duomenų bazėje lentelės susijusios tarpusavyje ryšiais
  • Su duomenų baze komunikuojama užklausomis (taip kuriamos lentelės, stulpeliai, jų tipai, keičiami, trinami duomenys)

Duomenų bazių pavyzdžiai

  • Oracle
  • MySQL
  • Microsoft SQL Server
  • PostgreSQL
  • Microsoft Access
  • SQLite

Darbui su SQLite duomenų baze (be python) naudosime programą DB Browser for SQLite

Svarbiausios DB (SQL) užklausos

  • SELECT sakinys naudojamas įrašams iš vienos ar daugiau lentelių atrinkti.

  • FROM sakinyje nurodomos lentelės, iš kurių reikia išrinkti eilutes (sąryšiai gali būti nurodomi skirtingais JOIN variantais).

  • WHERE sakinyje nurodoma sąlyga, kurią turi tenkinti grąžinamos eilutės.

  • GROUP BY sąlygoje nurodoma, kad reikia grupuoti tam tikras eilutes. Grupuojant eilutes, dažniausiai naudojamos agregatinės funkcijos maksimalioms, vidutinėms ir panašioms reikšmėms išrinkti iš grupuotų eilučių.

  • ORDER BY sakiniu nurodoma viena ar daugiau rikiavimo sąlygų.

  • HAVING sakinyje nurodomas kriterijus, taikomas grupuojamoms eilutėms;

  • HAVING raktinis žodis gali būti naudojamas tik tais atvejais, jeigu užklausoje yra GROUP BY sakinys.

  • INSERT vartojamas naujų įrašų įterpimui į lentelę.

  • DELETE leidžia ištrinti įrašus iš lentelės.

  • UPDATE naudojamas pakeisti vieno ar daugiau įrašų reikšmes.

  • DISTINCT - skirtingų reikšmių išrinkimas.

  • DROP TABLE pašalina visą lentelę.

Kaip sukurti lentelę

CREATE TABLE darbuotojai (vardas text, pavarde text, atlyginimas integer)

Kaip įdėti įrašą (eilutę) į lentelę:

INSERT INTO darbuotojai (vardas, pavarde, atlyginimas) VALUES (naujasvardas, naujapavarde, naujasatlyginimas)

Kaip peržiūrėti įrašus lentelėje:

SELECT * FROM darbuotojai

arba

SELECT * FROM darbuotojai WHERE pavarde = ieskomapavarde

Kaip pakeisti įrašą lentelėje:

UPDATE darbuotojai SET atlyginimas = naujasatlyginimas WHERE pavarde = ieskomapavarde

Kaip ištrinti lentelės įrašą:

DELETE from darbuotojai WHERE vardas = ieskomasvardas AND pavarde = ieskomapavarde

Darbas su duomenų baze per Python

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("""CREATE TABLE IF NOT EXISTS
    darbuotojai (
    vardas text,
    pavarde text,
    atlyginimas integer
    )""")

Būdas be with:

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

c.execute("""CREATE TABLE darbuotojai (
            vardas text,
            pavarde text,
            atlyginimas integer
            )""")

conn.commit()
conn.close()

Kaip dirbti su laikina duomenų baze:

import sqlite3

conn = sqlite3.connect(":memory:")
c = conn.cursor()

with conn:
    c.execute("""CREATE TABLE IF NOT EXISTS
    asmenys (
    vardas text,
    pavarde text,
    amzius integer
    )""")

Kaip įdėti įrašą (eilutę) į lentelę:

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("INSERT INTO darbuotojai VALUES ('Domantas', 'Rutkauskas', 1500)")

    c.execute("INSERT INTO darbuotojai VALUES ('Rimas', 'Radzevičius', 1000)")

Kaip ieškoti įrašų lentelėje:

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("SELECT * From darbuotojai WHERE pavarde='Rutkauskas'")
    print(c.fetchall())

Kaip pakeisti įrašą lentelėje:

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("UPDATE darbuotojai SET atlyginimas=3000 WHERE pavarde='Radzevičius'")

    with conn:
        c.execute("SELECT * From darbuotojai")
        print(c.fetchall())

Kaip ištrinti įrašą (eilutę) lentelėje:

import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("DELETE from darbuotojai WHERE pavarde='Rutkauskas'")

with conn:
    c.execute("SELECT * From darbuotojai")
    print(c.fetchall())
import sqlite3

conn = sqlite3.connect("duomenu_baze.db")
c = conn.cursor()

with conn:
    c.execute("""CREATE TABLE IF NOT EXISTS
    darbuotojai (
    vardas text,
    pavarde text,
    atlyginimas integer
    )""")

while True:
    print("Įveskite darbuotoją")
    vardas = input("Vardas: ")
    pavarde = input("Pavarde:")
    atlyginimas = int(input("atlyginimas :"))

    with conn:
        c.execute(f"INSERT INTO darbuotojai VALUES ('{vardas}', '{pavarde}', {atlyginimas})")

    with conn:
        c.execute("SELECT * FROM darbuotojai")
        print(c.fetchall())

Užduotys

1 užduotis

Parsisiųskite lentelę, atsidarykite ją programoje DB Browser for SQLite ir skiltyje "Execute SQL" atlikite šias SQL užklausas:

  1. Išrinkite visus duomenis iš lentelės “DARBUOTOJAI”.
  2. Išrinkite visus duomenis iš stulpelio “GIMIMO_DATA” - lentelėje “DARBUOTOJAS”.
  3. Išrinkite visus duomenis iš stulpelių “VARDAS”,”PAVARDĖ”, “PAREIGOS” - lentelėje “DARBUOTOJAI”.
  4. Išrinkite skirtingas reikšmes iš stulpelio SKYRIUS_PAVADINIMAS - lentelėje “DARBUOTOJAI”.
  5. Išrinkite visus duomenis apie darbuotojus, kurie dirba Gamybos skyriuje.
  6. Išrinkite duomenis, kokias pareigas užima Giedrius
  7. Išrinkite visus duomenis apie darbuotojus, kurių gimimo data - 1986-09-19
  8. Išrinkite darbuotojų vardus, kurių pavardės yra Sabutis
  9. Išrinkite duomenis (vardą ir pavardę) apie programuotojus iš Gamybos skyriaus
  10. Įterpkite į lentelę “DARBUOTOJAI” naują darbuotoją, užpildydami visus reikiamus laukus (vardą, pavardę, gimimo datą, pareigas ir skyriaus pavadinimą).
  11. Įterpkite į lentelę “DARBUOTOJAI” naują darbuotoją, užpildydami tik laukus (vardą, pavardę, gimimo datą). Pareigas ir skyriaus pavadinimą palikite neužpildytus.
  12. Užpildykite likusius tuščius laukus “DARBUOTOJAI” lentelėje, jūsų prieš tai įterptame įraše. Priskirkite darbuotojui pareigas ir skyrių.
  13. Ištrinkite lentelės “DARBUOTOJAI” įrašą, kurio gimimo data yra tokia, kurią jūs sukūrėte.
  14. Įterpkite, du darbuotojus, pavarde Antanaitis kurių pareigos būtų “Programuotojas”.
  15. Pakeiskite, abiejų Antanaičių pareigas į “Testuotojas” vienu sakiniu.
  16. Suskaičiuokite, kiek įmonėje dirba Testuotojų.

2 užduotis

  • Sukurti programą, kuri:
  • Sukurtų duomenų bazę
  • Sukurtų lentelę paskaitos su stulpeliais pavadinimas, destytojas ir trukme
  • Sukurtų tris paskaitas: ('Vadyba', 'Domantas', 40), ('Python', 'Donatas', 80) ir ('Java', 'Tomas', 80)
  • Atspausdintų tik tas paskaitas, kurių trukmė didesnė už 50
  • Atnaujintų paskaitos „Python“ pavadinimą į „Python programavimas“
  • Ištrintų paskaitą, kurios dėstytojas – „Tomas“
  • Atspausdintų visas paskaitas (visą lentelę)

Atsakymai 1

Atsakymai 2