Dbvs II paskaita 2015 09 18 dr. R. Pranaitis 1 VU KF IKI 1.

Slides:



Advertisements
Similar presentations
1 Pertemuan 11 SQL Data Definition Matakuliah: >/ > Tahun: > Versi: >
Advertisements

© Pearson Education Limited, Chapter 3 SQL and QBE Transparencies.
CSC 240 (Blum)1 Data Definition Language Based on Chapter 6 of Database Systems (Connolly and Begg)
1 Chapter 2 Database Environment Transparencies © Pearson Education Limited 1995, 2005.
Agenda TMA01 M876 Block 3 – Using SQL Structured Query Language - SQL A non-procedural language to –Create database and relation structures. –Perform.
SQL: Overview SQL Overview © Pearson Education Limited 1995, 2005.
SQL: Data Manipulation Presented by Mary Choi For CS157B Dr. Sin Min Lee.
Chapter 7 Introduction to SQL(Wk11_12) © Pearson Education Limited 1995, 2005.
Chapter 7 SQL: Data Manipulation Chapter #6 in the textbook Pearson Education © 2009.
Chapter 7 SQL: Data Definition Pearson Education © 2009.
Database Fundamental & Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
Chapter Name SQL: Data Definition
5. Simple SQL using Oracle1 Simple SQL using Oracle 5. Working with Tables: Data management and Retrieval 6. Working with Tables: Functions and Grouping.
Lietuvos vardo kilmė Žmogus, nepažįstantis savo tautos namų – Tėvynės žemės, kurioje nuo seno tėvai ir protėviai gyveno, - nėra savo krašto pilietis! Įsisąmoninkime.
Muzikos ženklų karuselė
Drill Consider the following tables with the following fields: Student: FName, LName, StudentID, Age, Yr, Course Grades: ID, P1, P2, P3 1.Display the.
SQL and QBE Transparencies. ©Pearson Education 2009 Chapter 3 - Objectives Purpose and importance of SQL, the main language for querying relational databases.
SQL LANGUAGE TUTORIAL Prof: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
NORĖDAMI PAKEISTI SKAIDRĖS STILIŲ – SPUSTELĖKIT E DEŠINIUOJU PELĖS KLAVIŠU ANT SKAIDRĖS FONO IR PASIRINKITE > LAYOUT ARBA DARBALAUKI O ĮRANKIŲ JUOSTOJE.
SQL: Additional Notes. 2 Example 5.3 Use of DISTINCT List the property numbers of all properties that have been viewed. SELECT propertyNo FROM Viewing;
Vaizdinė užduotis. Kuriose iš šių valstybių galima pamatyti tokius gyvenamuosius namus? Jemene Tanzanijoje Mongolijoje Indonezijoje A B C D 1.
Network address translation Tinklo adresų vertimas
Chapter 11 SQL: Data Manipulation
Structured Query Language
國立臺北科技大學 課程:資料庫系統 Chapter 7 SQL Data Definition.
Kaip parašyti testavimo planą?
Working with Tables: Join, Functions and Grouping
Minggu 5, Pertemuan 9 SQL: Data Definition
Algoritmai ir duomenų struktūros (ADS)
Smart none of us are as smart as all of us. smart none of us are as smart as all of us.
Funkcijos R.
Medicininės radiologijos procedūrų pagrįstumas
i ir y diferencijavimas
Darbą parengė: Viktorija Drūteikaitė IT2
Robert Andruškevič AT27D.   Tai yra operacinė sistema, daugiausia naudojama išmaniuosiuose telefonuose, nors ją galima įdiegti ir kituose mobiliuosiuose.
Trigeriai 10 Paskaita.
Introduction to SQL Chapter 3.
Prof: Dr. Shu-Ching Chen TA: Hsin-Yu Ha
Algoritmai ir duomenų struktūros (ADS)
Chapter Name SQL: Data Manipulation Chapter #6 in the textbook
Algoritmai ir duomenų struktūros (ADS)
PHP „CodeIgniter“ karkaso saugumas
Logika a.
Žodžio dalys Dalykas, ugdymo sritis: Tema: Klasė: Priemonės paskirtis:
Lekt. Tomas G. Lipnevičius
© Pearson Education Limited, 2004
Windows API Tėvų kontrolė (angl. Parental Controls)
Nijolė Kriščiūnienė PASCAL Nijolė Kriščiūnienė
Duomenų valdymas.
Įvadas į Java programavimo kalbą
Kas yra arduino ? Parengė:Karolis Šumskis ir Mokytoja ekspertė Elena Šišenina.
Chapter Name SQL: Data Manipulation Chapter #6 in the textbook
Simple Network Management Protocol Paprastas tinklo valdymo protokolas
INTERAKTYVIŲ UŽDUOČIŲ KŪRIMO PROGRAMA
Šlapimo nelaikymo korekcija: Vilniaus miesto Universitetinės ligoninės patirtis Dr. Gediminas Mečėjus I-ji Lietuvos uroginekologijos draugijos konferencija,
Antrosios kartos interneto technologijos
Windows Resource Protection (IŠTEKLIŲ APSAUGA)
3-4 klasei Matematika Trupmenos Jurgita Grajauskienė Spec
Patarimai parengti straipsnį žurnalui
Programų sistemų testavimas
Langų kūrimas.
Funkcijos 9 paskaita.
Daugelio dokumentų sąsaja (angl. Multiple document interface)
Sąveika su Oracle Duomenų bazė
Windows Ribbon Framework
Klaviatūra.
Chapter Name SQL: Data Manipulation
Chapter Name SQL: Data Manipulation
Presentation transcript:

