<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=MySQL_Cwiczenia</id>
	<title>MySQL Cwiczenia - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=MySQL_Cwiczenia"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=MySQL_Cwiczenia&amp;action=history"/>
	<updated>2026-05-13T23:42:00Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=MySQL_Cwiczenia&amp;diff=23974&amp;oldid=prev</id>
		<title>Cesar Chew at 18:17, 24 November 2014</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=MySQL_Cwiczenia&amp;diff=23974&amp;oldid=prev"/>
		<updated>2014-11-24T18:17:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|MySQL}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;slideshow style=&amp;quot;nobleprog&amp;quot; headingmark=&amp;quot;⌘&amp;quot; incmark=&amp;quot;…&amp;quot; scaled=&amp;quot;true&amp;quot; font=&amp;quot;Trebuchet MS&amp;quot; &amp;gt;&lt;br /&gt;
;title: MySQL ćwiczenia&lt;br /&gt;
;author: Leszek Albrzykowski (NobleProg Ltd)&lt;br /&gt;
&amp;lt;/slideshow&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Etap projektowanie bazy danych ⌘==&lt;br /&gt;
* Jakie informacje chcemy przechowywać i jakie będą relacje między obiektami?&lt;br /&gt;
* Jakie tabele powinna zawierać baza?&lt;br /&gt;
* Diagram bazy&lt;br /&gt;
* Zatwierdzenie projektu&lt;br /&gt;
&lt;br /&gt;
=== 1.1. Jakie informacje chcemy przechowywać?  ⌘===&lt;br /&gt;
&lt;br /&gt;
Baza będzie zawierać informacje o szkoleniach, instruktorach oraz planie oferowanych szkoleń. Harmonogram powninien zawierać datę rozpoczęcia i zakończenia szkolenia oraz referencję do tematu szkolenia oraz instruktora. Zakładamy, że jeden instruktor może prowadzić wiele szkoleń i jedno szkolenie może być prowadzone przez wielu instruktorów.&lt;br /&gt;
&lt;br /&gt;
=== 1.2. Jakie tabele powinna zawierać baza?  ⌘===&lt;br /&gt;
* &amp;#039;&amp;#039;course&amp;#039;&amp;#039; - Tabela zawierająca szkolenia&lt;br /&gt;
* &amp;#039;&amp;#039;trainer&amp;#039;&amp;#039; - Tabela zawierająca instruktorów&lt;br /&gt;
* &amp;#039;&amp;#039;schedule&amp;#039;&amp;#039; - Tabela zawierająca harmonogram szkoleń (tabela asocjacyjna/łącza)&lt;br /&gt;
&lt;br /&gt;
=== 1.3. Diagram bazy  ⌘===&lt;br /&gt;
&lt;br /&gt;
==== 1.3.1. Szkolenia  ⌘====&lt;br /&gt;
[[File:Nobleprog1.png]]&lt;br /&gt;
==== 1.3.2. Instruktorzy  ⌘====&lt;br /&gt;
[[File:Nobleprog2.png]]&lt;br /&gt;
==== 1.3.3. Harmonogram szkoleń  ⌘====&lt;br /&gt;
[[File:Nobleprog3.png]]&lt;br /&gt;
&lt;br /&gt;
=== 1.3. Zatwierdzenie projektu  ⌘===&lt;br /&gt;
* Czy projekt jest zgodny z wymaganiami?&lt;br /&gt;
* Czy schemat można zoptymalizować?&lt;br /&gt;
* Dodatkowe uwagi?&lt;br /&gt;
&lt;br /&gt;
== Implementacja projektu  ⌘==&lt;br /&gt;
* Połączenie z serwerem oraz wybór bazy&lt;br /&gt;
* Utworzenie tabel&lt;br /&gt;
* Wypełnienie tabeli danymi&lt;br /&gt;
* Pobieranie danych oraz  łączenie tabel&lt;br /&gt;
* Zadania&lt;br /&gt;
&lt;br /&gt;
=== 2.1. Połączenie z serwerem oraz wybór bazy  ⌘===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 mysql -h localhost -u root -p &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 CREATE DATABASE nobleprog; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 USE nobleprog; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.2. Utworzenie tabel  ⌘===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 CREATE TABLE IF NOT EXISTS `course` (&lt;br /&gt;
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `course` varchar(255) NOT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `course` (`course`)&lt;br /&gt;
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT=&amp;#039;Courses offer&amp;#039; AUTO_INCREMENT=5 ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 CREATE TABLE IF NOT EXISTS `instructor` (&lt;br /&gt;
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `first_name` varchar(255) NOT NULL,&lt;br /&gt;
  `last_name` varchar(255) NOT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  UNIQUE KEY `first_name` (`first_name`,`last_name`)&lt;br /&gt;
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT=&amp;#039;Instructors&amp;#039; AUTO_INCREMENT=19 ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 CREATE TABLE IF NOT EXISTS `schedule` (&lt;br /&gt;
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,&lt;br /&gt;
  `begin_at` datetime NOT NULL,&lt;br /&gt;
  `finish_at` datetime NOT NULL,&lt;br /&gt;
  `course` int(10) unsigned NOT NULL,&lt;br /&gt;
  `instructor` int(10) unsigned NOT NULL,&lt;br /&gt;
  PRIMARY KEY (`id`),&lt;br /&gt;
  KEY `instructor` (`instructor`),&lt;br /&gt;
  KEY `course` (`course`)&lt;br /&gt;
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT=&amp;#039;Schedule&amp;#039; AUTO_INCREMENT=12 ;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 ALTER TABLE `schedule`&lt;br /&gt;
  ADD CONSTRAINT `schedule_ibfk_1` FOREIGN KEY (`course`) REFERENCES `course` (`id`),&lt;br /&gt;
  ADD CONSTRAINT `schedule_ibfk_2` FOREIGN KEY (`instructor`) REFERENCES `instructor` (`id`);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2.3. Wypełnienie tabeli danymi  ⌘===&lt;br /&gt;
&lt;br /&gt;
Dane dostępne jako pliki *.txt w dziale z wgranymi plikami&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
\N	MariaDB Database Administration&lt;br /&gt;
\N	SQL Fundamentals&lt;br /&gt;
\N	SQL Advanced in MySQL&lt;br /&gt;
\N	MySQL Database Administration&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: course&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
\N	Bernard	Szlachta&lt;br /&gt;
\N	Grzegorz	Pruszczynski&lt;br /&gt;
\N	Filip	Stachecki&lt;br /&gt;
\N	Lukasz	Sokolowski&lt;br /&gt;
\N	Leszek	Albrzykowski&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: instructor&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
\N	2012-10-10 09:00:00	2012-10-12 17:00:00	1	14&lt;br /&gt;
\N	2012-10-10 09:00:00	2012-10-12 17:00:00	1	15&lt;br /&gt;
\N	2012-10-12 09:00:00	2012-10-14 17:00:00	2	15&lt;br /&gt;
\N	2012-10-12 09:00:00	2012-10-14 17:00:00	1	14&lt;br /&gt;
\N	2012-10-10 09:00:00	2012-10-12 17:00:00	3	16&lt;br /&gt;
\N	2012-10-13 09:00:00	2012-10-15 17:00:00	3	17&lt;br /&gt;
\N	2012-10-13 09:00:00	2012-10-15 17:00:00	1	14&lt;br /&gt;
\N	2012-10-10 09:00:00	2012-10-12 17:00:00	4	18&lt;br /&gt;
\N	2012-10-10 09:00:00	2012-10-12 17:00:00	2	18&lt;br /&gt;
\N	2012-10-17 09:00:00	2012-10-19 17:00:00	2	14&lt;br /&gt;
\N	2012-10-17 09:00:00	2012-10-19 17:00:00	1	14&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
: schedule&lt;br /&gt;
&lt;br /&gt;
=== 2.4. Pobieranie danych oraz  łączenie tabel  ⌘===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM course; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Pobranie wszystkich danych z tabeli szkoleń&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM course ORDER BY begin_at ASC ; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM course ORDER BY begin_at DESC ; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Pobranie wszystkich danych z tabeli harmonogramu według dat (DESC|ASC)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * &lt;br /&gt;
 FROM schedule AS s&lt;br /&gt;
 JOIN course AS c ON s.course = c.id&lt;br /&gt;
 JOIN instructor AS i ON s.instructor = i.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
: Złączenie tabel&lt;br /&gt;
&lt;br /&gt;
=== 2.5. Zadania  ⌘===&lt;br /&gt;
* Pobrać informacje jakie kursy prowadzi instruktor X&lt;br /&gt;
* Pobrać instruktorów których nazwiska zaczynają się na literę &amp;#039;&amp;#039;S&amp;#039;&amp;#039;&lt;br /&gt;
* Pobrać informację ile szkoleń zawiera oferta&lt;br /&gt;
* Do tabeli instruktorów dodać pole email (jaki typ pola i jaka długość, czy jakieś dodatkowe opcje?)&lt;br /&gt;
* Do czego możemy wykorzystać klucze obce?&lt;br /&gt;
* Jak ograniczyć dostęp do utworzonej bazy dla wybranego użytkownika?&lt;/div&gt;</summary>
		<author><name>Cesar Chew</name></author>
	</entry>
</feed>