Creativity | Reliability | Innovations

Relacyjne bazy danych – podstawy składni T-SQL

Pomimo istnienia wielu narzędzi graficznych stworzonych w celu ułatwienia zarządzania bazą danych, wciąż najważniejsza jest znajomość rzeczywistej składni danego języka bazodanowego, ponieważ tylko z poziomu linii poleceń mamy największą kontrolę nad naszą bazą, co umożliwia nam tworzenie zapytań i kwerend o dowolnym zakresie i złożoności, co nie jest już takie proste przy z reguły ograniczonym interfejsie użytkownika.

Niezależnie od stosowanego języka zapytań, funkcjonowanie całej bazy danych opiera się tak naprawdę na kilku podstawowych poleceniach: SELECT, INSERT, UPDATE i DELETE. Polecenia te pozwalają nam zarówno na wyświetlanie zawartości całej bazy bądź też poszczególnych jej elementów, tworzenie i usuwanie rekordów czy też modyfikowanie już istniejących wpisów w bazie. W dalszej części tego materiału każde z wyżej wymienionych poleceń rozbijemy na czynniki pierwsze i dogłębnie przeanalizujemy ich działanie.

Na wstępie ważna uwaga – przed przystąpieniem do pracy pamiętajmy najpierw o wskazaniu naszej bazy danych. Aby tego dokonać, stosujemy następujące polecenie:

USE nazwa_bazy_danych;

Po wykonaniu powyższego polecenia możemy już spokojnie kontynuować.

1. Pobranie danych z bazy i ich wyświetlenie – SELECT

Pierwszym podstawowym poleceniem w języku zapytań T-SQL jest SELECT. Operacja ta pozwala nam na wskazanie interesującej nas tabeli w bazie danych i wyświetlenie jej zawartości, o ile taką posiada. Dzięki elastyczności języka T-SQL możemy tworzyć różnego rodzaju skomplikowane kwerendy, pozwalające nam na sortowanie danych według wartości wybranej kolumny. Jest to najbardziej pasywne polecenie w T-SQL, którego działanie w żaden sposób nie wpływa na dane w tabeli jak i na samą bazę danych, służy ono tylko i wyłącznie do odczytu danych.

Podstawowe wywołanie funkcji – wyświetlenie wszystkich elementów tablicy Pracownik:

SELECT * FROM Pracownik;
Wynik

Zastosowanie znaku „*” w poleceniu oznacza, że wybieramy wszystkie elementy z tablicy Pracownik. Gdyby zależało nam na wyświetleniu wyłącznie danych pracowników, których nazwisko zaczyna się na K, wtedy wywołanie funkcji wyglądałoby tak:

 SELECT * FROM Pracownik WHERE nazwisko LIKE 'K%' ORDER BY nazwisko;
Wynik

Jak rozumiemy to polecenie? Wybieramy wszystkie elementy z tablicy Pracownik, w których wartość kolumny nazwisko
zaczyna się od litery K, a następnie sortujemy je według tej kolumny za pomocą parametru ORDER BY. Jeżeli po nazwie kolumny nie podamy kryterium sortowania, dane domyślnie pozostaną ułożone alfabetycznie – w innym wypadku do sortowania alfabetycznego i sortowania odwrotnego stosujemy odpowiednio parametry ASC i DESC, od angielskich słów ascending oraz descending – rosnąco lub malejąco. Co ważne, tyczy się to zarówno znaków jak i liczb, także niezależnie od tego, jakiego typu są dane w naszej tabeli, to pozostaną one posortowane adekwatnie do niego.

Jeżeli chcemy wyświetlić jedynie wartość konkretnej kolumny w tabeli, a nie całą jej zawartość, zamiast znaku „*” wprowadzamy nazwę kolumny. Wtedy:

SELECT nazwisko FROM Pracownik;
Wynik

Kolejnym przydatnym parametrem jest DISTINCT. Służy on do usuwania kopii tej samej wartości przed jej wyświetleniem – jeżeli kilka rekordów ma tą samą wartość w danej kolumnie, to zostanie ona wyświetlona tylko raz – pozostałe jej kopie zostaną pominięte. Dzięki temu nie zaciemni nam to obrazu przy analizie wyniku wyszukiwania informacji w bazie danych. Przy okazji wyświetlone dane zostaną też automatycznie posortowane.

SELECT DISTINCT nazwisko FROM Pracownik;
Wynik

Poniżej znajduje się lista parametrów, jakie można użyć wraz z poleceniem SELECT.

