SQL w analizie danych2, Studia, Stopień 2 Semestr II, SQL, sql - Anna Ociepa, SQL projekty, sql - Anna Ociepa


SQL jest językiem obsługi baz danych implementowanym przez praktycznie wszystkie systemy zarządzania bazami danych (SZBD) przeznaczone dla wielu użytkowników, częściowo ze względu na fakt, iż uzyskał on akceptację ANSI (Amerykańskiego Narodowego Instytutu Normalizacji) oraz ISO (Międzynarodowej Organizacji Normalizacyjnej) jako standardowy język zapytań dla relacyjnych baz danych.

Język SQL został opracowany przez korporację IBM w laboratorium badawczym w San Jose, we wczesnych latach 70. Prototyp SQL-a, zaprezentowany na konferencji ACM w 1974 roku nosił początkowo miano SEQUEL (Strukturalny Angielski Język Zapytań; ang. Structured English Query Language). Nazwa ta została później skrócona do SQL.

Znacznie ulepszona wersja SQL pojawiła się w 1989 roku pod nazwą SQL-89. Znaczna większość stosowanych dziś relacyjnych systemów SZBD obsługuje przynajmniej tę wersję języka.

W 1992 roku istniejący standard poddano kolejnemu unowocześnieniu (SQL-92), dzięki czemu SQL zyskał szereg nowych możliwości. Ponieważ SQL-92 jest rozszerzeniem SQL-89, starsze systemy zarządzania bazami danych mogły po niewielkich modyfikacjach pracować w nowym standardzie.

Aż do października 1996, producenci oprogramowania SZBD mogli przedstawiać swoje produkty instytutowi NIST (Narodowy Instytut Standardów i Technologii) w celu określenia ich zgodności ze standardami SQL. Proces testowania i certyfikacji stanowił silny bodziec do trzymania się obowiązujących norm -wynikiem standard SQL:1999. W 2003 przedstawiono SQL:2003 - nowy standard języka SQL. Został on opublikowany w Sigmod Record Vol. 33 No. 1 Marzec 2004. Jest to w zasadzie poprawione SQL:1999 z wyjątkiem części SQL/XML oraz kilku dodatkowych właściwości.

W takiej czy innej postaci, SQL jest niezwykle przydatnym narzędziem. Można go stosować do modyfikowania i wczytywania danych oraz do tworzenia i obsługi struktur bazodanowych. Nie jest to jednak język samodzielny. Pisząc aplikację obsługującą twoją bazę danych trzeba osadzać polecenia SQL w innym języku programowania.

Mówienie o zapytaniach przed utworzeniem bazy i wprowadzeniem do niej przykładowych danych może wydawać się dziwne, ale większość poleceń SQL-a wykorzystywanych do modyfikowania tabel wymaga wpierw odszukania danych, które należy podać modyfikacjom. Załóżmy więc, że dysponujemy gotową bazą danych, wypełnioną odpowiednimi informacjami.

SQL ma tylko jedno polecenie służące do odszukiwania danych: SELECT. Wbrew pozorom fakt ten nie stanowi ograniczenia. SELECT umożliwia wybieranie kolumn oraz wierszy, łączenie tabel, grupowanie danych i przeprowadzanie na nich prostych obliczeń. Pojedyncze wyrażenie SELECT wystarczy do wykonania dowolnej kombinacji działań algebry relacyjnej.

Oto podstawowa składnia polecenia SELECT:

SELECT kolumna1, kolumna2, ...

FROM tabela1, tabela2, ...

WHERE kryteria_wyboru

Klauzula SELECT określa kolumny, które chcemy ujrzeć w tabeli wynikowej. W klauzuli FROM podajemy nazwy tabel, które mają zostać przeszukane. Klauzula WHERE jest opcjonalna i zawiera kryteria, które mają być spełnione przez wszystkie zwracane wiersze.

Wyświetlanie wszystkich kolumn

