Wstęp

Umiejętność posługiwania się językiem SQL staje się obecnie standardem wymaganym od testera. Osobiście w swojej codziennej pracy wielokrotnie z niej korzystałem – nie tylko podczas wykonywania testów bezpieczeństwa (chociaż nie da się ukryć, że jeżeli marzysz o karierze pentestera, to wspomniany temat musisz poznać bardzo dogłębnie). Ten artykuł ma na celu nauczenie Cię podstawowych zagadnień związanych z językiem MySQL w praktyczny sposób.

 

Uruchomienie MySQL’a

Skoro obiecałem, że artykuł będzie miał charakter praktyczny, to nie pozostaje nam nic innego jak rozpoczęcie od zalogowania się do MySQL’a.

Co? Gdzie? Jak?
Za szybko? Nie przejmuj się – tutaj masz link do artykułu jak zainstalować system Kali Linux, na którym MySQL jest już gotowy do użycia. Możesz również skorzystać z XAMPP, czy jakiegokolwiek innego rozwiązania, które preferujesz. Kiedy będziesz mieć już dostęp do MySQL’a (w tym artykule będziemy bawić się z poziomu konsoli), to przejdź do następnego punktu.

 

Jeżeli korzystasz z rekomendowanej przeze mnie opcji (tej z instalacją Kaliego), to otwórz terminal i wpisz następującą komendę:

/etc/init.d/mysql start

 

Spowoduje to uruchomienie serwisu MySQL. A teraz zaloguj się do MySQL używając domyślnych danych – login: root, bez hasła:

mysql -u root

 

 

Podstawowe komendy

Tworzenie bazy danych (CREATE DATABASE)

Wreszcie możesz stworzyć swoją pierwszą bazę danych. Kontrolnie sprawdź obecny stan dostępnych baz danych z użyciem komendy (pamiętaj, żeby pisząc komendę MySQL zakończyć ją średnikiem):

show databases;

 

A następnie utwórz bazę danych używając komendy przedstawionej poniżej i sprawdź czy została prawidłowo utworzona:

create database protesterzy;

 

 

Tworzenie tabeli (CREATE TABLE)

Skoro masz już swoją bazę danych, to następnym krokiem będzie stworzenie tabeli przechowującej dane. Najprościej będzie zrobić to na konkretnym przykładzie – załóżmy, że nasza tabela ma przechowywać dane komentarzy i zawierać następujące kolumny: id komentarza, id artykułu, nazwa użytkownika, adres email, treść komentarza, czas utworzenia.

Na tym etapie warto zastanowić się, jaką nazwę i typ powinny posiadać wspomniane kolumny. Obszerną listę wraz z opisem znajdziesz tutaj, a moja propozycja (możesz także wziąć na siebie odpowiedzialność dobrania odpowiednich typów danych 😉 ) dla naszych potrzeb to:

id – bigint(20)

idArtykul –  bigint(20)

nazwaAutor – tinytext

emailAutor – varchar(100)

komentarzTresc – text

czasDodania  datetime

Skoro wszystko mamy jasne, to najpierw wybierz bazę danych której chcesz użyć:

use protesterzy;

A następnie stwórzmy wreszcie wspomnianą tabelę:

CREATE TABLE Komentarze(
id BIGINT(20) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
idArtykul BIGINT(20) UNSIGNED NOT NULL,
nazwaAutor TINYTEXT NOT NULL,
emailAutor VARCHAR(100),
komentarzTresc text,
czasDodania Datetime
);

 

 

 

Kilka rzeczy z powyższej komendy wymaga doprecyzowania:

 

UNSIGNED – w ten sposób określam, że dana kolumna ma przyjmować tylko wartości dodatnie (lub zero)

AUTO_INCREMENT – chcę, żeby z każdym dodanym komentarzem, ten numer automatycznie się powiększał

