opracował: Jacek Izdebski http://ektanet.pl Podstawy języka SQL SQL (ang. Structured Query Language) to strukturalny język (informatyka) zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych DBMS. Jest to język zapytań opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a. Pierwszą firmą, która włączyła SQL do swojego produktu komercyjnego, był Oracle. Dalsze wprowadzanie SQL-a, w produktach innych firm, wiązało się nierozłącznie z wprowadzaniem modyfikacji pierwotnego języka. Wkrótce utrzymanie dalszej jednolitości języka wymagało wprowadzenia standardu. Składnia Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można zaliczyć do jednego z dwóch głównych podzbiorów: • SQL DML (ang. Data Manipulation Language, czyli Język Manipulacji Danymi), • SQL DDL (ang. Data Definition Language, czyli Język Definicji Danych). Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to wymóg. Każde zapytanie w SQL-u musi kończyć się znakiem ”;” (średnik). Dodatkowo, niektóre interpretery SQL (np. psql w przypadku PostgreSQL), używają swoich własnych instrukcji, spoza standardu SQL, które służą np. do połączenia się z bazą, wyświetlenia dokumentacji, itp. DML DML służy do operacji na danych - do ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia z tego zbioru to: • SELECT - pobranie z bazy danych, 1 opracował: Jacek Izdebski http://ektanet.pl • INSERT - umieszczenie danych w bazie, • UPDATE - zmiana danych, • DELETE - usunięcie danych z bazy. Dane tekstowe podawane muszą być zawsze w formie ograniczonej znakami pojedynczego cudzysłowu (’). DDL Dzięki DDL natomiast, można operować na strukturach, w których te dane są przechowywane - czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważeniejsze polecenia tej grupy to: • CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie struktury (bazy, tabeli, indeksu, itp.), • DROP (np. DROP TABLE, DROP DATABASE, ...) - całkowite usunięcie struktury, • ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli). Przykładowe zapytania Przykładowe użycie wyżej wymienionych rodzajów zapytań. SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC; Wyświetla z tabeli pracownicy (FROM pracownicy) wszystkie kolumny (*) dotyczące tych pracowników, których pensja jest większa niż 2000 (WHERE pensja > 2000) i sortuje wynik malejąco według stażu pracy (ORDER BY staz DESC). INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES (’Jan’, ’Kowalski’, 5500, 1); Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) zawierający dane pojedynczego pracownika. UPDATE pracownicy SET pensja=pensja * 1.1 WHERE staz > 2; Podnosi o 10% (SET pensja = pensja * 1.1) pensję pracownikom, których staż jest większy niż 2 (np. lata). 2 opracował: Jacek Izdebski http://ektanet.pl DELETE FROM pracownicy WHERE imie=’Jan’ AND nazwisko=’Kowalski’; Usuwa z tabeli ”pracownicy” wiersz (rekord) dotyczący pracownika o imieniu ”Jan” i nazwisku ”Kowalski”. CREATE TABLE pracownicy (imie varchar(255), nazwisko varchar(255), pensja float, staz int); Tworzy tabelę ”pracownicy” zawierającą tekstowe (varchar - zmiennej długości pole tekstowe) pola ”imię” i ”nazwisko”, o maksymalnej długości 255 znaków, zapisaną za pomocą liczby rzeczywistej (float od ang. floating point) pensję oraz zapisany za pomocą liczby całkowitej (int od ang. integer) staż. DROP TABLE pracownicy; Usuwa z bazy całkowicie tabelę ”pracownicy”. ALTER TABLE pracownicy ADD COLUMN dzial varchar(255); Dodaje do struktury tabeli ”pracownicy” kolumnę ”dzial” (dział), jako pole tekstowe o długości max. 255 znaków. 1 Połączenie z bazą MySQL Do połączenia z bazą użyjemy klienta mysql wywołanie z linii poleceń jest następujące: mysql -u root aby zakończyć połączenie należy wpisać polecenie exit. 1.1 Ćwiczenie 1 Połącz się z bazą danych i utwórz bazę danych o nazwie takiej jak Twoje nazwisko np.: create database izdebski; przejdź do utworzonej przez siebie bazy przy pomocy polecenia use np.: use izdebski; utwórz tabelę o nazwie moja klasa zawierającą pola id, imie, nazwisko. Pole id ma być kluczem głównym i zawierać wartość liczbową z ustawioną autonumeracją. create table moja_klasa (id int not null auto_increment, imie varchar(30), nazwisko varchar(50), primary key (id)); 3 opracował: Jacek Izdebski http://ektanet.pl 1.2 Ćwiczenie 2 Wyświetl i obejrzyj strukturę utworzonej tabeli poleceniem: describe moja_klasa; 1.3 Ćwiczenie 3 Wpisz do bazy imiona i nazwiska wszystkich uczniów z Twojej klasy. insert into moja_klasa values (’’,’Jacek’,’Izdebski’); 1.4 Ćwiczenie 4 Wyświetl zawartość tabeli moja klasa. Potrzebne informacje na temat składni poleceń SQL możesz przeczytać w internecie (np.: http://home.pl/pomoc/ kursy/sql). 4