Aby wyświetlić wszystkie kolumny z danej tabeli w kolejności, w której zostały one zdefiniowane, można skorzystać z gwiazdki (*). Eliminuje to konieczność wpisywania kolejnych nazw kolumn w wyrażeniu SELECT. Załóżmy, że chcemy wyświetlić wszystkich dostawców, u których nasza księgarnia zamawia książki. Wpisz:

SELECT *

FROM dostawcy

Wyświetlanie wybranych kolumn

Większość zapytań SQL-owych polega na wybraniu niektórych kolumny z analizowanych tabel i wyświetleniu ich w odpowiedniej kolejności. Należy w tym celu wypisać nazwy interesujących nas kolumn po słowie kluczowym SELECT w kolejności, w jakiej chcemy je ujrzeć na wydruku. Przyjrzyjmy się zapytaniu wybierającemu numery telefonów i nazwy dostawców z naszej przykładowej bazy danych:

SELECT TelefonDost, NazwaDost

FROM Dostawcy

Usuwanie duplikatów

Unikatowe wartości kluczy podstawowych uniemożliwiają wprowadzenie dwóch identycznych wierszy do danej tabeli bazowej. Jeśli jednak wybierasz z analizowanej tabeli tylko niektóre kolumny, może się zdarzyć, że tabela wynikowa będzie zawierać duplikaty.

Aby usunąć duplikaty z tabeli wynikowej, należy po słowie kluczowym SELECT dopisać DISTINCT:

SELECT DISTINCT NumerKli, NumerKartyKred

FROM Zamówienia

Operacja rzutowania

Wybierając z tabeli interesujące nas kolumny, żądamy od SZBD dokonania operacji rzutowania. Rzutowanie polega na wyodrębnieniu wartości wskazanych kolumn ze wszystkich wierszy w tabeli. Ponieważ system zarządzania nie musi analizować wybieranych wartości, rzutowanie należy do operacji szybkich.

Mówiąc o rzutowaniu należy zwrócić uwagę na pewien problem: SZBD wybierze z podsuniętej mu tabeli żądane kolumny nie zwracając uwagi czy wybór ten jest logiczny, czy nie. Przyjrzyj się następującemu zapytaniu:

SELECT NumerZam, Suma

FROM ZamówioneKsiążki

Sortowanie tabeli wynikowej

O ile nie zdecydujesz inaczej, wiersze w tabeli wynikowej będą miały taką samą kolejność jak w tabeli źródłowej. Jeśli chcesz zmienić porządek wierszy, musisz dodać klauzulę ORDER BY do wyrażenia SELECT.

Dopisanie klauzuli ORDER BY spowoduje posortowanie tabeli wynikowej w kolejności alfabetycznej:

SELECT *

FROM Wydawcy

ORDER BY NazwaWydawcy

Po słowach kluczowych ORDER BY następuje nazwa kolumny lub kolumn, względem których ma zostać posortowana tabela wynikowa. Jeśli podasz nazwę więcej niż jednej kolumny, wówczas pierwsza kolumna zostanie wzięta pod uwagę przy sortowaniu zewnętrznym, następna - przy sortowaniu wewnętrznym pierwszego stopnia itp.

Weźmy dla przykładu następujące wyrażenie:

SELECT NazwiskoKli, KodPocztowyKli

FROM Klienci

ORDER BY NazwiskoKli, KodPocztowyKli

Wynik został posortowany według nazwisk klientów, a wewnętrznie - według numerów kodów pocztowych.

Jeśli odwrócimy kolejność kolumn, według których nasza tabela ma zostać posortowana:

SELECT NazwiskoKli, KodPocztowyKli

FROM Klienci

ORDER BY KodPocztowyKli, NazwiskoKli

ASC, DESC!!!!

Otrzymamy listę posortowaną według numerów kodów pocztowych, a wewnętrznie - według nazwisk klientów.

