Archiwum kategorii: KURS SQL

KURS SQL

SQL UPDATE

SQL UPDATE


    


DEFINICJA

Polecenie UPDATE służy do modyfikacji wartości w rekordach tabeli. Po poleceniu UPDATE określamy gdzie, w której tabeli, chcemy zmodyfikować rekord. Po słówku SET określamy które pola w rekordzie chcemy zmodyfikować i jakie wartości chcemy im wstawić. I na sam koniec określamy, który rekord chcemy zmodyfikować czyli korzystamy z warunków po klauzuli WHERE.

SQL UPDATE składnia

UPDATE
    nazwa_tabeli
SET
    nazwa_kolumny1 = wartość1 , nazwa_kolumny2 = wartość2 — itd
WHERE
    warunki_filtrowania_rekordów

PAMIĘTAJ, musisz bardzo dobrze określać warunki dotyczące filtrowania rekordów, jeżli źle je określisz możesz zmodyfikować większą liczbę rekordów (przy okazji tych których nie chciałeś modyfikować). Najlepiej rekordy do modyfikacji znajdować po jakimś niepowtarzalnym identyfikatorze, wtedy mamy pewność, że modyfikujemy dobry rekord.

 


Przykład zastosowania UPDATE (baza Adventureworks)

Zamień imię "Ken" na "Jon" przy osobie Ken Sanchez.

UPDATE Person.Person
SET FirstName = 'Jon'
WHERE BusinessEntityID = 1

 INFO: Ktoś może zapytać dlaczego nie wyszukujemy do modyfikacji rekordu po imieniu i nazwisku. Odpowiedź jest prosta, bo jeśli w bazie znalazły by się dwie osoby o takim samym imieniu i nazwisku to system zmodyfikowałby imiona przy obu tych osobach. Dlatego musimy znaleźć taką wartość która jednoznacznie identyfikuje dany rekord. W przypadku tabeli Person.Person taką kolumną jest BusinessEntityID a rekord z osobą Ken Sanchez ma w tym polu wartość 1. Dlatego nasz warunek który jednoznacznie identyfikuje rekrod z Kenem wygląda następująco WHERE BusinessEntityID = 1.


Przykład zastosowania UPDATE (baza Northwind)

Ktoś zauważył, że w systemie Pani Nacy Davolio ma wpisane, że pracuje o rok dłużej, popraw ten błąd (obecna data zatrudnienia w bazie to 1992-05-01).

UPDATE Employees
SET HireDate = '1993-05-01 00:00:00.000'
WHERE EmployeeID = 1

INFO: Tak jak w przykładzie z bazy AdventureWorks nie wyszukujemy rekordu po imieniu i nazwisku bo może zdarzyć się taka sytuacja, że w bazie jest więcej osób o tym samym imieniu i nazwisku. Dlatego szukamy pola którego wartość jednoznacznie identyfikuje rekord który szukamy w naszym przypadku jest to pole EmployeeID. Ponieważ rekord z danymi dotyczącymi Pani Davolio ma identyfikator 1 to warunek wygląda tak jak na powyższym przykładzie.


   

SQL INSERT INTO

SQL INSERT INTO


    


DEFINICJA

Polecenie INSERT INTO służy do wstawiania/tworzenia nowych rekordów w tabeli. Ogólnie rzecz biorą po INSERT INTO wskazujemy tabelę do której chcemy dołożyć rekord, musimy określić do których kolumn chcemy "wrzucić" wartości i określić te wartości, składnia poniżej.

SQL INSERT INTO składnia

INSERT INTO nazwa_tabeli(nazwa_kolunny1, nazwa_kolunny2, nazwa_kolunny3, itd)
VALUES (wartość1, wartość2, wartość3, itd)

PAMIĘTAJ, żeby w nawiasie określającym nazwy kolumn było tyle samo parametrów co w nawiasie określającym wartości pól w poszczególnych kolumnach.

Istnieje jeszcze jedna forma tego polecenia a mianowicie

INSERT INTO nazwa_tabeli
VALUES (wartość1, wartość2, wartość3, itd)

 W tym przypadku nie określamy kolumn. Ja osobiście jestem zwolennikiem pierwszego rozwiązania, czyli jawnego deklarowania wszystkiego co można, co pozwala uniknąć późniejszych problemów szczególnie jeżeli daną bazą administruje większa liczba osób.


Przykład zastosowania INSERT INTO (baza Adventureworks)

Dodaj do typów osób w bazie nowy typ "Temporary Worker".

INSERT INTO Person.ContactType(Name,ModifiedDate)
VALUES('Temporary Worker' , '2017-01-01 00:00:00.000')


Przykład zastosowania INSERT INTO (baza Northwind)

Dodaj nowego dostawcę do tabeli "Suppliers".

INSERT INTO Suppliers(CompanyName,ContactName,ContactTitle,Address,City,Region,PostalCode,Country,Phone,Fax,HomePage)
VALUES ('Zzimo','Rob Zikosen','Sales Manager','Zielona 4','Warszawa','NULL','00-900','Poland','(22)127624','(22)735483',NULL)

