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 CAST

SQL CAST



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()

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

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


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 ze 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 WHERE 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 CROSS JOIN

SQL CROSS JOIN



DEFINICJA

CROSS JOIN służy do łączenia tabel przez utworzenie par wszystkich rekordów z jednej tabeli i z drugiej, takie połączenie zbiorów nazywamy „iloczynem kartezjańskim”. Chodzi o to, że każdy rekord z jednej tabeli stworzy parę ze wszystkimi rekordami z drugiej tabeli. Połączenie takie przedstawia poniższy rysunek.
SQL CROSS JOIN grafika


SQL CROSS JOIN składnia

SELECT
nazwy_kolumy(kolumn)
FROM
tabela1 CROSS JOIN tabela2


Przykład zastosowania CROSS JOIN (baza Northwind)

Zrób zestawienie wszystkich pracowników gdzie każdy pracownik tworzy parę z wszystkimi pozostałymi pracownikami. Żadna para pracowników nie może się powtarzać.

SELECT
P1.LastName + ‚ ‚ + P1.FirstName AS [Pierwszy pracownik]
,P2.LastName + ‚ ‚ + P2.FirstName AS [Drugi pracownik]
FROM
Employees P1 CROSS JOIN Employees P2
WHERE
P1.LastName > P2.LastName
ORDER BY
[Pierwszy pracownik]


SQL CREATE TABLE

SQL CREATE TABLE



DEFINICJA

Polecenie CREATE TABLE służy do tworzenia table w bazie danych. Przy okazji tworzenia tabel określamy jakie kolumny mają się znaleźć w danej tabeli, jakiego typu dane mają tam być przechowywane (np. INTEGER, VARCHAR, DECIMAL itp.) i jakie są powiązania danej tabeli z innymi tabelami w bazie danych. Przy tworzeniu tabeli możemy wskazać także czy dana kolumna ma być kluczem głównym czy obcym (klucze główny i obcy opisany w innym wpisie) lub czy może przechowywać wartości NULL.


Składnia polecenia CREATE TABLE

  CREATE TABLE nazwa_tabeli
(
nazwa_kolumny1 typ_danych(rozmiar),
nazwa_kolumny2 typ_danych(rozmiar),
….
);


Przykład tworzenia tabeli „KLIENCI”

  CREATE TABLE Klienci
(
ID_klienta INT CONSTRAINT PK_klient PRIMARY KEY
,ID_oddzialu INT CONSTRAINT FK_ID_oddzial_Klienci REFERENCES Oddzialy(ID_oddzialu)
,imie NVARCHAR(20)
,nazwisko NVARCHAR(25)
,telefon INT
,mail NVARCHAR(50)
,dataUrodzenia DATE
,dataZalozeniaKonta DATE
,dataZamknieciaKonta DATE
);


SQL CREATE DATABASE

SQL CREATE DATABASE



DEFINICJA

Wyrażenie CREATE DATABASE służy do utworzenia nowej bazy danych. To pierwszy etap do stworzenia w pełni funkcjonalnej bazy danych. Kolejnymi krokami są stworzenie tabel i kolumn w tabelach. Oczywiście przy tworzeniu struktury danych nie należy zapomnieć o zdefiniowaniu powiązań między poszczególnymi tabelami w bazie danych. Wróćmy jednak do polecenia CREATE DATABASE, poniżej przykład utworzenia nowej bazy danych o nazwie „nowa_baza”.

CREATE DATABASE nowa_baza;


SQL CONSTRAINTS

SQL CONSTRAINTS



DEFINICJA

CONSTRAINTS (ograniczenia) to reguły które określają jakie dane mogą się znajdować w tabelach (kolumnach). Część z tych zasad „pilnuje” aby dane wprowadzane do naszej bazy danych były logicznie spójne a część „pilnuje” także żeby działania wykonywane na danych odbywały się zgodnie z tymi zasadami. Z reguły nadajemy je, podczas deklaracji struktury tabel, ale są też sposoby na ich dodanie do już istniejącej struktury (tabeli). Jest kilka takich reguł które krótko opiszę poniżej.


Ogólna składnia CONSTRAINTS

CREATE TABLE nazwa_tabeli
(

nazwa_kolumny typ_danych(rozmiar) nazwa_ograniczenia

)


NOT NULL

Wykorzystując tą zasadę określamy, że dana kolumna nie może  przechowywać wartości NULL.

Przykład zastosowania NOT NULL

CREATE TABLE Pracownicy
(
ID_pracownik int NOT NULL
,Imie varchar(20)
,Nazwisko varchar(50)

)


UNIQUE

Zasada która „mówi”, że kolumna musi przechowywać wartości unikalne. Kolumna z zasadą UNIQUE może przechowywać wartość NULL.

Przykład zastosowania UNIQUE

CREATE TABLE Pracownicy
(
ID_pracownik int UNIQUE
,Imie varchar(20)
,Nazwisko varchar(50)

)


