MySQL (www.mysql.org)



Podobne dokumenty
Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Internetowe bazy danych

Bazy danych 7. SQL podstawy

Bazy danych 9. SQL Klucze obce Transakcje

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych 9. Klucze obce Transakcje

Bazy danych 9. Klucze obce Transakcje. P. F. Góra

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Zarządzanie systemami informatycznymi. Zarządzanie internetową bazą danych MySQL

Język SQL, zajęcia nr 1

Transakcje jednocześnie ACID

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Bazy danych 6. Klucze obce. P. F. Góra

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

Bazy danych 4. SQL podstawy. P. F. Góra

Bazy Danych i Usługi Sieciowe

Administracja bazami danych. dr inż. Grzegorz Michalski

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Bazy danych i usługi sieciowe

SQL/MySQL. Rafał Kern

Projektowanie systemów baz danych

Podyplomowe Studium Programowania i Baz Danych

Bazy danych. Dr inż. Paweł Kasprowski

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wykład 05 Bazy danych

Administracja bazami danych

Bazy danych 10. SQL Widoki

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Instalacja MySQL.

Ref. 7 - Język SQL - polecenia DDL i DML

Bazy danych 7. Klucze obce Transakcje. P. F. Góra

Typy tabel serwera MySQL

Administrowanie serwerami baz danych ZADANIA ADMINISTRATORA BAZ DANYCH

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

CREATE USER

Podyplomowe Studium Programowania i Baz Danych

SQL 4 Structured Query Lenguage

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

Wykład 4. SQL praca z tabelami 1

Laboratorium nr 1. Temat: Wprowadzenie do MySQL-a

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Autor: Joanna Karwowska

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Paweł Rajba

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Bazy Danych. SQL Podstawy języka. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Wykład 8. SQL praca z tabelami 5

Bazy Danych. SQL Podstawy języka. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Język SQL, zajęcia nr 2

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Wykład 5. SQL praca z tabelami 2

Bazy danych. Polecenia SQL

Kurs. Podstawy MySQL

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Bazy danych i usługi sieciowe

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

przykłady problemów; realizacja dostaw części od producenta do klienta:

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Dokumentacja SQL API 1