Podobnie jak w przypadku kolumn, można ograniczać zawartość zwracanej tabeli przez wyrażenie SELECT do interesujących nas wierszy. Kryteria wyboru wierszy wpisujemy w klauzuli WHERE. Wyrażenie logiczne następujące po WHERE określane jest mianem predykatu. Jeśli dany wiersz spełnia kryteria wyboru (innymi słowy, wartość logiczna predykatu dla zawartych w tym wierszu danych jest równa 1), wówczas zostaje on włączony do tabeli wynikowej. Poniższe operatory porównania są wykorzystywane w wyrażeniach i warunkach do porównywania dwóch wyrażeń. Wynikiem działania operatorów porównania jest zawsze wartość logiczna (TRUE lub FALSE).

Operator

Opis

Przykład

( )

Zmienia normalną kolejność wykonywania działań

... NOT (A=1 OR B=1)

=

Sprawdza, czy dwa wyrażenia są równe

... WHERE PLACA = 1000

!=, ^=, <>

Sprawdza, czy dwa wyrażenia są różne

... WHERE PLACA != 1000

>

Większe niż

... WHERE PLACA > 1000

<

Mniejsze niż

... WHERE PLACA < 1000

>=

Większe lub równe niż

... WHERE PLACA >= 1000

<=

Mniejsze lub równe niż

... WHERE PLACA <= 1000

Wpisując z obu stron wyrażenia nazwy kolumn należy pamiętać, że predykat stosuje się oddzielnie do każdego wiersza tabeli. Można więc porównywać wartości przechowywane w dwóch różnych kolumnach tego samego wiersza, ale nie można w ten sposób porównywać wartości tej samej kolumny w dwóch różnych wierszach.

SZBD opiera ocenę wartości logicznej na typie porównywanych danych

Dane liczbowe - na zwykłej kolejności liczb

Dane tekstowe - na kolejności alfabetycznej

Dane daty, godziny - na kolejności chronologicznej.

Do konstrukcji złożonych warunków służą operatory logiczne. Wykonują one obliczenia na wartościach typu logicznego (w szczególności będących wynikiem obliczania warunków).

Operator

Opis

Przykład

( )

Zmienia normalną kolejność wykonywania działań

SELECT ...

WHERE x = y AND (a = b OR p = q)

NOT

Zaprzeczenie wyrażenia logicznego

...WHERE NOT (zawod IS NULL)

...WHERE NOT (A=1)

AND

Logiczne 'i'. Wynik jest równy TRUE, jeśli wartości obu operandów są równe TRUE

... WHERE A = 1 AND B = 2

OR

Logiczne 'lub'. Wynik jest równy TRUE, jeśli wartość przynajmniej jednego operandu jest równa TRUE

... WHERE A = 1 OR B = 3

Poniższe tabele przedstawiają wynik działania operatora AND i OR dla różnych wartości:

AND

true

false

null

OR

true

false

null

True

true

false

null

True

true

true

true

False

false

false

false

False

true

false

null

Null

null

false

null

Null

true

null

null

Jeśli utworzymy wyrażenie zawierające więcej niż jeden operator logiczny, system zarządzania będzie musiał zdecydować, w jakiej kolejności należy analizować poszczególne wyrażenia proste. O ile nie zarządzimy inaczej, SZBD zastosuje się do tzw. hierarchii operatorów. Zgodnie z tą hierarchą, najpierw ustalone są wartości logiczne wyrażeń prostych, a następnie bierze się pod uwagę operatory. Tam gdzie znajduje się więcej niż jeden operator logiczny tego samego typu, analiza postępuje od lewej do prawej. System zarządzania przyznaje wyższy priorytet wyrażeniom znajdującym się wewnątrz nawiasów.

SQL udostępnia szereg operatorów specjalnych, ułatwiających konstruowanie wyrażeń logicznych. Operatory te to między innymi BETWEEN, LIKE, IN , ALL, ANY, EXISTS oraz IS NULL.

ANY

Porównuje wartość z każdą wartością ze zbioru po prawej stronie. Musi być poprzedzony jednym z operatorów: =, !=, >, <, <=, >=. Zwraca TRUE, jeśli przynajmniej jeden z elementów spełnia podany warunek.

... WHERE PLACA = ANY