INFO: do kolumny "SupplierID" nie trzeba "wpisywać" wartości, zostanie ona wygenerowana automatycznie.  


   

SQL DROP INDEX

SQL DROP INDEX


    


DEFINICJA

Polecenie DROP INDEX służy do usuwania indeksów z wybranej tabeli. W różnych środowiskach bazodanowych składnia do usuwanięcia indeksu wygląda trochę inaczej. W tym wpisie pokażę składnię w wybranych środowiskach.

SQL DROP INDEX składnia dla MySQL

ALTER TABLE nazwa_tabeli DROP INDEX nazwa_indeksu


SQL DROP INDEX składnia dla SQL SERVER

DROP INDEX nazwa_tabeli.nazwa_indeksu


SQL DROP INDEX składnia dla ORACLE

DROP INDEX nazwa_indeksu


   

SQL DELETE

SQL DELETE


    


DEFINICJA

Polecenie DELETE służy do usuwania rekordów (wierszy) ze wskazanej tabeli. Po poleceniu DELETE określamy gdzie, w której tabeli, chcemy usunąć rekord. Po słówku WHERE definiujemy warunki, które konkretnie rekordy chcemy usunąć. Pamiętaj, z poleceniem DELETE trzeba się obchodzić bardzo starannie, trzeba bardzo jasno określić które rekordy chcemy usunąć, bo można nieodwracalnie usunąć potrzebne rekordy. Przed zastosowaniem polecenia DELETE, dobrą praktyką jest użycie zwykłego SELECT-a w połączeniu z warunkami w WHERE, w celu wizualizacji rekordów które chcesz skasować, wtedy masz pewność, że usuwasz prawidłowe dane.

SQL DELETE składnia

DELETE FROM
    nazwa_tabeli
WHERE
    warunki_filtrowania_rekordów

UWAGA: Jeżeli nie określisz warunków w części WHERE skasujesz wszystkie rekordy we wskazanej tabeli!


Przykład zastosowania DELETE (baza AdventureWorks)

Usuń rekord z tabeli osób dotyczący Terri Duffy.

DELETE FROM
    Person.Person

WHERE
    BusinessEntityID = 2

INFO: Pamiętaj, żeby usunąć ten rekord który chcemy musimy dokładnie określić warunki. Jeżeli chcemy usunąć dokładnie jeden rekord musimy posłużyć się unikalnym polem w skali kolumny który zidentyfikuje ten właśnie rekord. W przypadku tabeli Person.Person w bazie AdventureWorks tym polem jest BusinessEntityID. 

Dlaczego w warunku nie posłużyliśmy się imieniem i nazwiskiem? Dlatego, że jeżeli mielibyśmy taki przypadek, że w bazie znalazłyby się dwie osoby o takim samym imieniu i nazwisko system usunąłby obie.


Przykład zastosowania DELETE (baza Northwind)

Usuń z zamówienie o identyfikatorze 10625 produkt o identyfikatorze 60.

DELETE FROM
    OrderDetails

WHERE
    OrderID = 10625 AND ProductID = 60

INFO: w warunku wskazaliśmy zestawienie dwóch warunków bo taka kombinacja gwarantuje nam już wskazanie jednego, interesującego nas, rekordu.


   

SQL ROUND() function

SQL ROUND() function


    


DEFINICJA

Funkcja ROUND() służy do zaokrąglania pól numerycznych do zdefiniowanego przez użytkownika miejaca dziesiętnego.

SQL ROUND() składnia funkcji

SELECT
    ROUND( pole_numeryczne , ilość_miejsc_po_przecinku )
FROM
    tabela

Parametry:
pole_numeryczne – pola których wartości wyrażone są w postaci numerycznej np. liczba zmiennoprzecinkowa
ilość_miejsc_po_przecinku – tutaj określamy z jaką dokładnością chcemy zaokrąblicz liczbę podaną w pierwszym parametrze (ile miejsc po przecinku)


Przykład zastosowania funkcji ROUND()

SELECT
    ROUND( 123.456 , 2)

Wynik: 123,45 


    

SQL CONVERT() function

SQL CONVERT() function


    


DEFINICJA

Funkcja CONVERT() to druga, oprócz funkcji CAST(), funkcja służąca do konwersji danych jednego typu na drugi. Przykładam: konwersja liczb na tekst, tekstu na liczbę lub daty na tekst.

SQL CONVERT() składnia funkcji

SELECT
    CONVERT( nowy_typ_danych , wartość_konwertowana , styl_danych_po_konwersji)

Parametry:
nowy_typ_danych – określamy na jaki typ danych chcemy konwertować wskazacą wartość
wartość_konwertowana – określamy jaką wartość chcemy konwertować
styl_danych_po_konwersji – (OPCJONALNIE) możemy określić stylk danych po konwersji. Dotyczy np. daty i czasu ale także liczb np. określnie precyzji.