dbvs II paskaita 2015 09 18 dr. R. Pranaitis 1 VU KF IKI 1

Chapter Name September 98 SQL 2 © Pearson Education Limited, 2004 2

Turinys SQL paskirtis ir svarba. Duomenų gavimas - SELECT Duomenų įterpimas - INSERT Duomenų atnaujinimas - UPDATE Duomenų ištrynimas - DELETE Naujos lentelės sukūrimas - CREATE TABLE 3

SQL SQL - pagrindinė reliacinių DBVS kalba SQL ypatumai: Lengva išmokti Neprocedūrinė kalba – joje apibūdinama kokios in- formacijos reikia, o ne kaip ją gauti SQL yra palyginti laisvos formos kalba SQL naudojami įprasti anglų kalbos žodžiai, pvz., SELECT, INSERT, UPDATE Tinkama daugeliui vartotojų 4

SQL svarba SQL yra pirmoji ir vienintelė iki šiol standartinė duomenų bazių kalba, sugebėjusi įgyti platų pripažinimą SQL – tai milžiniškos gamintojų ir vartotojų investicijos FIPS standartas SQL - kitų standartų pagrindas 5

SQL paskirtis Padėti vartotojui Sukurti Duomenų bazę ir lentelių struktūras, Atlikti pagrindines užduotis, pvz., insert, update, delete, Įvykdyti paprastas ir sudėtingas užklausas. SQL užklausos turėtų būti atliekamos mini- maliomis vartotojo pastangomis SQL turėtų būti lengvai išmokstama 6

SQL apibūdinimas SQL sudaro 2 pagrindiniai komponentai DDL – duomenų bazės struktūrai apibrėžti, DML – duomenims išgauti ir atnaujinti. Iki SQL3 SQL nebuvo srauto valdymo komandų SQL – gali būti naudojama interaktyviai arba integruotai aukšto lygio kalboje (pvz., C, C++). 7

SQL komandų rašymas SQL sakinį sudaro rezervuoti žodžiai ir varto- tojo apibrėžti žodžiai. Rezervuoti žodžiai: pastovi SQL dalis. Jie turi būti parašyti tiksliai. Perkėlimai į kitą eilutę negalimi. Vartotojo sukurti žodžiai: tai įvairių DB objektų vardai, pvz., lentelių, stulpelių, parodymų [views]. 8

SQL komandų rašymas Daugelis SQL sakinio komponentų nepriklauso nuo raidžių registro (case insensitive), išskyrus for pažodinio pobūdžio duomenis Naudojant išplėtotą BNF žymenų formą: - rezerviniai žodžiai - didžiosios raidės - vartotojo sukurti žodžiai – mažosios raidės - | ženklu atskiriamos alternatyvos - {} skliaustai skirti būtiniems elementams - [] skliaustai skirti nebūtiniems elementams - … nurodo nebūtinus pasikartojimus 9

Literalai Literalai - tai konstantos SQL sakiniuose Ne skaičių literalai pateikiami kabutėse (pvz., ‘Londonas’). Skaičių literalai pateikiami be kabučių (pvz., 650.00). 10

SELECT sakinys SELECT [DISTINCT | ALL] {* | [stulpelio_išraiška [AS naujas_vardas]] [,...] } FROM lentelės_pavadinimas [alias] [, ...] [WHERE sąlyga] [GROUP BY stulpelių_sąrašas] [HAVING sąlyga] [ORDER BY stulpelių_sąrašas] 11

