SQL - Structured Query Language Język relacyjnych baz danych Podstawowe komponenty SQL • DDL (Data Definition Language) – język definiowania struktur danych (CREATE) i kontroli dostępu • DQL (Data Query Language) – język definiowania zapytań dla wyszukiwania danych (SELECT) • DML (Data Manipulation Language) – język operacji na danych (INSERT, UPDATE, DELETE), tj. służący do wyszukiwania i modyfikowania danych Polecenie – „CREATE” • polecenie SQL używane do tworzenia obiektów • pozwala tworzyć tabele określając jej nazwę, kolumny, indeksy oraz mechanizm i język porównywania napisów • umożliwia nakładanie ograniczeń w stosunku do jednego lub wielu pól Polecenie – „CREATE” - składnia CREATE TABLE nazwa_tabeli (typ_pola1 [(rozmiar)] [NOT NULL] [indeks1] [, typ pola2 [(rozmiar)] [NOT NULL] [indeks2] … [, typ polan [(rozmiar)] [NOT NULL] [indeksn] [, CONSTRAINT indeks_wielopolowy [, ...]]); Polecenie – „CREATE” - składnia • nazwa_tabeli - Nazwa tabeli, która ma zostać utworzona. • pole1, pole2 - Nazwa pola lub pól, jakie mają zostać • • • • utworzone w nowej tabeli. Należy utworzyć przynajmniej jedno pole. typ - Typ danych pola w nowej tabeli. rozmiar - Rozmiar pola wyrażony w znakach (tylko pola zawierające dane tekstowe i binarne). indeks1, indeks2 - Klauzula CONSTRAINT określająca indeks jednopolowy. indeks_wielopolowy - Klauzula CONSTRAINT określająca indeks wielopolowy Polecenie – „CREATE” - ograniczenia • typy ograniczeń, jakie możemy nakładać na tabelę przy pomocy klauzuli CONSTRAINT w instrukcji CREATE TABLE ▫ PRIMARY KEY – wyznacza pole (lub grupę pól), które tworzy klucz podstawowy, ▫ UNIQUE – określa klucz unikatowy, ▫ NOT NULL – wykluczenie wartości NULL w określonym polu, ▫ FOREIGN KEY – określa pole klucza obcego w tabeli Polecenie – „CREATE” - przykład CREATE TABLE IF NOT EXISTS `logs` ( `id_logs` int(11) NOT NULL auto_increment, `id_users` int(11) default NULL, `name` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `data` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`id_logs`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; - Tworzy tabelę o nazwie ‘logs’ zawierającą 5 kolumn Ustawia mechanizm na InnoDB oraz język porównywania napisów na UTF8 Kluczem podstawowym jest kolumna ‘id_logs’ auto_increment nadaje kolumnie ‘id_logs’ automatyczną numeracje wpisów Polecenie – „SELECT” • podstawową, najczęściej używaną instrukcją języka SQL jest instrukcja SELECT, która służy do pobierania danych z jednej tabeli lub większej liczby tabel. • niezależnie od liczby tabel oraz niezależnie od rodzaju operacji wykonywanych na zbiorach, zawsze jako wynik otrzymujemy wirtualną pojedynczą tabelę (tzw. dynamiczny zestaw wyników), którą dalej możemy przetwarzać. Polecenie – „SELECT” – składnia SELECT parametry FROM nazwa_tabel WHERE warunki SORT BY kolumna typ_sortowania ORDER BY kolumna LIMIT start, ilość; Polecenie – „SELECT” – składnia • parametry – lista kolumn, które chcemy pobrać w • • • • • • zapytaniu(symbol ‘*’ oznacza wszystkich kolumn z tabel określonych w nazwa_tabel) nazwa_tabel – lista tabel, z których chcemy korzystać w zapytaniu(pobierać z nich dane lub budować na nich relacje) warunki – warunki jakie mają spełniać pobierane dane kolumna – nazwa kolumny po której dane mają być grupowane lub sortowane typ_sortowania – malejące(DESC)/rosnące(ASC) start – nr rekordu od którego zaczyna się pobierać dane ilość – maksymalna ilość pobieranych rekordów Polecenie – „SELECT” - przykład SELECT * FROM `logs` WHERE `id_users` = 1 AND `type` = ‘error’ SORT BY data DESC LIMIT 0, 10; Zapytania wyświetli maksymalnie 10 rekordów posortowanych od ostatnio dodanego z wszystkimi kolumnami jakie zawiera tabela w których `id_users` = 1 i `type’ = ‘error’. Polecenie – „INSERT” • pozwala wprowadzań dane do tabel w bazie danych • umożliwia dodania jednego lub wielu rekordów naraz Polecenie – „INSERT” - składnia INSERT INTO nazwa_tabeli (kolumna1,kolumna2,…,kolumnan) VALUES (dane1,dane2,…,danen), …, (dane1,dane2,…,danen); Polecenie – „INSERT” – składnia • nazwa_tabeli – nazwa tabeli do której chcemy wprowadzić dane • kolumna(1..n) – kolumny do których chcemy wprowadzić dane • dane(1..n) – dane wprowadzane do tabeli odpowiednio do wybranych kolumn Polecenie – „INSERT” - przykład INSERT INTO `logs` (`id_logs`,`id_users`,`name`,`type`,`data`) VALUES (NULL,1,’tworzenie wpisu’,’error’,NULL), (NULL,1,’tworzenie wpisu’,’success’,NULL); Polecenie dodaje do tabeli `logs` dwa rekordy. NULL w liście wprowadzanych danych powoduje wstawienie domyślnych wartości kolumny ustawione przy tworzeniu tabeli. Polecenie – „UPDATE” • pozwala na aktualizacje danych w wstawionych już rekordach. • umożliwia edycje jednego lub wielu rekordu jednocześnie Polecenie – „UPDATE” – składnia UPDATE nazwa_tabeli SET kolumna1 = wartość, …, kulmnan = wartośćn, WHERE warunki; Polecenie – „UPDATE” - składnia • nazwa_tabeli – nazwa tabeli, w której chcemy zaktualizować dane • kolumna(1..n) – kolumny w których chcemy dokonać zmian • wartość(1..n) – wartości, którymi chcemy wypełnić komórki • warunki – warunki jakie musi spełnić rekord aby dokonać w nim aktualizacji danych Polecenie – „UPDATE” – przykład UPDATE `logs` SET `name` = ‘tworzenie wpisu - aktualności’ WHERE `id_users` = 1; Polecenie zmienia wartość kolumny `name` z ‘tworzenie wpisu’ na ‘tworzenie wpisu – aktualności’ w rekordach, w których `id_users` = 1. Polecenie – „DELETE” • polecenie umożliwia usuwanie rekordów z tabeli • umożliwia usunięcie jednego lub wielu rekordów jednocześnie Polecenie – „DELETE” - składnia DELETE FROM nazwa_tabeli WHERE warunki; Polecenie – „DELETE” - składnia • nazwa_tabeli – nazwa tabeli, z której mają być usunięte dane • warunki – warunki jakie musi spełnić rekord by mógł zostać usunięty Polecenie – „DELETE” - przykład DELETE FROM `logs` WHERE `type` = ‘error’; Polecenie usuwa rekordy z tabeli `logs`, w których komórka `type` równa się ‘error’. Polecenie – „GRANT” • tworzenie użytkowników bazy danych • nadawanie uprawnień użytkownikom Polecenie „GRANT” - składnia GRANT lista_praw_dostepu ON nazwa_tabeli TO nazwa_uzytkownika Polecenie „GRANT” - składnia • lista_praw_dostepu – lista typów uprawnień jakie mają zostać nadane użytkownikowi • nazwa_tabeli – nazwa tabeli do której maja zostać nadane uprawnienia • nazwa_uzytkownika – nazwa użytkownika do którego mają zostać przypisane uprawnienia Polecenie – „GRANT” - przykład GRANT SELECT, INSERT, UPDATE ON `logs` TO biuro Polecenie nadaje uprawnienia użytkownikowi biuro do pobierania, wstawiania i uaktualniania danych w tabeli `logs` i tworzy go jeśli nie istnieje. http://it.dth.pl/grant-oraz-revoke-kurs-jezyka-sql-mysql-cz-1/ http://pl.wikipedia.org http://www.w3schools.com Książka: „PHP i MySQL Tworzenie stron WWW F7 2005”