-- Algebra relacji drop database if exists mytest; create database mytest; use mytest create table Student( Imię char(15), Nazwisko char(25), Rok int unsigned ); insert into Student values ('Adam','Kowalski' ,2), ('Ewa' ,'Nowak' ,3), ('Jan' ,'Kucharski',3); create table Przedmiot( ID char(2), Nazwa char(25) ); insert into Przedmiot values ('10','Fizyka'), ('11','Bazy danych'), ('12','Statystyka'); create table Wykładowca( Imię char(15), Nazwisko char(25), ID char(2) ); insert into Wykładowca values ('Jerzy','Adamski' ,'10'), ('Anna' ,'Leśniak' ,'11'), ('Jakub','Nowak' ,'13'); Projekcja\p\c select Nazwisko,Rok from Student\p; Selekcja\p\c select * from Student where Rok=3\p; Iloczyn kartezjański\p\c select * from Wykładowca,Przedmiot\p; #standard SQL-89 select * from Wykładowca cross join Przedmiot\p; #standard SQL-92 #Można zrobić nawet iloczyn kartezjański tej samej tabeli, ale trzeba użyć aliasów: select * from Student as S1 cross join Student as S2\p; #Uwaga: cross join == inner join Złączenie naturalne\p\c select * from Wykładowca natural join Przedmiot\p; #Można to zrobić również przez złączenie wewnętrzne: select * from Wykładowca inner join Przedmiot using(Id)\p; select * from Wykładowca cross join Przedmiot using(Id)\p; #(to samo) Złączenie wewnętrzne\p\c Złączenie bez warunku\p\c select * from Wykładowca inner join Przedmiot\p; Złączenie θ (przykład: równozłączenie)\p\c select * from Wykładowca inner join Przedmiot where Wykładowca.Id=Przedmiot.Id\p; #(to nie całkiem zgodne z syntaxem) select * from Wykładowca inner join Przedmiot on Wykładowca.Id=Przedmiot.Id\p; Złączenie zewnętrzne lewostronne\p\c select * from Wykładowca left outer join Przedmiot on Wykładowca.Id=Przedmiot.Id\p; select * from Wykładowca left join Przedmiot using (Id)\p; #Ostatnia składnia zostawia tylko 1 powtarzającą się kolumnę i zmienia porządek kolumn. Złączenie zewnętrzne prawostronne\p\c select * from Wykładowca right outer join Przedmiot on Wykładowca.Id=Przedmiot.Id\p; select * from Wykładowca right join Przedmiot using (Id)\p; #Ostatnia składnia zostawia tylko 1 powtarzającą się kolumnę i zmienia porządek kolumn. Złączenie zewnętrzne dwustronne (full)\p\c #W MySQL nie ma go, ale może być symulowane: (select * from Wykładowca right outer join Przedmiot on Wykładowca.Id=Przedmiot.Id) union (select * from Wykładowca left outer join Przedmiot on Wykładowca.Id=Przedmiot.Id)\p;