Składowane procedury i funkcje

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Dr Michał Tanaś(

Zaawansowane bazy danych i hurtownie danych studia niestacjonarne II stopnia, sem. I

Aspekty aktywne baz danych

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Relacyjne bazy danych. Podstawy SQL

Bazy danych 4. SQL- podstawy

Bazy danych 12. SQL Wyszukiwanie pełnotekstowe

1 Przetwarzanie transakcyjne Cechy transakcji Rozpoczęcie i zakończenie Punkty bezpieczeństwa... 3

Bazy danych - Materiały do laboratoriów VIII

PostgreSQL (

Obiekty dowolnego typu, w tym bazy danych, możemy tworzyć instrukcją CREATE. Po czasowniku CREATE należy podać typ tworzonego obiektu i jego nazwę.

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Hurtownia Świętego Mikołaja projekt bazy danych

Oracle PL/SQL. Paweł Rajba.

Administracja i programowanie pod Microsoft SQL Server 2000

Tuning SQL Server dla serwerów WWW

Systemy GIS Tworzenie zapytań w bazach danych

korzyści finansowe przewaga pomysłu nad kapitałem tworzenie nowych branż tworzenie mechanizmów pochodnych (np. serwis snip).

BAZY DANYCH. Transakcje. opracowanie: Michał Lech

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

SQL SERVER 2016 IN MEMORY

Transkrypt:

MySQL (www.mysql.org) Plan wykładu: Wprowadzenie Użytkowanie Administracja

Wprowadzenie Licencjonowanie (serwer półdarmowy ) OpenSource GPL (dotyczy także luźnego powiązania) Commercial license (koszt zakupienia licencji) 2

Wprowadzenie (2) Serwer dostępny na różne systemy operacyjne: Linux, Microsoft Windows, FreeBSD, Sun Solaris, IBM's AIX, Mac OS X, HP-UX, AIX, QNX, Novell NetWare, SCO OpenUnix, SGI Irix, i Dec OSF Szybkość Duże rozmiary bazy danych MySQL w zależności od typu tabeli: MyISAM 65536TB (jeden plik; domyślnie 4GB) Ograniczenie systemu operacyjnego (2GB 16TB) InnoDB 64TB (wiele plików) 3

Wprowadzenie (3) Duży podzbiór ANSI SQL 99 Obecne możliwości i planowane ulepszenia: Feature MySQL version Subqueries 4.1 R-trees 4.1 (dla tabel MyISAM) Stored procedures 5.0 Views 5.0 Cursors 5.0 -------------------------------------------- Foreign keys 5.2 (już w 3.23 dla InnoDB) Triggers 5.0 (niepełne) i 5.1 4

Użytkowanie Typy danych Liczby całkowite: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT Liczby zmiennoprzecinkowe: FLOAT, DOUBLE Liczby stałoprzecinkowe: DECIMAL(M, N) Data i czas: DATETIME, DATE, TIMESTAMP, TIME, i YEAR Napisy: CHAR, VARCHAR, TEXT Typ wyliczeniowy: ENUM Typ zbiorowy: SET Typ danych binarnych: BINARY, VARBINARY, BLOB 5

Użytkowanie (2) Mapowanie typów dostępnych w innych serwerach w trakcie tworzenia tabeli Inny typ Typ MySQL BINARY(NUM) CHAR(NUM)BINARY CHAR VARYING(NUM) VARCHAR(NUM) FLOAT4 FLOAT FLOAT8 DOUBLE INT1 TINYINT INT2 SMALLINT INT3 MEDIUMINT INT4 INT INT8 BIGINT LONG VARBINARY MEDIUMBLOB LONG VARCHAR MEDIUMTEXT MIDDLEINT MEDIUMINT VARBINARY(NUM) VARCHAR(NUM) BINARY 6

Użytkowanie (3) ENUM('one', 'two', 'three') Wartość Indeks (wartość alternatywna) NULL NULL '' 0 'one' 1 'two' 2 'three' 3 7

Użytkowanie (4) SET('a','b','c','d') (elementom przyporządkowane są bity od najmniej znaczącego) Wartość Indeks (wartość alternatywna) 'a' 1 'b' 2 'c' 4 'd' 8 Kolejność: kol='a,c' lub kol='c,a' da w wyniku 'a,c' (przy SELECT oraz porównywaniu): mysql> SELECT * FROM tab WHERE kol LIKE '%c%'; mysql> SELECT * FROM tab WHERE FIND_IN_SET('c',kol)>0; mysql> SELECT * FROM tab WHERE kol = 'a,c'; mysql> SELECT * FROM tab WHERE kol & 1; 8

Użytkowanie (5) Napisy: 'napis' "inny napis" ' w napisie otoczonym ' można zapisać jako ' ' " w napisie otoczonym " można zapisać jako " " Można także poprzedzić znakiem \ 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello', "hello", "'hello'", "''hello''", "hel""lo", "\"hello" 9

Użytkowanie (6) Napisy: Maski i wyrażenia regularne (REGEXP i NOT REGEXP) SELECT * FROM tab WHERE nazwa LIKE "%fy"; SELECT * FROM tab WHERE nazwa REGEXP "^[bb]"; 10

Użytkowanie (7) BLOB używać jak TEXT, ale wewnętrzna reprezentacja binarna UPDATE tab SET blob_col=load_file('/tmp/picture') WHERE id=1; (uprawnienie FILE) 11

Użytkowanie (8) Sortowanie i porównywanie napisów Domyślna strona kodowa: ISO-8859-1 (Latin1) Ustawienia strony kodowej można ominąć korzystając z atrybutu BINARY dla napisów (nie mylić z typem pola), który nakazuje korzystanie z ustawień regionalnych systemu (np. Windows). Wsparcie dla języka polskiego przez użycie jednej z podanych poniżej stron kodowych: cp1250 (Windows), cp852 (DOS), ISO-8859-2 (Latin2), od wersji 4.1 Unicode (UCS2 i UTF-8). 12

Użytkowanie (9) Generowanie unikalnego klucza: Na polu typu liczbowego: AUTO_INCREMENT odczyt ostatniej wartości przez: LAST_INSERT_ID() Typ: SERIAL => BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 13

Użytkowanie (10) Rozszerzenie SQL (1) Operacja REPLACE zamiast dwóch DELETE + INSERT (wstawianie nowych lub aktualizacja istniejących elementów). INSERT, REPLACE, DELETE, i UPDATE LOW_PRIORITY niski priorytet z czekaniem DELAYED niski priorytet bez czekania (żądanie wstawione do kolejki) HIGH_PRIORITY wysoki priorytet z czekaniem 14

Użytkowanie (11) Rozszerzenie SQL (2) Operatory i && są traktowane jak logiczne OR i AND (jak w języku C). Zamiast należy korzystać z funkcji CONCAT() przyjmującej dowolną liczbę parametrów Ustawianie wartości zmiennych poprzez := SELECT @a:=sum(total),@b=count(*), @a/@b AS avg FROM test_table; SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3; 15

Użytkowanie (12) Wyszukiwanie pełnotekstowe (tylko MyISAM) Indeks o nazwie FULLTEXT Wyszukiwanie przez funkcję MATCH...AGAINST CREATE TABLE artykuly ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, tytul VARCHAR(200), tresc TEXT, FULLTEXT (tytul,tresc) ); W przypadku gdy szukane słowo określałoby ponad połowę wierszy, jest wtedy uznawane za słowo mało znaczące (słabo selekcjonujące) i nie jest brane pod uwagę przy wyszukiwaniu. 16

Użytkowanie (13) Wyszukiwanie pełnotekstowe (2) INSERT INTO artykuly VALUES (NULL,'MySQL Tutorial', 'DBMS stands for DataBase...'), (NULL,'How To Use MySQL Efficiently', 'After you went through a...'), (NULL,'Optimising MySQL','In this tutorial we will show...'), (NULL,'1001 MySQL Tricks','1. Never run mysqld as root. 2....'), (NULL,'MySQL vs. YourSQL', 'In the following database comparison...'), (NULL,'MySQL Security', 'When configured properly, MySQL...'); SELECT * FROM artykuly WHERE MATCH (tytul,tresc) AGAINST ('database'); +----+-------------------+------------------------------------------+ id tytul tresc +----+-------------------+------------------------------------------+ 5 MySQL vs. YourSQL In the following database comparison... 1 MySQL Tutorial DBMS stands for DataBase... +----+-------------------+------------------------------------------+ 2 rows in set (0.00 sec) SELECT * FROM artykuly WHERE MATCH (tytul,tresc) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE); 17