(SELECT PLACA FROM PRAC

WHERE WYDZIAL=30)

IN

Równy dowolnemu elementowi. Synonim do " = ANY"

... WHERE ZAWOD IN ('URZEDNIK', 'INFORMATYK')

... WHERE PLACA IN (SELECT PLACA FROM PRAC WHERE WYDZIAL=30)

ALL

Porównuje wartość z każdą wartością ze zbioru po prawej stronie. Musi być poprzedzony jednym z operatorów: =, !=, >, <, <=, >=. Zwraca TRUE, jeśli każdy z elementów spełnia podany warunek.

...WHERE (PLACA, PREMIA) >= ALL ((14900, 300), (3000, 0))

BETWEEN x AND y

większy lub równy x i mniejszy lub równy y.

... WHERE A BETWEEN 1 AND 9

EXISTS

Zwraca TRUE jeśli zapytanie zwraca przynajmniej jeden wiersz.

... WHERE EXISTS (SELECT PLACA

FROM PRAC WHERE WYDZIAL= 30)

LIKE

spełnia podany wzorzec. Litera '%' jest używana do zapisywania dowolnego ciągu znaków (0 lub więcej), który nie jest równy NULL. Litera '_' zastępuje dowolną pojedynczą literę.

... WHERE STAN LIKE 'T%'

IS NULL

jest równe NULL.

... WHERE ZAWOD IS NULL

Obliczenia i grupowanie.

Wprawdzie SQL nie jest samodzielnym językiem programowania ale można za jego pomocą prowadzić proste obliczenia i operacje agregujące. SQL potrafi prowadzić proste operacje arytmetyczne na wartościach kolumn i na stałych (jeśli używamy osadzonego SQL-a, możemy korzystać ze zmiennych języka bazowego). Przykładowo jeśli tabela zawiera pola ilość, cena_jednostkowa_netto , stawka_vatu to możemy przy pomocy polecenia SELECT uzyskać nową kolumnę będącą wartością brutto.

SELECT ilość, cena_jednostkowa_netto , stawka_vatu, (ilość*cena_jednostkowa_netto)*(1+stawka_vatu/100) as wartość_brutto

FROM ZAKUPY

Jeżeli kolumnie wyliczeniowej nie nadamy nazwy to kolumna ta otrzyma domyślną nazwę najczęściej wygenerowaną z formuły wyliczającej.

Operatory arytmetyczne

Standardowo SQL rozpoznaje podstawowe operatory arytmetyczne:

mnożenie *

dzielenie /

dodawanie +

odejmowanie -

dzielenie modulo - % (MS SQL Server)

Powyższe uporządkowanie związane jest z hierarchią operatorów. Najwyższy priorytet mają mnożenie i dzielenie, zaś najniższy dodawanie i odejmowanie. Jeśli dane wyrażenie zawiera kilka operatorów o tym samym priorytecie, wówczas będą one analizowane od lewej do prawej.

Standardowe Typy Danych Liczbowych w Sql.

INTEGER (skrót INT): liczba całkowita (dodatnia lub ujemna). Ilość bitów poświęconych na przechowanie takiej liczy zależy od implementacji. ( standard w komp. typu desktop to 16-32 bity)

SMALLINT: krótka liczba całkowita - zazwyczaj o połowę krótsza od zwykłej liczby całkowitej.

NUMERIC: stałoprzecinkowa liczba rzeczywista. Przykład NUMERIC(6,2) 3456,73

DECIMAL: stałoprzecinkowa liczba rzeczywista, podobna do typu NUERIC ale w przypadku DECIMAL system zarządzania może przechowywać więcej cyfr po przecinku niż zostało to ustalone i może to poprawiać dokładność obliczeń.

REAL: zmiennoprzecinkowa liczba o „ pojedynczej precyzji”

DOUBLE PRECISION (DOUBLE): zmiennoprzecinkowa liczba o „ podwójnej precyzji”

FLOAT: zmiennoprzecinkowa liczba o wybieralnej precyzji