PRIMARY_KEY – ustawienie klucza głównego, wyjaśnienie tego zagadnienia pozostawię na kolejną część artykułu, która będzie dotyczyła relacyjnych baz danych

 

Sprawdź, czy tabela została poprawnie dodana:

show tables;

 

 

Wstawianie danych do tabeli (INSERT)

Masz dwie możliwości użycia komendy INSERT w celu wstawienia danych do tabeli. Wyglądają one następująco:

    1. INSERT INTO nazwa_tabeli (nazwa_kolumny1, nazwa_kolumny2, …) VALUES (wartość1, wartość2m, …)
      Zwykle będziesz używać tej komendy kiedy będziesz wstawiać dane tylko do niektórych kolumn, lub nie chcesz układać danych w taki sam sposób, w jaki ułożone są kolumny w tabeli.

 

  1. INSERT INTO nazwa_tabeli VALUES (wartość1, wartość2, …)
    Mimo, że ta komenda wygląda na krótszą i prostszą, bo nie wymaga znajomości nazw kolumn, to w tym wypadku musisz pamiętać o tym, żeby wpisywane wartości odpowiadały układowi kolumn.

Wstawmy nasz pierwszy komentarz:

INSERT INTO Komentarze
(idArtykul, nazwaAutor, emailAutor, komentarzTresc)
VALUES
('1', 'Matt', 'matt@protesterzy.pl', 'Hello World');

 

 

Wyświetlanie danych z tabeli (SELECT)

Po tym jak wstawiliśmy komentarz do bazy danych, warto sprawdzić czy został dodany poprawnie – w tym celu najprostszą opcją będzie wyświetlenie wszystkich danych znajdujących się w tabeli (przy większej ilości danych, będziemy stosować odpowiednie funkcje zawężające wyniki wyszukiwania do tych, które są nam potrzebne – zostanie to dokładniej opisane w części drugiej).

Select * from Komentarze;

 

 

Jeżeli zamiast gwiazdki wprowadzisz nazwę kolumny/kolumn to zawęzisz nieco wyniki – wyświetlmy tylko nazwę autora i treść komentarza:

Select nazwaAutor, komentarzTresc from Komentarze;

 

 

 

Dodaj teraz jeszcze kilka rekordów – będzie nam to potrzebne do kolejnych zadań. Moja baza danych wygląda teraz następująco:

 

 

 

Załóżmy, że chcę wyświetlić jedynie nazwę autora wraz z komentarzem, które dotyczą artykułu z id = 1. W tym celu mogę użyć następującej komendy:

SELECT nazwaAutor, komentarzTresc from Komentarze where idArtykul = 1;

 

 

 

W zależności od potrzeb, zamiast znaku = możemy użyć dowolnego operatora logicznego. A gdyby do powyższego założenia dołożyć kolejny warunek mówiący, że wyniki powinny zostać wyświetlone w sposób posortowany alfabetycznie po nazwie autora? Nie ma problemu, możemy użyć funkcji order by:

SELECT nazwaAutor, komentarzTresc from Komentarze where idArtykul = 1 order by nazwaAutor ASC;

 

Do wyboru masz następujące opcje sortowania:

ASC – sortowanie rosnąco

DESC – sortowanie malejąco

 

Podsumowanie

Na tym chciałbym zakończyć część pierwszą. Wiedza którą już posiadasz, powinna pozwolić ci na tworzenie baz danych, tabel i kolumn. Dodawanie i wyświetlanie wpisów również nie powinno stanowić problemu. Jako skrupulatny tester, prawdopodobnie zauważyłeś mały błąd, który wkradł się w pierwszy dodany do mojej tabeli rekord – a mianowicie brak daty. Będziemy go naprawiać wspólnie w kolejnej części artykułu gdzie poruszymy m.in. bardziej zaawansowane metody wyciągania danych, edytowanie i usuwanie rekordów, a także tematykę relacyjnych baz danych.

 

Privacy Preference Center