PRIMARY KEY (klucz główny)

To zasada która „mówi”, że kolumna musi zawierać unikalne wartości które w jednoznaczny sposób identyfikują każdy rekord. W kolumnie tej nie możemy przechowywać wartości NULL. Z powyższego opisu można jasno wywnioskować, że PRIMARY KEY to takie połączenie NOT NULL i UNIQUE.


FOREIGN KEY (klucz obcy)

To definiowanie relacji między tabelami (określenie zasad spójności danych w tabelach). Wartości przechowywane w kolumnie, która jest zdefinowana jako klucz obcy w pierwszej tabeli zawsze będą miały swój odpowiednik w kolumnie, która jest zdefiniowana jako klucz główny w drugiej tabeli.


CHECK

Ta zasada „zba” o to, żeby w danej kolumnie znajdowały się wartości które spełniają określony przez nas warunek. Inaczej mówiąc warunek ten musi być prawdziwy dla wszystkich rekordów w danej tabeli.


DEFAULT

Zasada DEFAULT określa wartość domyślną dla danej kolumny.


SQL CHECK

SQL CHECK



DEFINICJA

CHECK to kolejne ograniczenie (CONSTRAINTS) które można nadać na kolumny w tabeli. Ogranicza ono zakres wartości które mogą się pojawić w kolumnie. Ograniczenie to możemy nałożyć na jedną kolumnę, wtedy ognicza ono wartości we wskazanej kolumnie lub nałożyć je na wiele kolumn. Ograniczenie CHECK możemy nadać w momencie tworzenia nowej tabeli lub na już istniejącej tabeli.


Przykład zastosowania CHECK przy tworzeniu nowej tabeli (SQL SERVER).

CREATE TABLE Pracownicy
(
ID_pracownik int NOT NULL CHECK (ID_pracownik >0)
,Imie varchar(20)
,Nazwisko varchar(50)
,Adres varchar(50)
,Email varchar(30)
,Telefon int
)


Przykład zastosowania CHECK przy tworzeniu nowej tabeli (MySQL).

CREATE TABLE Pracownicy
(
ID_pracownik int NOT NULL
,Imie varchar(20)
,Nazwisko varchar(50)
,Adres varchar(50)
,Email varchar(30)
,Telefon int
,CHECK (ID_pracownik > 0)
)


Ogranicznie CHECK możemy nadać już na istniejącą tabelę (kolumnę).

ALTER TABLE Pracownicy
ADD CHECK (ID_pracownik > 0)


SQL ALTER TABLE

SQL ALTER TABLE()



DEFINICJA

Polecenie ALTER TABLE służy do modyfikowania kolumn w  istniejących tabelach. Modyfikacja ta może polegać na dodaniu nowej kolumny, usunięciu istniejącej kolumny lub zmianie (np. typu danych) istniejącej kolumny. Za pomocą tego polecenie może także dodawać lub usuwać ograniczenia z kolumn w tabeli.


Przykład dodania nowej kolumny o nazwie „MiddleName” (o typie danych varchar) do tabeli o nazwie „Employees”
SQL SERVER baza: Northwind

ALTER TABLE
Employees
ADD
MiddleName varchar(10); 


Przykład modyfikacji, zmiany typu danych z varchar na int, na kolumnie „MiddleName” w tabeli „Employees”
SQL SERVER baza:Northwind

ALTER TABLE
Employees
ALTER COLUMN
MiddleName int;


Przykład usunięcia kolumny „MiddleName” z tabeli o nazwie „Employees” (baza: Northwind).
SQL SERVER baza: Northwind

ALTER TABLE
Employees
DROP COLUMN
MiddleName;


SQL AVG

SQL AVG



DEFINICJA

Funkcja AVG() zwraca wartość średnią z kolumny z wartościami liczbowymi.

SQL AVG() składnia.

SELECT
AVG(nazwa_kolumny_z_wartościami_liczbowymi)
FROM
nazwa_tabeli

 


Przykład zastosowania AVG() (baza Adventureworks)

Oblicz średnią wartość zamówień.

SELECT
 AVG(O.SubTotal) AS [Średnia wartość zamówień]
FROM
Sales.SalesOrderHeader O


Przykład zastosowania AVG() (baza Northwind)

Oblicz średnią wartość zamówień klienta o ID WALLI.

SELECT
AVG(SR.[Wartość zamówienia])
FROM(
SELECT
O.OrderID
,SUM(D.Quantity * D.UnitPrice) AS [Wartość zamówienia]
FROM
Orders O JOIN [Order Details] D
ON O.OrderID = D.OrderID
WHERE
O.CustomerID = ‚WELLI’
GROUP BY
O.OrderID        ) AS SR



"Sql server dla opornych" jest blogiem który ma przybliżyć Wam takie tematy jak: programowanie w jezyku SQL i środowisko SQL Server.