Typy Danych Liczbowych W Ms Sql Sever 2005

Liczby całkowite.

Istnieją cztery rodzaje danych typu całkowitego (integer), które mogą przechowywać dokładne, skalarne wartości : bigint, int, smallint, tinyint. Różnica pomiędzy typami tych danych całkowitych występuje w ilości przestrzeni pamięci, której wymagają, oraz w zakresie wartości jakie mogą przechowywać. Poniższa tabela pokazuje typy danych i ich zakresy.

Typ danych

Długość (w bajtach)

Zakres

tinyint

1

0-255

smallint

2

-32767 do +32767

int

4

- + 2147483657

bigint

8

- + 2^63

Przybliżone i dokładne liczbowe typy danych

MS SQL Server zezwala na dwa typy przybliżonych danych (float i real), jak i na dwa dokładne typy danych liczbowych (decimal i numeric).

Przybliżonymi typami danych są float i real. Liczby przechowywane za pomocą tych typów danych zapisywane są w postaci pary : mantysy i wykładnika. Algorytm, używany do określania takiej pary może okazać się mało precyzyjny dla liczb z górnego zakresu precyzji. Liczby zmiennoprzecinkowe i rzeczywiste są przydatne do danych naukowych i statystycznych, dla których absolutna dokładność nie jest niezbędna ale potrzebny jest zakres wartości od bardzo małych do bardzo dużych.

Liczby rzeczywiste mają precyzję 7 cyfr i wymagają 4 bajtów. Jeżeli zadeklarowany będzie typ float o precyzji mniejszej niż 7, to tak naprawdę zostanie utworzony kolumna typu rzeczywistego (real).

Przykład

Liczby 23487,23 45,98763 można przechować w kolumnie typu real, ale 8,4557987 już nie.

Typy float mogą mieć dokładność od 1 do 38. Domyślna precyzja dla typu float to 15 cyfr.

( na danych typy float, real nie można wykonywać dzielenia modulo; generalnie unikamy typów float, real gdyż wyniki obliczeń mogą być zaskakujące)

Dokładne typy danych liczbowych to decimal i numeric. Dokładność jest utrzymywana do najmniej znaczącej cyfry. Jeżeli deklarujemy dokładny typ danych numerycznych, należy określić dwa składniki : precyzję i skalę. Jeśli nie zostaną określone to przyjmowane są wartości domyślne 18 i 0.

Funkcje Matematyczne (W Ms Sql Sever 2005)

Oto niektóre dostępne funkcje matematyczne:

ABS(X) Moduł z X.

CEILING(X) Zaokrąglenie w górę (do całkowitej) X-a.

FLOOR(X) Zaokrąglenie w dół (do całkowitej) X-a.

EXP() funkcja wykładnicza o podstawie E

POWER(X,Y) Zwraca X do potęgi Y.

ROUND(X,Y) Zaokrągla X do Y miejsc po przecinku

SIGN(X) -1 gdy X<0, +1 gdy X>0, 0 gdy X=0

SQRT(X) Pierwiastek kwadratowy z X.

LOG() funkcja logarytm naturalny

LOG10() funkcja logarytm dziesiętny

COS, SIN, COT, TAN() funkcje trygonometryczne

ACOS, ASIN, ATAN() funkcje cyklometryczne

PI() liczba Pi

RAND() losowa liczba z przedziału [0,1]

Typy DANYCH TEKSTOWYCH

CHARACTER (skrót CHAR): łańcuch tekstowy o stałej długości. Deklarując ten typ należy wskazać długość łańcucha (w MS SQL maksymalnie 8000 znaków brakujące znaki zastępowane są spacjami). ---- CHAR(25)

CHARACTER VARYING (skrót VARCHAR) : ): łańcuch tekstowy o zmiennej długości. Deklarując ten typ należy wskazać dopuszczalną długość łańcucha. ----- VARCHAR(25)

Funkcje znakowe

Składnia

Przeznaczenie

Przykład

CHR(n)

Zwraca znak o podanym kodzie