Nazwa parametru
Działanie
Przykład użycia
WHERE Podstawowy parametr filtrowania danych; Pozwala na określenie kryterium, jakie przed wyświetleniem muszą spełnić elementy tablicy. SELECT * FROM Pracownik WHERE nazwisko=’Kowalski’;
LIKE Podobne do WHERE; Pełni rolę uzupełniającą dla WHERE; Filtrowanie danych jest bardziej precyzyjne i pozwala wskazać wzorzec, według którego wyświetlamy dane. Symbol „%” oznacza dowolnej długości ciąg znaków lub liczb, natomiast symbol „_” oznacza pojedynczy znak lub cyfrę. Przydatne przy wyświetlaniu danych zaczynających się od konkretnej litery. SELECT * FROM Pracownik WHERE nazwisko LIKE 'K%’;
DISTINCT Pozwala określić parametr tabeli, którego wartość ma zostać zwrócona. Powtarzające się wiersze zostają usunięte przed wyświetleniem – jeżeli cztery osoby mają na nazwisko Kowalski, to nazwisko to wyświetli się w zestawieniu tylko raz. SELECT DISTINCT nazwisko FROM Pracownik;

2. Wprowadzanie danych do tabeli – INSERT

Do wprowadzania danych do utworzonej wcześniej przez nas tabeli wykorzystujemy polecenie INSERT. Niemal zawsze występuje ono razem z dyrektywą INTO, określającą obiekt docelowy, do którego wprowadzamy nasze dane.

Ogólna konstrukcja polecenia INSERT wygląda następująco:

INSERT INTO nazwa_tabeli VALUES (
'wartość_1', 'wartość_2', 'wartość_3'
);

Działanie polecenia tłumaczymy w tym wypadku dosłownie – do tabeli nazwa_tabeli wprowadź wartości: wartość_1wartość_2 oraz wartość_3Pamiętajmy o wprowadzaniu każdej pojedynczej wartości wewnątrz znaków apostrofu, a następnie oddzielenia jej znakiem przecinka od poprzedniej wartości.

INSERT INTO Pracownik VALUES (
'Jan', 'Kowalski'
);

Zwróćmy uwagę na to, że nie musimy wprowadzać numeru ID pracownika – robi to za nas automatycznie sama baza. My musimy tylko i wyłącznie podać wartości standardowych pól określonych w tabeli.

Pod względem złożoności, polecenie INSERT jest najmniej skomplikowane spośród wszystkich występujących w języku T-SQL. Pamiętajmy jednak, że nie możemy zastosować polecenia INSERT przy wprowadzaniu danych do już istniejącego rekordu w bazie – do tego służy oddzielna komenda UPDATE, o której więcej za chwilę.

3. Aktualizacja istniejących danych – UPDATE

Polecenie UPDATE służy tylko i wyłącznie do aktualizacji wprowadzonych danych lub do uzupełnienia braków w poszczególnych kolumnach tabeli. Podstawowe wywołanie tej funkcji wygląda następująco:

UPDATE Pracownik
SET imie='Jan', nazwisko='Nowak'
WHERE idPracownika=1;

Kluczowym etapem jest wskazanie ID interesującego nas rekordu – w celu uniknięcia błędu i wprowadzenia danych do niewłaściwego elementu, najlepiej w pierwszej kolejności kontrolnie wylistować zawartość tabeli, a następnie zlokalizować konkretny rekord.

4. Usuwanie danych z tabeli – DELETE

Ostatnie polecenie służy do usuwania danych z tabeli, ale nie samej tabeli. Konstrukcja polecenia w dużej mierze przypominą tą z SELECT-a, a więc:

DELETE FROM Pracownik WHERE nazwisko='Kowalski';

W powyższym wywołaniu usuwamy wszystkie rekordy z tabeli Pracownik, w których kolumna nazwisko przyjmuje wartość Kowalski. Usunięciu ulegną tu zatem dwa rekordy – Jan Kowalski oraz Bogdan Kowalski. Oczywiście wzorzec ten możemy dowolnie modyfikować – możemy chociażby zastosować konstrukcję wykorzystującą parametr LIKE, który pozwoli na usunięcie danych pracowników, których nazwisko zaczyna się od konkretnej litery.

DELETE FROM Pracownik WHERE nazwisko LIKE 'K%';

5. Pozostałe przydatne polecenia – CREATE, DROP, TRUNCATE, ALTER

5.1 Tworzenie bazy danych lub tabeli – CREATE

Polecenie CREATE służy zarówno do tworzenia nowej bazy danych, lub też do tworzenia tabeli w nowo powstałej bazie.

Aby stworzyć nową bazę danych, stosujemy poniższą formułę:

CREATE DATABASE nazwa_bazy_danych;

Tworzenie tabeli jest już niestety nieco bardziej skomplikowane, ponieważ poza nazwą samej tabeli musimy również podać nazwę jej poszczególnych kolumn, jak również określić ich typ i wskazać kolumnę mającą pełnić funkcję klucza podstawowego. W większości przypadków taka formuła powinna być wystarczająca:

CREATE TABLE Pracownik (
idPracownik numeric(5) NOT NULL PRIMARY KEY,
imie varchar(30),
nazwisko varchar(30)
);