SELECT sakinys FROM nurodo naudojamas lenteles WHERE eilučių filtras GROUP BY eilutės grupuojamos pagal stulpelių reikšmes HAVING grupių filtras SELECT nurodo stulpelius, apie kurių reikšmes reikia išgauti informaciją ORDER BY rikiuoja išgautą informaciją 12

SELECT sakinys Punktų tvarkos keisti negalima SELECT ir FROM yra privalomi 13

Paprasčiausia užklausa [visi stulpeliai, visos eilutės] Tarkime, reikia visų video duomenų SELECT katalogo_nr, pavadinimas, kategorija, dienos_renta, kaina, režisieriaus_nr FROM video naudojant * , t.y. ‘visos eilutės’, galima parašyti paprasčiau: SELECT * FROM Video w3schools 14

Paprasčiausios užklausos rezultatas 15

Kai reikia tik kai kurių stulpelių Tarkime, reikia visų video katalogoNr, pavadinimų ir nuomos įkainio SELECT katalogoNr, pavadinimas, dienos_nuoma FROM Video w3schools 16

Kai kurie stulpeliai, visos eilutės 17

DISTINCT naudojimas Tarkime, reikia visų video kategorijų sąrašo SELECT kategorija FROM Video w3schools 18

DISTINCT naudojimas SELECT DISTINCT kategorija DISTINCT padeda išvengti pasikartojimų: SELECT DISTINCT kategorija FROM Video; 19

Skaičiuojamieji laukai Reikia video nuomos trims dienoms sąrašo SELECT katalogoNr, pavadinimas, dienos_nuoma*3 FROM Video 20

Skaičiuojamieji laukai Pavadinimas stulpeliui suteikiamas naudojant AS SELECT katalogoNr, pavadinimas, dienos_nuoma*3 AS 3d_nuoma FROM video w3schools 21

Ieškos sąlyga – palyginimas Tarkime, reikia darbuotojų, kurių atlyginimas > 10,000 lt, sąrašo SELECT darbNr, vardas, etatas, alga FROM personalas WHERE alga > 10000; w3schools 22

Ieška - nurodant sritį Tarp – tai reiškia >= ir <= w3schools Tarkime, reikia sąrašo darbuotojų, kurių alga yra tarp 45,000 ir 50,000 lt SELECT darbNr, vardas, etatas, alga FROM personalas WHERE alga BETWEEN 45000 AND 50000 Tarp – tai reiškia >= ir <= w3schools 23

Ieška nurodant sritį darbNr vardas etatas alga 24

Ieška – norodant sritį SELECT darbNr, vardas, etatas, alga Galima naudoti ir NOT BETWEEN Tas BETWEEN daug galios SQL nesuteikia – galima tai atlikti palyginant SELECT darbNr, vardas, etatas, alga FROM personalas WHERE salary >= 45000 AND salary <= 50000 Reikšmių sričiai BETWEEN naudingas 25

Priklausymo nustatymas Tarkime, reikia veiksmo ir vaikiškų video sąrašo. SELECT katalogoNr, pavadinimas, kategorija FROM video WHERE kategorija IN (‘veiksmas’, ‘vaikams’); 26

Priklausymo nustatymas Galimas negatyvas (NOT IN) Daug galios IN irgi SQL nesuteikia, nes galima: SELECT katalogoNr, pavadinimas, kategorija FROM Video WHERE kategorija =‘veiksmas’ OR kategorija =‘vaikams’ IN naudingesnis tada, kai reikšmių yra daug w3schools 27

Ieška pagal ruošinį Tarkime, ieškoma darbuotojų vardu Sally. SELECT darbNr, vardas, etatas, alga FROM personalas WHERE vardas LIKE ‘Sally%’; 28

Ieška pagal ruošinį SQL naudojami du specialūs ruošinio simboliai: % : bet koks simbolių skaičius, _ (pabraukimas): betkoks vienas simbolis. LIKE ‘Sally%’ reiškia, kad po penkių pirmų simbolių [Sally] gali būti parašyta bet kas. w3schools 29

Ieška pagal NULL Tarkime, reikia dar negrąžintų video sąrašo. Tuomet reikia ieškoti pagal specialų raktinį žodį IS NULL: SELECT nuomos_data, narioNr, videoNr FROM nuomos_sutartis WHERE grazinimo_data IS NULL; w3schools 30

