Laboratorium 3

Transkrypt

Laboratorium 3
Laboratorium Bazy danych SQL1
CREATE DATABASE nazwa_bazy;
tworzy bazę danych
DROP DATABASE nazwa_bazy;
usuwa istniejącą bazę danych
USE nazwa_bazy;
wybór bazy danych
SHOW DATABASES;
pokazuje nazwy wszystkich baz danych
CREATE TABLE nazwa_tabeli;
tworzy strukturę tabeli
DESCRIBE nazwa_tabeli;
wyświetla opis struktury tabeli
SHOW COLUMNS FROM nazwa_tabeli
LIKE 'wzorzec'
ALTER TABLE nazwa_tabeli;
rozszerzanie i modyfikowanie schematu tabeli
EXIT wyjście z programu
UWAGI:
•
Polecenia SQL mogą być rozmieszczone w kilku wierszach.
•
Polecenia SQL zakończ średnikiem.
•
Dobrym zwyczajem jest umieszczanie klauzul od nowych linii.
•
Nie wolno dzielić słowa pomiędzy wiersze.
•
Dozwolone jest używanie małych lub wielkich liter, chyba że sprawdzamy zawartość pola.
TWORZENIE TABEL
create table [IF NOT EXISTS] nazwa_relacji (
nazwa_atrybutu typ (rozmiar) [default wartość domyślna] [,]
[ [ constraint nazwa_ogr.] ograniczenie_atr ],
…
[ [ constraint nazwa_ogr.] ograniczenie_rel,…]
);
Ograniczenia:
•
null wartości puste;
•
not null bez wartości pustych;
•
unique klucz unikalny relacji;
•
primary key klucz podstawowy relacji (nie występuje przy ograniczeniu unique i
odwrotnie);
•
foreign key | references referencja do klucza podstawowego lub unikatowego innej relacji
(do definicji klucza obcego);
1
Laboratorium Bazy danych SQL1
•
on delete cascade ograniczenie definiowane dla klucza obcego; przy usuwaniu krotki z
relacji z kluczem podstawowym, usuwane są automatycznie krotki z relacji, w której
wartość klucza obcego jest równa wartości klucza podstawowego usuwanej krotki;
•
check ( warunek) warunek, który musi być spełniony przez wszystkie wartości atrybutu;
operatory ( =, <, !=, is null, like ( % - łańcuch o długości >= 0; _- pojedynczy znak) ,
between…and, in (…), and, or, not );
check jest ignorowany przez mysql;
•
default wartość domyślna kolumny.
Przykład 1
create table dydaktycy (
id_dydaktyka int(2) primary key,
nazwisko varchar(15) not null,
tytuł varchar(10)
);
create table przedmioty (
id_przedmiotu int(2),
nazwa varchar(15) not null,
constraint id_przedmiotu_pk primary key (id_przedmiotu)
);
create table zajecia (
id_zajec int(2) primary key,
rodzaj_zaj varchar(15) check (rodzaj_zaj in ( 'wykl', 'lab', 'cw', 'konw' )),
id_dyd int(2) ,
id_prz int(2) ,
data_rozpoczecia date
foreign key ( id_dyd ) references dydaktycy ( id_dydaktyka ),
foreign key ( id_prz ) references przedmioty ( id_przedmiotu )
);
2
Laboratorium Bazy danych SQL1
Rozszerzanie i modyfikowanie schematu tabeli
ALTER TABLE nazwa_tabeli rozszerzanie i modyfikowanie schematu tabeli
ADD nazwa_atrybutu typ (rozmiar) [default wartość domyślna]
[ [constraint nazwa_ogr] ograniczenie_atr ]; dodanie kolumny do tabeli
ADD [ constraint nazwa_ogr] ograniczenie_atr; dodanie ograniczenia integralnościowego
MODIFY nazwa_atrybutu typ (rozmiar) [default wartość domyślna]
[ null | not null ]; modyfikowanie typu kolumny
DROP unique | index | primary [foreing] key | constraint nazwa_ogr [cascade] usunięcie
ograniczenia
integralnościowego
Przykład2
alter table dydaktycy add etat varchar(20);
alter table dydaktycy
add constraint dyd_etat check (etat in ('dyrektor', 'profesor', 'adiunkt',
'asystent','wykladowca','starszy wykladowca' ));
alter table dydaktycy modify tytuł varchar(8) default 'mgr' not null;
alter table dydaktycydrop constraint dyd_etat;
Usuwanie tabeli
drop table nazwa_tabeli [cascade constraint];
Przykład 3
DROP TABLE osoby;
CREATE TABLE osoby(
id_osoby INT NOT NULL,
imie VARCHAR(15),
nazwisko VARCHAR(15),
wiek INT,
CONSTRAINT id_pk PRIMARY KEY (id_osoby)
);
3
Laboratorium Bazy danych SQL1
DESCRIBE osoby;
Wstawianie wiersza do tabeli:
INSERT INTO nazwa_relacji [(kolumna,kolumna,...)]
VALUES [(wartość,wartość, …), ...];
Przykład 4. Wstawianie wszystkich wartości pól w wierszu:
INSERT INTO osoby VALUES(1,'Adam','Nowak',19);
INSERT INTO osoby VALUES(1,'Adam','Nowak',22);
INSERT INTO osoby VALUES(2,'Iwona','Kowalska',56);
INSERT INTO osoby VALUES(3,'Lech','Nowakowski',56);
INSERT INTO osoby(pesel,imie,nazwisko,wiek)
VALUES(4,'Kazimierz','Kot',6);
INSERT INTO osoby VALUES
(10,'Adam','Nowak',19),
(20,'Adam','Nowak',19),
(40,'Adam','Nowak',19),
(60,'Adam','Nowak',19),
(70,'Adam','Nowak',19),
(80,'Adam','Nowak',19)
Wypisanie zawartości tabeli:
SELECT * FROM nazwa_tabeli;
Przykład 5:
SELECT * FROM osoby;
Przykład 6: Wstawianie wartości dla wybranych pól w wierszu:
INSERT INTO osoby(imie) VALUES('Kazimierz');
INSERT INTO osoby(id_osoby,imie) VALUES(5,'Jan');
INSERT INTO osoby(id_osoby,nazwisko) VALUES(6,'Niezbędny');
INSERT INTO osoby(id_osby,wiek) VALUES(7,41);
SELECT * FROM osoby;
4
Laboratorium Bazy danych SQL1
Do tabeli osoby dodać atrybut (kolumnę) plec, dla której dopuszczamy tylko dwie wartości 'K' –
kobieta, 'M' – mężczyzna.
DESCRIBE osoby;
Wypełnij pola następującymi wartościami:
INSERT INTO osoby VALUES(8,'Joanna','Wyzwolona',29,'F');
INSERT INTO osoby VALUES(8,'Joanna','Wyzwolona',29,'K');
SELECT * FROM osoby;
DESCRIBE osoby;
INSERT INTO osoby VALUES(9,'Zenon','Laskowik',26,'M','1981-04-12');
INSERT INTO osoby VALUES(10,'Helena','Lis',2,'K',DEFAULT);
INSERT INTO osoby VALUES(11,'Mateusz','Rybka',44,'M');
SELECT * FROM osoby;
Modyfikowanie wartości pól w wierszu:
UPDATE nazwa_tabeli
SET kolumna[,kolumna] = {wyrażenie | podzapytanie}
[WHERE waunki];
Wypełnić wszystkie puste pola w tabeli:
UPDATE osoby
SET nazwisko = 'Bryza', wiek = '33', plec = 'M', data_ur = '1974-06-05'
WHERE id_osoby = 5;
SELECT * FROM osoby;
Zamienić wartości w kolumnie plec tabeli osoby na 'K';
Zamienić wartości pól w kolumnie plec na 'M' wszystkim osobom, których imię nie kończy się na
'a'.
Usuwanie wierszy z tabeli:
DELETE FROM nazwa_tabeli
[WHERE warunki];
5
Laboratorium Bazy danych SQL1
Usuniecie wierszy spełniających warunek;
DELETE FROM osoby WHERE plec = 'K';
Usunięcie wszystkich wierszy:
DELETE FROM osoby;
\
Zadania do samodzielnego rozwiązania:
Zad. 1 Zdefiniować tabele o schematach przedstawionych poniżej.
klasy:
id_klasy integer PRIMARY KEY,
nazwa char(2),
rok_szkolny char(5)
uczniowie:
id_ucznia integer PRIMARY KEY,
nazwisko varchar(15),
imie varchar(10),
data_urodzenia date,
czy_chlopak char(1),
id_klasy integer,
klucz obcy: id_klasy
rodzaje_ocen:
id_rodzaju_oceny integer PRIMARY KEY,
nazwa varchar(10)
przedmioty:
id_przedmiotu integer PRIMARY KEY,
nazwa varchar(15)
nauczyciele:
id_nauczyciela integer PRIMARY KEY,
imie varchar(10),
nazwisko varchar(15),
data_ur date,
tytul varchar(3)
6
Laboratorium Bazy danych SQL1
oceny:
id_oceny integer PRIMARY KEY,
id_nauczyciela integer,
id_przedmiotu integer,
id_rodzaju_oceny integer,
ocena decimal(2,1),
data date,
klucze obce: id_nauczyciela, id_ucznia, id_rodzaju_oceny, id_przedmiotu
Polecenie select umożliwia wyszukiwanie informacji w bazie danych przy użyciu operatorów
algebry relacji. Zawiera:
•
klauzulę select wskazującą atrybuty (kolumny), których wartości mają być wyświetlone,
•
klauzulę from wskazującą relację (tabelę), której dotyczy polecenie,
•
Klauzulę where umożliwiającą operację selekcji z algebry relacji.
Przykład 1. Wyświetlić zawartość wszystkich kolumn w tabeli uczniowie.
select * from uczniowie;
Przykład 2. Wyświetlić wartości kolumny imie wszystkich wierszy tabeli uczniowie.
select imie from uczniowie;
Wynikiem projekcji ograniczonej do małego zbioru kolumn (lub pojedynczej kolumny) może być
wyświetlenie tych samych informacji. Aby wyeliminować powtarzanie wierszy stosujemy w
klauzuli select operator distinct.
Przykład 3. Wyświetlić unikalne wartości kolumny imie tabeli uczniowie.
select distinct imie from uczniowie;
Klauzula select może zawierać:
➢ literały – dowolny łańcuch znaków, data lub liczba; jest dołączany automatycznie do każdego
wyświetlanego wiersza, zgodnie z umiejscowieniem w klauzuli select oraz do nagłówka kolumny,
której dotyczy.
7
Laboratorium Bazy danych SQL1
Przykład 4. Z tabeli oceny wyświetlić id_ucznia oraz datę otrzymania oceny przedzoną literałem
' otrzymana w dniu ' stanowiącym odrębną kolumnę.
select id_ucznia, ' otrzymana w dniu ', data from oceny;
➢ wyrażenia arytmetyczne - konstruowane są z nazw kolumn i literałów numerycznych z użyciem
operatorów: dodawania (+), odejmowania (-), mnożenia (*) i dzielenia (/ ) (* i / maja wyższy
priorytet od + i -; w przypadku operatorów o tej samej ważności wyrażenie wartościowane jest od
lewej do prawej lub za pomocą nawiasów).
Przykład 5. Wyświetlić id_ucznia oraz podwojoną ocenę z tabeli oceny.
select id_ucznia, ocena*2 from oceny;
➢ funkcje – przekształcają wartości kolumn i literałów, do których są stosowane.
Typ wynikowy
Opis
Przykład
COALESCE(list)
wartość niepusta zwraca pierwszą niepustą
wartość z listy (list)
wartość niepusta zwraca wartość (subst), gdy
not-NULL subst) nie da się odnaleźć szukanej
wartości
COALESCE(r,l,c)
IFNULL(input)
IFNULL(c, 'N/A')
➢ aliasy nazw atrybutów (kolumn) – alternatywna nazwa kolumny, występuje bezpośrednio po
nazwie kolumny.
Przykład 6.
select id_ucznia, ocena*2 as podwojona from oceny;
select id_ucznia, ocena*2 podwojona from oceny;
funkcja konkatenacji ( concat() ) - umożliwia łączenie wyświetlanych wartości różnych atrybutów
w pojedyncze łańcuchy znaków.
Przykład 7. select concat( id_ucznia, ' otrzymana w dniu ', data) A from oceny;
Klauzula order by – występuje jako ostatnia klauzula w poleceniu select, powoduje posortowanie
wierszy będących wynikiem zapytania według wartości atrybutu w niej wskazanego. Domyślnie
sortowanie jest według narastającego porządku (asc), desc sortuje malejąco.
8
Laboratorium Bazy danych SQL1
select...
from...
where...
ORDER BY nazwy(a)_kolumn(y) lub numer(y)_kolumn(y) [ASC/DESC];
Przykład 1.
select distinct nazwisko, imie from uczniowie order by nazwisko;
select distinct nazwisko, imie from uczniowie order by 1, 2 desc;
9
Laboratorium Bazy danych SQL1
Zadania do samodzielnego rozwiązania:
Zad 1. Wyświetlić unikalne wartości kolumny imie z tabeli nauczyciele.
Zad 2. Wyświetlić identyfikatory tych uczniów, którzy otrzymali oceny: 5 lub 6.
Zad 3. Wyświetlić identyfikatory tych nauczycieli, którzy wystawili ocenę z przedmiotu o
identyfikatorze 2.
Zad 4. Wyświetlić identyfikator, imię i nazwisko, tych uczniów, którzy urodzili się pomiędzy '200501-01' a '2005-12-31'.
Zad 5. Wyświetlić identyfikator ucznia, identyfikator nauczyciela oraz identyfikator rodzaju oceny
tych ocen które są ocenami pozytywnymi.
Zad 6. Wyświetlić nazwiska i imiona tych uczniów, których nazwisko zawiera literę 'a' na
dowolnym miejscu w łańcuchu znaków lub imię to 'Adam' lub 'Iwona'.
Zad 7. Wyświetlić nazwisko tych uczniów, którzy są chłopcami.
Zad 8. Wyświetlić nazwisko oraz datę urodzenia tych nauczycieli, których imię zaczyna się na 'e' i
są starsi niż 30 lat. (Użyj funkcji year(), która wyodrębnia rok z daty.)
Zad 9. Wyświetlić identyfikator oceny oraz nazwisko i imię uczniów, którzy otrzymali ją przed
'2016-10-01'.
Zad.10 Wyświetlić nazwisko nauczyciela, który wystawił oceny z przedmiotu o identyfikatorze 3.
Zad.11 Do każdego z rozwiązań powyższych zadań dodać klauzulę sortowania na przemian rosnąco
i malejąco według samodzielnie wybranej kolumny.
10

Podobne dokumenty