Przy tworzeniu nowej tabeli warto jest ustawić flagę PRIMARY KEY od razu na pierwszym elemencie – pamiętajmy wtedy tylko o wcześniejszym dodaniu parametru NOT NULL w celu zablokowania możliwości przyjmowania przez klucz podstawowy wartości NULL.

5.2 Usuwanie bazy danych lub tabeli – DROP

Jeżeli chcemy pozbyć się przestarzałej bazy danych lub nieużywanej już tabeli, pomocą służy tu polecenie DROP. Bardzo ważne jest jednak to, aby przy korzystaniu z tego polecenia zachować szczególną ostrożność – przy odrobinie nieuwagi możemy usunąć całą bazę danych zamiast pojedynczej tabeli.

DROP TABLE Pracownik;

Wykonanie powyższej linijki spowoduje usunięcie całej tabeli wraz z jej zawartością. Jeżeli natomiast chcemy usunąć całą bazę danych, to stosujemy konstrukcję:

DROP DATABASE nazwa_tabeli;

5.3 Czyszczenie zawartości tabeli bez jej usuwania – TRUNCATE

Czasami zdarzy się sytuacja, w której chcemy zachować dotychczasową strukturę tabeli w naszej bazie, a jedynie usunąć dane, które przechowuje. W tym wypadku idealnie się spisze polecenie TRUNCATE, które wyczyści tylko i wyłącznie rekordy danej tabeli. Konstrukcja takiej operacji jest bardzo prosta:

TRUNCATE TABLE Pracownik;

5.4 Modyfikacja tabeli – ALTER

Wielokrotnie podczas projektowania tabeli w bazie danych możemy zapomnieć o dodaniu jakiejś kolumny, bądź też uznamy, że danej kolumny nie potrzebujemy. Wtedy korzystamy z polecenia ALTER. Konstrukcja polecenia ALTER jest dwojaka – możemy z jednej strony dodać nową kolumnę, jak i usunąć tą istniejącą.

Wariant 1 – dodanie nowej kolumny:

ALTER TABLE Pracownik
ADD COLUMN nazwisko varchar(30);

Wariant 2 – usunięcie istniejącej kolumny:

ALTER TABLE Pracownik
DROP COLUMN nazwisko;

W przypadku drugiego wariantu możemy pominąć typ danych usuwanej kolumny.

Istnieje również trzeci wariant – możemy po prostu zmienić nazwę istniejącej kolumny. stosując wbudowaną procedurę serwera SQL zwaną sp_rename:

sp_rename 'Pracownik.nazwiskoPracownika', 'nazwisko', 'COLUMN';

W powyższym przykładzie po nazwie procedury musimy podać nazwę tabeli i po kropce podać nazwę zmienianej kolumny, a następnie podać jej nową nazwę, już bez konieczności ponownego wskazywania tabeli docelowej.

6. Podsumowanie

W tym materiale omówiliśmy podstawową składnię języka T-SQL wykorzystywaną w zarządzaniu bazą danych, jak również kilka innych dodatkowych poleceń, ułatwiających modyfikację tablic i danych w bazie. Poniżej znajdziecie zestawienie wszystkich wymienionych w tym wpisie poleceń wraz ze streszczeniem ich działania i podstawową konstrukcją.

Nazwa polecenia
Opis działania
Podstawowe wywołanie
SELECT
Wyświetlenie zawartości bazy danych lub tabeli
SELECT * FROM nazwa_tabeli;
INSERT
Wprowadzenie danych do tabeli
INSERT INTO nazwa_tabeli VALUES (wartość_1, wartość_2);
UPDATE
Aktualizacja istniejącego rekordu w tabeli
UPDATE nazwa_tabeli SET kolumna_1 = 'wartość_1′ WHERE id_tabeli = 1;
DELETE
Usunięcie rekordu z tabeli
DELETE FROM Pracownik WHERE kolumna_1 = 'wartość_1′;
CREATE
Stworzenie nowej bazy danych lub tabeli
CREATE DATABASE nazwa_bazy;

CREATE TABLE nazwa_tabeli (kolumna_1 typ_danych NOT NULL PRIMARY KEY, kolumna2 typ_danych);

DROP
Usunięcie istniejącej bazy danych lub tabeli (ryzykowne)
DROP DATABASE nazwa_bazy_danych;

DROP TABLE nazwa_tabeli;

TRUNCATE
Wyczyszczenie zawartości tabeli z zachowaniem jej struktury
TRUNCATE TABLE nazwa_tabeli;
ALTER
Modyfikacja struktury istniejącej tabeli – dodanie, usunięcie lub zmiana nazwy kolumny w tabeli
ALTER TABLE nazwa_tabeli ADD kolumna_1 typ_danych;

ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny;

sp_rename 'nazwa_tabeli.stara_nazwa_kolumny’, 'nowa_nazwa_kolumny’, 'COLUMN’;

0 0 votes
Article Rating
Subscribe
Powiadom o

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x