Ieška pagal NULL Galima naudotis ir negatyvia versija (IS NOT NULL) 31

Rikiavimas pagal stulpelį Tarkime, reikia visų video sąrašo kainų mažėjimo tvarka SELECT * FROM Video ORDER BY kaina DESC; w3schools 32

Rikiavimas pagal stulpelį 33

SELECT sakinys – agregatinės funkcijos ISO SQL apibrėžiamos penkios agregatinės funkcijos: COUNT - randa nurodyto stulpelio reikšmių skaičių SUM - randa nurodyto stulpelio reikšmių sumą AVG - randa nurodyto stulpelio reikšmių vidurkį MIN - randa nurodyto stulpelio mažiausią reikšmę MAX - randa nurodyto stulpelio didžiausią w3schools 34

SELECT sakinys – agregatinės funkcijos Funkcijos skaičiuoja su vienu lentelės stulpeliu ir grąžina vieną reikšmę COUNT, MIN, ir MAX taikomos skaitiniams ir neskaitiniams laukams, o SUM ir AVG tinka tik skaičiams išskyrus COUNT(*), funkcijos pirmiausia eli- minuoja ‘null’ reikšmes ir po to skaičiavimus atlieka su likusiomis reikšmėmis 35

SELECT sakinys – agreg. funkcijos COUNT(*) suskaičiuoja visas lentelės eilutes (ir tuščias, ir dubliuojančias) Dublikatų galima išvengti prieš stulpelio pavadinimą panaudojus DISTINCT DISTINCT neveikia MIN/MAX, bet gali būti naudojamas su SUM/AVG 36

COUNT ir SUM naudojimas Tarkime, reikia viso personalo, kurio alga didesnė už 40,000 lt, skaičiaus ir jų algų bendros sumos. SELECT COUNT(darbNr) AS visi_darbuotojai, SUM(alga) as bendras_atlyginimas FROM personalas WHERE alga> 40000; w3schools 37

COUNT ir SUM naudojimas 38

MIN, MAX ir AVG naudojimas Tarkime, reikia rasti minimalų, maksimalų ir vidutinį personalo atlyginimą SELECT MIN(salary) AS min_alga, MAX(salary) AS max_alga, AVG(salary) AS vidutinė_alga FROM personalas w3schools 39

GROUP BY naudojimas SUM(alga) AS bendra_alga FROM personalas Tarkime, reikia rasti kiekvienos šakos personalo skaičių ir bendras jų algas SELECT padalNr, COUNT(darbNr) AS visi_darbuotojai, SUM(alga) AS bendra_alga FROM personalas GROUP BY padalNr ORDER BY padalNr; w3schools 40

GROUP BY naudojimas 41

Užklausa užklausoje (subužklausa) Tarkime, reikia rasti darbuotojus, dirbančius padalinyje, kurio adresas ‘8 Jefferson Way’ SELECT darbNo, vardas, etatas FROM personalas WHERE padalNr = (SELECT padalNr FROM padaliniai WHERE street=‘8 Jefferson Way’); 42

Subužklausa Vidiniu SELECT nustatomas padalinio, kurio adresas ‘8 Jefferson Way’, numeris (‘B001’). Po to išoriniu SELECT randami tame padalinyje dirbančių darbuotojų duomenys Išorinis SELECT tada tampa SELECT darbNr, vardas, etatas FROM personalas WHERE padalNr = ‘B001’; 43

Subužklausa 44

Sub užklausa su agreg. funkcija Tarkime, reikia rasti personalo darbuotojus, kurių atlyginimas yra didesnis už vidutinį SELECT darbNr, vardas, etatas FROM personalas WHERE alga > (SELECT AVG(alga) FROM personalas); 45

Sub užklausa su agreg. funkcija ‘WHERE alga > AVG(alga)’ rašyti negalima, nes užklausos pradžioje vidutinė alga nežinoma Panaudojus subužklausą, pirmiausia randama vidutinė alga (41166.67), o po to išorinis SELECT panaudojamas darbuotojams, kurių alga viršija vidurkį, atlyginimams rasti SELECT staffNo, name, position FROM Staff WHERE salary > 41166.67; 46

Subužklausa su agreg. funkcija 47

Kelių lentelių užklausos !!! Anksčiau pateiktuose pavyzdžiuose buvo naudojamos tos pačios lentelės subužklausos Kai užklausos stulpeliai yra iš kelių lentelių, naudojama jungtis (join) Jungtis formuojama po FROM įrašant keletą lentelių (lentelių pavadinimai atskiriami kableliais) 48