Przykład zastosowania funkcji CONVERT()

SELECT
    '1 styczeń 2017 = ' + CONVERT( VARCHAR(10) , '2017-01-01' )


    

SQL CAST() function

SQL CAST() function


    


DEFINICJA

Funkcja CAST() służy do konwersji danych jednego typu na drugi. Przykładami konwersji może być konwersja liczb na tekst lub odwrotnie oraz daty na tekst.

SQL CAST() składnia funkcji

SELECT
    CAST( wartość_konwertowana AS nowy_typ_danych)

Parametry:
wartość_konwertowana – określamy jaką wartość chcemy konwertować
nowy_typ_danych – określamy na jaki typ danych chcemy konwertować wskazacą wartość


Przykład zastosowania funkcji CAST()

SELECT
    '1 styczeń 2017 = ' + CAST( '2017-01-01' AS VARCHAR(10) )


    

SQL SUBSTRING() function

SQL SUBSTRING() function


    


DEFINICJA

Funkcja SUBSTRING() służy do wyodrębnienia ciągu znaków z tekstu znajdującego się w polach o typie tekstowym.

SQL SUBSTRING() składnia funkcji

SELECT
    SUBSTRING( nazwa_kolumny , pozycja_początkowa , długość )
FROM
    źródło_danych

Parametry:
nazwa_kolumny – określamy tutaj kolumnę na której będziemy używać funkcji SUBSTRING()
pozycja_początkowa – określamy miejsce początkowe w tekście w polu w kolumnie wskazanym w nazwa_kolumny
długość – określamy długość ciągu który chcemy wyodrębnić od miejsca wskazanego w pozycja_początkowa


INFO: Funkcja SUBSTRING() nie występuje we wszystkich środowiskach bazodanowych. Np. odpowiednikiem funkcji SUBSTRING() w Oracl jest funkcja SUBSTR() a w innych środowiskach używana jest funkcja MID()


Przykład zastosowania funkcji SUBSTRING() (baza Adventureworks)

Wyświetl dane pracowników w postaci: Imię , Nazwisko , pierwsza_litera_imiania . nazwisko.

SELECT
     FirstName AS Imię
    ,LastName AS Nazwisko
    ,SUBSTRING(FirstName,1,1)+ '.' + LastName AS [Połączenie imienia z nazwiskiem]
FROM
    Person.Person
WHERE
    PersonType = 'EM'
    OR PersonType = 'SP'


Przykład zastosowania funkcji SUBSTRING() (baza Northwind)

Skróć nazwy regionów do poztaci 4 znakowej, zaczynając od pierwszego znaku.

SELECT
    SUBSTRING(RegionDescription , 1 , 4) AS [Skrócone nazwa regionów]
FROM    
    Region

 


    

SQL MID() function

SQL MID() function


    


DEFINICJA

Funkcja MID() służy do wyodrębnienia ciągu znaków z tekstu znajdującego się w polach o typie tekstowym.

SQL MID() składnia funkcji

SELECT
    MID( nazwa_kolumny , pozycja_początkowa , długość_ciągu )
FROM
    źródło_danych

Parametry:
nazwa_kolumny – określamy tutaj kolumnę na której będziemy używać funkcji MID()
pozycja_początkowa – określamy miejsce początkowe w tekście w polu w kolumnie wskazanym w nazwa_kolumny
długość_ciągu – określamy długość ciągu który chcemy wyodrębnić od miejsca wskazanego w pozycja_początkowa 


INFO: Funkcja MID() nie występuje we wszystkich środowiskach bazodanowych. Np. odpowiednikiem funkcji MID() w SQL SERVER jest funkcja SUBSTRING() a w Oracl będzie to funkcja SUBSTR()


    

SQL LEN() function

SQL LEN() function


    


DEFINICJA

Funkcja LEN() służy do obliczenia długości wskaznego ciągu znaków.

SQL LEN() składnia funkcji

SELECT
    LEN(nazwa_kolumny)
FROM
    nazwa_tabeli


Przykład zastosowania funkcji LEN() (baza Adventureworks)

Wyświetl listę produktów i oblicz długość ich nazw. Wyniki posortuj malejąco wg długości nazw produktów.

SELECT
     Name AS [Nazwa produktu]
    ,LEN(Name) AS [Długość nazwy produktu]
FROM
    Production.Product
ORDER BY
    [Długość nazwy produktu] DESC   


 Przykład zastosowania funkcji LEN() (baza Northwind)

Wyświetl dane pracowników w postaci: Imię , Nazwisko , Długość imienia i nazwiska. Wyniki posortuj malejąco wg długości imienia i nazwiska.

SELECT
     FirstName AS [Imię]
    ,LastName AS [Nazwisko]
    ,LEN(FirstName) + LEN(LastName) AS [Długość imienia i nazwiska]
FROM
    Employees
ORDER BY
    [Długość imienia i nazwiska] DESC