Użytkowanie (14) Typy tabel niezależny silnik dostępu do danych Nietransakcyjne (szybkie) MyISAM bazuje na ISAM, ('.MYI' MYIndex, '.MYD' MYData) - BTree MEMORY/HEAP używa hash-indeks, BTree ('.frm' format, dane w pamięci RAM) MERGE użycie kilku tabel MyISAM ('.frm' format, '.MRG' linki do tabel) 18

Użytkowanie (15) Transakcyjne, klucze obce InnoDB używa BTree indeksy (ewentualnie automatycznie wygenerowany hash-index na podstawie BTree indeksu) BDB (BerkeleyDB) używa BTree indeksy ('.frm' format, '.db' dane i indeksy) 19

HEAP Użytkowanie (16) CREATE TABLE test ENGINE = HEAP SELECT ip, SUM(downloads) AS down FROM log_table GROUP BY ip; SELECT COUNT(ip),AVG(down) FROM test; DROP TABLE test; CREATE TABLE lookup (id INT) ENGINE = MEMORY; CREATE INDEX id_index USING BTREE ON lookup (id); 20

Użytkowanie (17) InnoDB CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; CREATE TABLE child(id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE SET NULL ) ENGINE=INNODB; 21

Użytkowanie (18) CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB; CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; 22

Użytkowanie (19) CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, INDEX (customer_id), FOREIGN KEY (customer_id) REFERENCES customer(id)) ENGINE=INNODB; 23

Użytkowanie (20) Transakcje START TRANSACTION / SET AUTOCOMMIT=0 COMMIT / ROLLBACK Punkty kontrolne możliwość wycofania się do określonego miejsca wewnątrz transakcji SAVEPOINT identifier ROLLBACK TO SAVEPOINT identifier 24

Transakcje (2) Użytkowanie (21) Blokowanie tabel dostęp wyłączny LOCK TABLES tbl_name [AS alias] {READ [LOCAL] [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] [LOW_PRIORITY] WRITE}...]... UNLOCK TABLES 25

Poziomy izolacji Użytkowanie (22) SET [GLOBAL SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED READ COMMITTED REPEATABLE READ (def.) SERIALIZABLE } global będzie domyślny dla następnych session aktualny w obrębie sesji READ UNCOMMITTED "brudny odczyt" READ COMMITTED czyta zatwierdzone REPEATABLE READ domyślny, odczyt powtarzalny SERIALIZABLE pełna szeregowalność 26

