Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05
Bazy danych - wykład 82 Structured Query Language Standardy (używane!) –SQL92 –SQL99 –SQL:2003 Żaden dostawca nie jest w pełni zgodny ze standardem prawie wszyscy wprowadzają rozszerzenia, prawie nikt nie spełnia wszystkich wymogów –W dużych systemach komercyjnych odejście od wymogów nie jest wielkie
Bazy danych - wykład 83 mysql> CREATE DATABASE Studenci; Query OK, 1 row affected (0.00 sec) mysql> USE Studenci; Database changed mysql> CREATE TABLE Nazwiska (NrIndeksu INT NOT NULL, -> Imie VARCHAR(16), -> Nazwisko VARCHAR(16), PRIMARY KEY(NrIndeksu)); Query OK, 0 rows affected (0.00 sec) Z powodów historycznych polecenia SQL nazywa si ę zapytaniami (ang. query)
Bazy danych - wykład 84 CREATE TABLE NazwaTabeli (NazwaKolumny1 TypKolumny1 [NULL | NOT NULL], NazwaKolumny2 TypKolumny2 [NULL | NOT NULL], … ) PRIMARY KEY (Nazwy_Kilku_Kolumn)); Formalne typy danych odpowiadaj ą najcz ęś ciej wyst ę puj ą cym danym rzeczywistym (ca ł kowite o ró ż nym zakresie, rzeczywiste pojedynczej i podwójnej precyzji, znakowe, tekstowe, daty-i-czasu)
Bazy danych - wykład 85 mysql> INSERT INTO Nazwiska VALUES (12345, 'Jan', 'Kowalski'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Nazwiska VALUES -> (12346, 'Ewa', 'Piotrowska'), -> (12349, 'Tomasz', 'Kowlaski'), -> (12355, 'Agnieszka','Nowak'); Query OK, 3 rows affected (0.06 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> INSERT INTO Nazwiska (NrIndeksu,Nazwisko) -> VALUES (12378,'Batory'); Query OK, 1 row affected (0.00 sec) Wstawianie danych
Bazy danych - wykład 86 mysql> SELECT * FROM Nazwiska; | NrIndeksu | Imie | Nazwisko | | | Jan | Kowalski | | | Ewa | Piotrowska | | | Tomasz | Kowlaski | | | Agnieszka | Nowak | | | NULL | Batory | rows in set (0.00 sec) Co teraz jest w tabeli?
Bazy danych - wykład 87 Sk ł adnia zapytania SELECT: SELECT [DISTINCT] lista select FROM Tabela lub z łą czenie WHERE warunek logiczny GROUP BY wyra ż enie grupuj ą ce HAVING warunek wyszukiwania po grupowaniu ORDER BY wyra ż enie porz ą dkuj ą ce [ASC | DESC] ;
Bazy danych - wykład 88 mysql> UPDATE Nazwiska SET Nazwisko='Kowalski' -> WHERE Nazwisko='Kowlaski'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> UPDATE Nazwiska SET Imie='Stefan' -> WHERE IsNull(Imie); Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
Bazy danych - wykład 89 mysql> SELECT Nazwisko FROM Nazwiska; | Nazwisko | | Kowalski | | Piotrowska | | Kowalski | | Nowak | | Batory | rows in set (0.00 sec) Duplikaty!
Bazy danych - wykład 810 mysql> SELECT DISTINCT Nazwisko FROM Nazwiska -> ORDER BY Nazwisko DESC; | Nazwisko | | Piotrowska | | Nowak | | Kowalski | | Batory | rows in set (0.00 sec)
Bazy danych - wykład 811 mysql> SELECT * FROM Nazwiska WHERE Nazwisko LIKE "Ko%; | NrIndeksu | Imie | Nazwisko | | | Jan | Kowalski | | | Tomasz | Kowalski | rows in set (0.00 sec) mysql> SELECT * FROM Nazwiska WHERE Imie LIKE "%sz"; | NrIndeksu | Imie | Nazwisko | | | Tomasz | Kowalski | row in set (0.00 sec)
Bazy danych - wykład 812 mysql> INSERT INTO Nazwiska (Imie,Nazwisko) -> VALUES ('Lech','Jackowski'); Query OK, 1 row affected (0.00 sec) mysql> select * from nazwiska; | NrIndeksu | Imie | Nazwisko | | | Jan | Kowalski | | | Ewa | Piotrowska | | | Tomasz | Kowalski | | | Agnieszka | Nowak | | 0 | Lech | Jackowski | rows in set (0.00 sec) mysql> DELETE FROM Nazwiska WHERE Imie='Stefan'; Query OK, 1 row affected (0.00 sec)