CHR(65) Wynik: "A"

LOWER(string)

Zamienia wszystkie litery w podanym stringu na małe.

LOWER('PAN JAN NOWAK')

Wynik: "pan jan nowak"

LTRIM(string )

Zwraca dane bez spacji na początku

LTRIM(' Ostatnie słowo')

Wynik: ”Ostatnie słowo"

REPLACE(string1, string2 , string3 )

Zastępuje wszelkie wystąpienia łańcucha string2 w łańcuchu string1 przez string3

REPLACE('Jack & Jue', 'J', Bl')

Wynik: "Black & Blue"

RTRIM(string)

Zwraca dane bez spacji na końcu

RTRIM('Ostatnie słowo `)

Wynik: "Ostatnie słowo”

SOUNDEX(string)

Zwraca ciąg znaków reprezentujący wymowę słów wchodzących w skład string. Funkcja SOUNDEX może być użyta do porównywania słów zapisywanych w różny sposób, ale wymawianych tak samo.

SELECT nazwisko FROM bibl

WHERE

SOUNDEX(nazwisko) = SOUNDEX('Mickiewicz');

SUBSTRING(string, m , n)

Zwraca podciąg z ciągu znaków string zaczynający się na znaku m i o długości n. Jeśli n nie jest podane, to zwracany jest podciąg od znaku m do ostatniego w string. Pierwszy znak w ciągu ma numer 1.

SUBSTR('ABCDE',2, 3)

Wynik: "BCD"

UPPER(string)

Zamienia wszystkie znaki z ciągu string na duże litery.

UPPER('Jan Nowak')

Wynik: "JAN NOWAK"

ASCII(string)

Zwraca kod ASCII pierwszej litery w podanym ciągu znaków

ASCII('A')

Wynik: 65

|| +

Funkcja dwu argumentowa dodawania łańcuchów, konkatencja



Wyszukiwarka

Podobne podstrony:
odpowiedzi, Studia, Stopień 2 Semestr II, Zespolona, Analiza zespolona (aivliska), Analiza zespolona
odpowiedzi, Studia, Stopień 2 Semestr II, Zespolona, Analiza zespolona (aivliska), Analiza zespolona
USTAWA o działalności ubezpieczeniowej, Studia, I stopień, Semestr II, Ubezpieczenia
Zadania 4, Studia, Stopień 2 Semestr II, Topologia, Topologia zadania
USTAWA o ubezpieczeniach obowiązkowych, Studia, I stopień, Semestr II, Ubezpieczenia
Prawo gospodarcze, Studia, I stopień, Semestr II, Prawo II (gospodarcze)
Zadania 3, Studia, Stopień 2 Semestr II, Topologia, Topologia zadania
projekt I - włochy funkcja alokacyjna, Studia, I stopień, Semestr II, Makroekonomia
rz-wyk1, Studia UE Katowice FiR, II stopień, Semestr II, Rachunkowość w zarządzaniu przedsiębiorstwe
rachuna, Studia UE Katowice FiR, II stopień, Semestr II, Rachunkowość w zarządzaniu przedsiębiorstwe
zaliczenie+rzeszotarska, Studia UE Katowice FiR, I stopień, semestr II, Makroekonomia
Funkcje państwa, Studia UE Katowice FiR, I stopień, semestr II, Makroekonomia
4 niezależności Banku Centralnego, Studia UE Katowice FiR, I stopień, semestr II, Makroekonomia
rachuna ściąga, Studia UE Katowice FiR, II stopień, Semestr II, Rachunkowość w zarządzaniu przedsięb
2013 rach zarządcza, Studia UE Katowice FiR, II stopień, Semestr II, Rachunkowość w zarządzaniu prze
Test prawda-fałsz, Studia UE Katowice FiR, I stopień, semestr II, Finanse
egzamin gabryś, Studia UE Katowice FiR, I stopień, semestr II, Makroekonomia
Kolokwium z analizy, Studia, Informatyka, Semestr II, Analiza Matematyczna cz.II

więcej podobnych podstron