Kelių lentelių užklausos - alias Kelių lentelių užklausose skirtingų lentelių stulpelių pavadinimai gali sutapti (galimi neapibrėžtumai formuojant užklausą) Tokiais atvejais sukuriami ir naudojami lentelių vardų sinonimai (pvz., FROM video v) 49

Paprasta jungtis [Join] Tarkime, reikia visų video sąrašo su režisierių vardais SELECT katalogoNr, pavadinimas, kategorija, v.rezisieriusNr, rezisierius_vardas FROM video v, rezisierius d WHERE v.rezisieriusNr = d.rezisieriusNr; 50

Paprasta jungtis [Join] Kaip ieškos rezultatas pateikiamos tik tos eilutės, kurioms abiejose lentelėse stul- pelių rezisieriusNr reikšmės yra identiš- kos (v.directorNo = d.directorNo) 51

JOIN alternatyvos Join alternatyvos FROM Video v JOIN Director d ON v.directorNo = d.directorNo FROM Video JOIN Director USING directorNo FROM Video NATURAL JOIN Director w3schools 52

4 lentelių jungtis directorName, actorName, character Tarkime, reikia sąrašo visų video su režisieriais, artistais ir jų vaidmenimis SELECT v.catalogNo, title, category, directorName, actorName, character FROM Video v, Director d, Actor a, Role r WHERE d.directorNo = v.directorNo AND v.catalogNo = r.catalogNo AND r.actorNo = a.actorNo; 53

4 lentelių jungtis [Join] 54

INSERT naudojimas INSERT INTO lentelės_pavad [ (stulpeliu_sarasas) ] VALUES (duomenu_reiksmiu_sarasas) Stulpeliu_sarasas nebūtinas. Pagal nutylėjimą SQL naudoja visus stulpelius ta tvarka, kuria jie buvo išvardinti kuriant lentelę - CREATE TABLE Duomenu_reiksmiu_sarasas turi atitikti stulpe- lių sąrašą (elementų skaičius, pozicijos, duome- nų tipai) w3schools 55

INSERT naudojimas Tarkime, reikia į video lentelė reikia įterpti eilutę INSERT INTO Video VALUES (‘207132’, ‘Die Another Day’, ‘Action’ 5.00, 21.99, ‘D1001’ ); 56

UPDATE naudojimas TableName – bazės lentelės pavadinimas UPDATE TableName SET columnName1 = dataValue1 [, columnName2 = dataValue2...] [WHERE searchCondition] TableName – bazės lentelės pavadinimas SET – atnaujinamų stulpelių sąrašas WHERE – nebūtinas datavalue - duomenų reikšmių tipai turi derėti w3schools 57

Lentelės eilučių atnaujinimas – UPDATE Tarkime, reikia 10% padidinti trilerių kategorijos filmų nuomos kainą UPDATE Video SET dienos_nuoma = dienos nuoma*1.1 WHERE kategorija = ‘trileris’; 58

DELETE naudojmas DELETE FROM lentelės_pavadinimas [WHERE ieškos_sąlyga] Ieškos_sąlyga neprivaloma. Ją praleidus, bus ištrintos visos lentelės eilutės. Pati lentelė nebus ištrinta. Esant ieškos_sąlygai, bus ištrintos tik ieškos_sąlygą tenkinančios eilutės w3schools 59

Eilutės ištrynimas Tarkime, reikia ištrinti įrašą apie video, kurio numeris kataloge: 634817 DELETE FROM Video_nuomai WHERE katalogoNr = ‘634817’; 60

Duomenų apibrėžimas Du pagrindiniai SQL DDL sakiniai: CREATE TABLE – naujos lentelės sukūrimas CREATE VIEW – naujo parodymo sukūrimas w3schools 61

CREATE TABLE sakinys CREATE TABLE TableName {(columnName dataType [NOT NULL] [UNIQUE] [DEFAULT defaultOption][,...]} [PRIMARY KEY (listOfColumns),] {[UNIQUE (listOfColumns),] […,]} {[FOREIGN KEY (listOfFKColumns) REFERENCES ParentTableName [(listOfCKColumns)], [ON UPDATE referentialAction] [ON DELETE referentialAction ]] [,…]} 62

Stulpelio apibrėžimas columnName dataType [NOT NULL] [UNIQUE] [DEFAULT defaultOption] SQL palaikomi šie duomenų tipai: 63

Klausimai? 64