Wykonaj poniższą instrukcję, aby zainstalować poprawnie obraz mysql servera w wersji 5.7
docker pull mysql/mysql-server:5.7
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
or, if the complete port mapping is required:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
docker logs mysql57 2>&1 | grep GENERATED
docker exec -it mysql57 mysql -uroot -p
If this is the fresh installation you will be asked to change the password using ALTER USER command. Do it.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
update mysql.user set host = '%' where user='root';
docker restart mysql57
host: 0.0.0.0 port: 3306 user: root pass: root
Be aware that sometimes host address which needs to be changed to: 127.0.0.1, 192.168.99.100, localhost.
Wywołać poniższe skrypty w następującej kolejności na bazie:
- employees.sql
- load_departments.dump ;
- load_employees.dump ;
- load_dept_emp.dump ;
- load_dept_manager.dump ;
- load_titles.dump ;
- load_salaries1.dump ;
- load_salaries2.dump ;
- load_salaries3.dump ;
Jeżeli użyłeśdockera wykorzystaj poniższe polecenia:
docker exec -i mysql57 mysql -uroot -proot < employees.sql
docker exec -i mysql57 mysql -uroot -proot < load_departments.dump
docker exec -i mysql57 mysql -uroot -proot < load_employees.dump
docker exec -i mysql57 mysql -uroot -proot < load_dept_emp.dump
docker exec -i mysql57 mysql -uroot -proot < load_dept_manager.dump
docker exec -i mysql57 mysql -uroot -proot < load_titles.dump
docker exec -i mysql57 mysql -uroot -proot < load_salaries1.dump
docker exec -i mysql57 mysql -uroot -proot < load_salaries2.dump
docker exec -i mysql57 mysql -uroot -proot < load_salaries3.dump
Jeżeli zdecydowałeś się na instalację mysqla za pomocą standardowego instalatora wystarczy uruchomić plik:
mysql -uroot -ppassword < employees-standard.sql
- Wyświetl dzisiejszą datę
select sysdate();
- Wyświetl aktualny rok:
select year(sysdate());
- Wyświetl aktualny miesiąc:
select month(sysdate());
- Wyświetl aktualny dzień:
select day(sysdate());
Alternatywnie:
SELECT curdate(), year(current_date()), month(current_date()), dayofmonth(current_date());
- Wyszukaj wszystkich pracowników?
select * from employees;
- Wyszukaj wśród pracowników wszystkich mężczyczn.
select * from employees where gender = 'M';
- I ogranicz wyniki do 10
select * from employees where gender = 'M' limit 10;
- Znajdź 30 najstarszych pracowników
select * from employees order by birth_date limit 30;
- Ile było i jest w firmie zatrudnionych pracowników?
select * FROM employees.dept_emp;
- Ilu inżynierów ('engineer') pracuje obecnie w firmie (tabela titles)?
select count(*) from employees e join titles t on e.emp_no = t.emp_no where title = 'Engineer'
- Policz wszystkich pracujących mężczyzn i kobiety.
select gender ,count(*) as 'liczba pracownikow' from employees
group by gender;
- Policz wszystkich pracujących mężczyzn i kobiety urodzonych po 1960.
select count(*)'Pracowncicy urodzeni po 1960', gender
from employees
where year(birth_date) > 1960
group by gender;
- Znajdź największe wynagrodzenie.
- Znajdź najmniejsze wynagrodzenie.
- Wyświetl imię i nazwisko pracownika w kolumnie zapisanej jako ‘rekin biznesu’ mężczyzn urodzonych po 1954 roku
- Policz rekinów biznesu i zapisz ich w danej kolumnie
- Policz ile osób pracuje na danym stanowisku
- Policz ile osób pracuje na danym stanowisku, gdzie min zatrudnienia to 1000 osob
- Policz ile kobiet i ile mężczyzn pracuje na danym stanowisku.
- Policz ile kobiet i ile mężczyzn pracuje na danym stanowisku gdzie max zatrudnienia to 100 osob
- Na których stanowiskach pracuje więcej niż 100 000 osób? (HAVING)
- Wyświetl zarobki, imie i nazwisko pracownika wraz płcią w formie jednej kolumny, którzy zarabiają powyżej 150000 w konstrukcjach z JOIN i podzapytaniem z ANY (uwaga na ALL)
- Wyświetl zarobki, imię i nazwisko pracownika wraz płcią, którzy zarabiają pomiędzy 145000 a 150000
- Wyświetlić mężczyznę i kobietę, którzy zarabiają najwięcej
- Wyświetlić płeć, liczbę pracowników, średnie wynagrodzenie, sumę wynagrodzenia i maksymalne wynagrodzenie dla danej płci.
- Dodać 250 pracowników do tabeli pracowników
- Policz ile jest oddziałów
- Wyświetl wszystkie zarobki audytowe pracowników, czyli takie, które już się zakończyły
- Utworz tabele audytowa i przenies tam dane z tabeli zarobkow.
- 3 instrukcje: ** select z tabeli zarobkow ** insert do tabeli audytowej ** delete z tabeli zarobkow
- Dokonać operacji zmiany płci
- Dokonać odwrotnej operacji zmiany płci w celu przywrócenia danych pierwotnych
- Wykorzystaj instrukcję DATEDIFF i TIMEDIFF
- Wyświetl pogrupowane po zawodzie średnie zarobki pracowników na danych stanowiskach większe niż 5000. <podpowiedź -> having>
- Na których stanowiskach pracuje więcej niż 100 000 osób? (having)
- Znajdź wszystkich managerów działu Development.
- Który dział zatrudnia obecnie najwięcej osób?
- Stwórz raport zarobków obecnych managerów od najmniej zarabiających do najlepiej zarabiających podając działy w których pracują. (Nazwa działu, Imię, Nazwisko, Wynagrodzenie)
Który dział miał najwięcej managerów?
Znajdź najlepiej zarabiającą, obecnie zatrudnioną kobietę.
Napisz procedurę dodawania pracowników
Napisz procedurę dającą awans
Napisz procedurę usuwającą pracownika z firmy
Napisz funkcję obliczającą średnią pensję dla danego stanowiska
Dodaj tabelę audytową pracowników
Napisz trigger, który po usunięciu pracownika wstawi jego dane do tabeli audytowej.
Zapisz w formie widoków i wyświetl dowolne zapytanie wykonane podczas zajęć.
Zaprojektuj własny schemat
Zaimplementuj własny schemat w mysqlu (może być przez diagram ERD i forward engineering)
Zamodeluj relacje przy użyciu instrukcji SQL
Zastanów się w jaki sposób uzupełnić tabele przykładowymi danymi, jeżeli napotkasz trudności związane ze zbyt dużą liczbą constraintów na tabelach spróbuj uzupełnić je ręcznie niewielką ilością danych
Twój schemat powinien zawierać co najmniej
- 3 różne relacje,
- 2 procedury składowane,
- 2 funkcje,
- 2 triggery
- 3 różne widoki.
http://sqlfiddle.com/#!9/a6c585/1
https://www.w3schools.com/sql/sql_injection.asp
https://ebookpoint.pl/ksiazki/jezyk-sql-przyjazny-podrecznik-wydanie-ii-larry-rockoff,jsqlp2.htm
- ACID
- FUNKCJE AGREGUJĄCE
- INDEKSY - po co
- SEKWENCJE, kiedy mogą być używane?
- RODZAJE RELACJI
- DOBRE PRAKTYKI PRZY MODELOWANIU BAZ DANYCH
- SQL vs NOSQL
- SPOSÓB ŁĄCZENIA TABEL
- OGRANICZENIA DANYCH W TABELACH
- JAKIE ZNASZ BAZY SQL