Przykład użycia Użytkowanie (23) Utworzenie bazy danych i podłączenie się do niej SHOW DATABASES; CREATE DATABASE zwierzaki; USE zwierzaki; Utworzenie tabeli SHOW TABLES; CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); DESCRIBE pet; Załadowanie danych INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL); 27

Przykład użycia (2) Pobranie danych SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; Użytkowanie (24) SELECT DISTINCT owner FROM pet; SELECT name, birth, CURDATE(), (YEAR(CURDATE()) - YEAR(birth)) - (RIGHT(CURDATE(),5) < RIGHT(birth,5)) AS age FROM pet; 28

Użytkownicy i uprawnienia Administracja ACL (Access Control Lists) informacja jest przechowywana w tabelach systemowych: mysql.user mysql.db mysql.host mysql.tables_priv mysql.columns_priv mysql.procs_priv 29

Administracja (2) Użytkownicy i uprawnienia (2) Użytkownicy (autoryzacja) nazwa użytkownika adres, z którego się łączy (może być podana maska) 30

Administracja (3) Użytkownicy i uprawnienia (3) Dostęp do zasobów - poziomy hierarchii Global level GRANT/REVOKE... ON *.* Database level GRANT/REVOKE... ON db.* Table level GRANT/REVOKE... ON db.table Column level tabela: mysql.columns_priv Routine level GRANT/REVOKE... ON... 31

Rodzaje uprawnień Administracja (4) ALL [PRIVILEGES] ALTER CREATE CREATE TEMPORARY TABLES DELETE DROP EXECUTE FILE INDEX INSERT LOCK TABLES PROCESS REFERENCES RELOAD REPLICATION CLIENT REPLICATION SLAVE SELECT SHOW DATABASES SHUTDOWN SUPER UPDATE USAGE (brak uprawnień) GRANT OPTION 32

Administracja (5) Tworzenie użytkownika CREATE USER david [IDENTIFIED BY [PASSWORD] 'password'] Usuwanie użytkownika DROP USER david; 33

Zmiana hasła Administracja (6) SET PASSWORD FOR 'u1'@'h1' = PASSWORD('newpwd'); Zmiana hasła przez tabele systemowe: UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE user='u1' AND host='h1'; FLUSH PRIVILEGES; // bo używał tabeli 34

Administracja (7) Nadawanie praw (gdy brak użytkownika, to zostanie założony) GRANT ALL PRIVILEGES ON db.* TO david@'192.58.197.0/255.255.255.0'; Usuwanie praw nie usuwa użytkownika (DROP USER) usunięcie tabeli nie usuwa praw do tabeli 35

Administracja (8) Ograniczenie wykorzystania zasobów GRANT... WITH MAX_QUERIES_PER_HOUR N1 MAX_UPDATES_PER_HOUR N2 MAX_CONNECTIONS_PER_HOUR N3; 36

Administracja (9) Domyślne uprawnienia 'root' bez hasła z 'localhost' (root@localhost) 'anonymous' bez hasła (@localhost/hostname) do bazy 'test' rozpoczynającej się od 'test_' 37

Administracja (10) Tabele bazy danych są zapisane w oddzielnych plikach Baza danych jest przechowywana w oddzielnym katalogu Można wykonać kopię bazy z poziomu systemu operacyjnego z użyciem: LOCK TABLES zablokowanie tabel FLUSH TABLES zapisanie wszystkich danych z cache tabeli do pliku file copy 38

Administracja (11) Wykonanie kopii danych do pliku SELECT... INTO OUTFILE 'file_name' LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; Tylko dla MyISAM BACKUP TABLE tbl_name[,tbl_name...] TO '/path/to/backup/directory' RESTORE TABLE tbl_name[,tbl_name...] FROM '/path/to/backup/directory' 39

Administracja (12) Program do zrzucenia bazy do pliku SQL mysqldump [OPTIONS] database [tables] > backup-file.sql mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2...] mysqldump [OPTIONS] --all-databases [OPTIONS] mysql database < backup-file.sql 40

Administracja (13) Sprawdzenie tabeli CHECK TABLE tbl_name[,tbl_name...] [option [option...]] Gdzie option: QUICK FAST MEDIUM EXTENDED CHANGED Naprawa tabeli REPAIR [LOCAL NO_WRITE_TO_BINLOG] TABLE tbl_name[,tbl_name...] [QUICK] [EXTENDED] [USE_FRM] 41

Administracja (14) Kanały komunikacyjne TCP/IP 3306 socket Unix, pipe WinNT (potoki) zawiera SSL, od klienta wymagana konfiguracja tunelu dla portu 3306 42