· 6 years ago · Apr 08, 2019, 09:50 AM
1skrypt 1:
2
3drop database if exists mytest;
4create database mytest;
5use mytest
6
7create table Student(
8 Id int unsigned,
9 Nazwisko char(25),
10 ImiÄ™ char(15),
11 Data_urodzenia date,
12 Rok_studiów int unsigned,
13 Kierunek char(25),
14 Åšrednia decimal(3,2)
15);
16
17insert into Student values
18(1321,'Kowalski','Adam' ,'1994-10-15',3,'Energetyka' ,4.32),
19(1410,'Adamski' ,'Jerzy' ,'1993-02-04',3,'Technologia chemiczna',4.02),
20(1433,'Zaręba' ,'Anna' ,'1993-05-14',4,'Energetyka' ,4.51),
21(1521,'Nowak' ,'Ewa' ,'1995-07-17',2,'Technologia chemiczna',4.33),
22(1577,'Leśniak' ,'Anna' ,'1994-05-04',3,'Energetyka' ,4.11),
23(1682,'Nowak' ,'Marcin','1995-11-17',2,'Energetyka' ,3.97);
24
25select * from Student;
26
27
28skrypt 2:
29
30-- Algebra relacji
31
32drop database if exists mytest;
33create database mytest;
34use mytest
35
36create table Student(
37 ImiÄ™ char(15),
38 Nazwisko char(25),
39 Rok int unsigned
40);
41
42insert into Student values
43('Adam','Kowalski' ,2),
44('Ewa' ,'Nowak' ,3),
45('Jan' ,'Kucharski',3);
46
47create table Przedmiot(
48 ID char(2),
49 Nazwa char(25)
50);
51
52insert into Przedmiot values
53('10','Fizyka'),
54('11','Bazy danych'),
55('12','Statystyka');
56
57create table Wykładowca(
58 ImiÄ™ char(15),
59 Nazwisko char(25),
60 ID char(2)
61);
62
63insert into Wykładowca values
64('Jerzy','Adamski' ,'10'),
65('Anna' ,'Leśniak' ,'11'),
66('Jakub','Nowak' ,'13');
67
68
69Projekcja\p\c
70
71select Nazwisko,Rok from Student\p;
72
73Selekcja\p\c
74
75select * from Student where Rok=3\p;
76
77Iloczyn kartezjański\p\c
78select * from Wykładowca,Przedmiot\p; #standard SQL-89
79select * from Wykładowca cross join Przedmiot\p; #standard SQL-92
80#Można zrobić nawet iloczyn kartezjański tej samej tabeli, ale trzeba użyć aliasów:
81select * from Student as S1 cross join Student as S2\p;
82#Uwaga: cross join == inner join
83
84Złączenie naturalne\p\c
85select * from Wykładowca natural join Przedmiot\p;
86#Można to zrobić również przez złączenie wewnętrzne:
87select * from Wykładowca inner join Przedmiot using(Id)\p;
88select * from Wykładowca cross join Przedmiot using(Id)\p; #(to samo)
89
90Złączenie wewnętrzne\p\c
91Złączenie bez warunku\p\c
92select * from Wykładowca inner join Przedmiot\p;
93Złączenie θ (przykład: równozłączenie)\p\c
94select * from Wykładowca inner join Przedmiot where Wykładowca.Id=Przedmiot.Id\p; #(to nie całkiem zgodne z syntaxem)
95select * from Wykładowca inner join Przedmiot on Wykładowca.Id=Przedmiot.Id\p;
96
97Złączenie zewnętrzne lewostronne\p\c
98select * from Wykładowca left outer join Przedmiot
99on Wykładowca.Id=Przedmiot.Id\p;
100select * from Wykładowca left join Przedmiot using (Id)\p;
101#Ostatnia składnia zostawia tylko 1 powtarzającą się kolumnę i zmienia porządek kolumn.
102
103Złączenie zewnętrzne prawostronne\p\c
104select * from Wykładowca right outer join Przedmiot
105on Wykładowca.Id=Przedmiot.Id\p;
106select * from Wykładowca right join Przedmiot using (Id)\p;
107#Ostatnia składnia zostawia tylko 1 powtarzającą się kolumnę i zmienia porządek kolumn.
108
109Złączenie zewnętrzne dwustronne (full)\p\c
110#W MySQL nie ma go, ale może być symulowane:
111(select * from Wykładowca right outer join Przedmiot
112on Wykładowca.Id=Przedmiot.Id)
113union
114(select * from Wykładowca left outer join Przedmiot
115on Wykładowca.Id=Przedmiot.Id)\p;
116
117
118-- Skrypt 3 - klucze obce
119
120drop database if exists mytest;
121create database mytest;
122use mytest
123
124set foreign_key_checks=0;
125drop table if exists wykładowcy;
126drop table if exists przedmioty;
127drop table if exists zajęcia;
128set foreign_key_checks=1;
129
130create table Przedmioty (
131 IP int unsigned,
132 Nazwa char(30) not null,
133 primary key (IP)
134);
135
136create table Wykładowcy (
137 IW int unsigned,
138 ImiÄ™ char(15) not null,
139 Nazwisko char(25) not null,
140 Wydział char(10) not null,
141 primary key (IW)
142);
143
144create table Zajęcia (
145 Id int unsigned auto_increment,
146 Budynek char(2) not null,
147 Sala int unsigned not null,
148 Data date,
149 IW int unsigned,
150 IP int unsigned,
151 primary key (Id),
152 foreign key (IP) references Przedmioty(IP) on delete cascade,
153 foreign key (IW) references Wykładowcy(IW) on delete cascade
154);
155
156desc Wykładowcy;
157desc Przedmioty;
158desc Zajęcia;
159
160Wpisywanie danych do tablei Przedmioty\p\c
161
162insert into Przedmioty values
163(10,'Fizyka' ),
164(11,'Statystyka' ),
165(12,'Bazy danych' ),
166(13,'Termodynamika');
167
168Wpisywanie danych do tablei Wykładowcy\p\c
169
170insert into Wykładowcy values
171(1,'Adam','Kowalski','WEiP' ),
172(2,'Ewa' ,'Nowak' ,'WFiIS'),
173(3,'Jan' ,'Adamski' ,'WIMiR');
174
175Wpisywanie danych do tablei Zajęcia\p\c
176
177insert into Zajęcia values
178(NULL,'D4',101,'2015-11-17',1,13),
179(NULL,'C6',103,'2015-11-18',2,12),
180(NULL,'D9',108,'2015-11-21',3,10),
181(NULL,'D9',101,'2015-11-23',3,11);
182
183Tabela Wykładowcy\p\c
184
185select * from Wykładowcy;
186
187Tabela Przedmioty\p\c
188
189select * from Przedmioty;
190
191Tabela Zajęcia\p\c
192
193select * from Zajęcia;
194
195create table Zajęcia_kopia select * from Zajęcia;
196
197Złączenie naturalne dwóch tabel\p\c
198
199select * from Zajęcia natural join Wykładowcy natural join Przedmioty\p;
200
201Usuwanie danych z tabeli Wykładowcy\p\c
202
203delete from Wykładowcy where IW=3\p;
204
205Tabela Zajęcia po usunięciu danych z tabeli Wykładowcy\p\c
206
207select * from Zajęcia;
208
209select * from Zajęcia_kopia;