POWTÓRZENIE Własności relacji; Klucz główny, klucz obcy;

Slides:



Advertisements
Podobne prezentacje
Klasyfikacja roczna w roku szkolnym 2012/2013
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Projektowanie bazy danych
POWIAT MYŚLENICKI Tytuł Projektu: Poprawa płynności ruchu w centrum Myślenic poprzez przebudowę skrzyżowań dróg powiatowych K 1935 i K 1967na rondo.
SQL – Strukturalny język zapytań
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Język SQL Część II.
Liczby pierwsze.
BD-LAB4 Wojciech Pieprzyca
Domy Na Wodzie - metoda na wlasne M
Bazy danych 8. SQL podstawy P. F. Góra semestr letni 2004/05.
Podatki i opłaty lokalne w 2010 roku
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
UŁAMKI DZIESIĘTNE porównywanie, dodawanie i odejmowanie.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 7: Relacje i ograniczenia integralnościowe Język definiowania danych - DDL (Data Definition.
Prezentacja poziomu rozwoju gmin, które nie korzystały z FS w 2006 roku. Eugeniusz Sobczak Politechnika Warszawska KNS i A Wykorzystanie Funduszy.
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
Język definicji danych (Data Definition Language)
Język definicji danych (Data Definition Language)
POWTÓRZENIE Główne elementy składni SQL: Zasady ogólne
Wykład 2 struktura programu elementy języka typy zmienne
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Klamki do drzwi Klamki okienne i inne akcesoria
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
Matura 2005 Wyniki Jarosław Drzeżdżon Matura 2005 V LO w Gdańsku
SQL – Structured Query Language (3)
Ogólnopolski Konkurs Wiedzy Biblijnej Analiza wyników IV i V edycji Michał M. Stępień
Technika Mikroprocesorowa 1
MySQL – ODBC - ACCESS.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
SQL – Structured Query Language (1)
dr hab. Ryszard Walkowiak prof. nadzw.
ANNA BANIEWSKA SYLWIA FILUŚ
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
MySQL bazy danych dla witryny
Andrzej Macioł Bazy danych – SQL – cz. 1. Andrzej Macioł Składowe SZBD Jądro SZBD realizuje podstawowe funkcje związane z przechowywaniem danych, kontrolą
VI przegląd plastyczny z rysunku, malarstwa i rzeźby
EGZAMIN GIMNAZJALNY W SUWAŁKACH 2009 Liczba uczniów przystępująca do egzaminu gimnazjalnego w 2009r. Lp.GimnazjumLiczba uczniów 1Gimnazjum Nr 1 w Zespole.
SQL - Structured Query Language
1. Pomyśl sobie liczbę dwucyfrową (Na przykład: 62)
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 3.
Jak zacząć w MS SQL? USE master; GO IF DB_ID (Nbaza') IS NOT NULL DROP DATABASE baza; GO CREATE DATABASE baza; GO USE baza; GO.
Analiza matury 2013 Opracowała Bernardeta Wójtowicz.
Komendy SQL do pracy z tabelami i bazami
Spływ należności w Branży Elektrycznej
Wstępna analiza egzaminu gimnazjalnego.
EGZAMINU GIMNAZJALNEGO 2013
EcoCondens Kompakt BBK 7-22 E.
EcoCondens BBS 2,9-28 E.
SQL – część II.
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
WYNIKI EGZAMINU MATURALNEGO W ZESPOLE SZKÓŁ TECHNICZNYCH
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Testogranie TESTOGRANIE Bogdana Berezy.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
1 Używanie alkoholu i narkotyków przez młodzież szkolną w województwie opolskim w 2007 r. Na podstawie badań przeprowadzonych przez PBS DGA (w pełni porównywalnych.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Współrzędnościowe maszyny pomiarowe
Bazy Danych W06 Wojciech St. Mościbrodzki
Elementy geometryczne i relacje
Strategia pomiaru.
LO ŁobżenicaWojewództwoPowiat pilski 2011r.75,81%75,29%65,1% 2012r.92,98%80,19%72,26% 2013r.89,29%80,49%74,37% 2014r.76,47%69,89%63,58% ZDAWALNOŚĆ.
Typy danych, klucz podstawowy, klucz obcy
Komendy SQL do pracy z danymi
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
1 Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu.
Projekt „NEW-TECH Program rozwoju praktycznych kompetencji nauczycieli zawodów branż nowych technologii” jest współfinansowany przez Unię Europejską Projekt.
Strukturalny język zapytań SQL - historia
Zapis prezentacji:

POWTÓRZENIE Własności relacji; Klucz główny, klucz obcy; Integralność danych; Schemat relacyjnej bazy danych; Algebra relacji: - operacje unarne (selekcja, rzut); - operacje binarne (suma, różnica, przecięcie, złączenie); SQL: - formułowanie poleceń; - operowanie na danych: SELECT, INSERT, UPDATE, DELETE.

Główne elementy składni SQL: Zasady ogólne: 1) Język SQL nie rozróżnia małych i wielkich liter w słowach kluczowych i nazwach (baz danych, tabel, indeksów i kolumn); często dotyczy to też wartości napisowych (np. we wzorcach). Legalne są nazwy zbudowane ze znaków alfanumerycznych, nie zaczynające się od cyfry (w MySQL jest to wprawdzie dozwolone, lecz nie zalecane). Nie są dozwolone nazwy składające się wyłącznie z cyfr. Nie należy w nazwach stosować znaków przestankowych "." i "@".

2) Każda komenda w MySQL kończy się średnikiem (;) i może składać się z wielu linii tekstu. 3) Wartości napisowe podaje się tak: "napis", lub tak: 'napis'. Znaki "%" i "_" są metaznakami, służącymi do tworzenia wzorców do porównań; oznaczają odpowiednio dowolny ciąg znaków i dowolny jeden znak. Aby zostały przekazane dosłownie, należy je poprzedzać metaznakiem "\". 4) Wartości liczbowe z kropką dziesiętną lub w notacji wykładniczej (np. -32032.6809e+10).

Start MySQL Okno startowe PuTTy

Zgłoszenie się serwera w trybie okna komend: Start MySQL Zgłoszenie się serwera w trybie okna komend:

Help:

Zgłoszenie się serwera w MySQL Administrator:

Po połączeniu z serwerem:

Bazy danych:

Wybrana baza:

Lista indeksów:

Lista perspektyw:

Edytor tabel:

Przejście do okna zapytań:

Wyświetlenie używanej wersji MySQL i aktualnej daty: mysql> SELECT VERSION(), CURRENT_DATE; +--------------------------+--------------+ | VERSION() | CURRENT_DATE | | 5.1.49-3~bpo50+1 | 2011-04-18 | 1 row in set (0.00 sec) mysql> Równoważne zapisy: mysql> SELECT VERSION(), CURRENT_DATE; mysql> select version(), current_date; mysql> SeLeCt vErSiOn(), current_DATE;

Wyświetlanie wersji i daty z czasem w osobnych tabelach: mysql> SELECT VERSION(); SELECT NOW(); +---------------------+ | VERSION() | | 5.1.49-3~bpo50+1 | 1 row in set (0.00 sec) | NOW() | | 2011-04-18 10:24:13 | mysql>

Wpis komendy w wielu liniach: mysql> SELECT -> USER() -> , -> CURRENT_DATE; +----------------+--------------+ | user() | current_date | | gilg@localhost | 2011-04-18 | 1 row in set (0.00 sec) mysql> W celu wycofania wykonania komendy wstawiamy na końcu zapis \c: mysql> SELECT -> USER() -> \c mysql>

Obliczenia: mysql> SELECT SIN(PI()/4), (4+1)*5; +------------------+---------+ | SIN(PI()/4) | (4+1)*5 | | 0.70710678118655 | 25 | 1 row in set (0.31 sec) mysql> W celu wycofania wykonania komendy wstawiamy na końcu zapis \c: mysql> SELECT -> USER() -> \c mysql>

Znaczenie znaków zachęty: znak zachęty Znaczenie mysql> gotowość do wykonania nowej komendy -> oczekiwanie na następną linię kontynuacji komendy ′> oczekiwanie na następną linię kończącą wpis łańcucha w pojedynczym cudzysłowie (′) ″> oczekiwanie na następną linię kończącą wpis łańcucha w podwójnym cudzysłowie (″) `> oczekiwanie na następną linię kończącą wpis kończącą wpis identyfikatora wpisywanego od znaczka (`) /*> oczekiwanie na następną linię kończącą wpis komentarza rozpoczętego znakiem /*

Komendy startowe i ogólne: SHOW DATABASES [LIKE ‘wzorzec’]; – wyświetla listę baz danych [według wzorca] mysql> SHOW DATABASES LIKE 'te%'; +----------------+ | Database (te%) | | test | 1 row in set (0.06 sec) mysql> SHOW DATABASES LIKE 'te_'; Empty set (0.00 sec) mysql> SHOW DATABASES LIKE 'te__'; +-----------------+ | Database (te__) | | test | 1 row in set (0.00 sec) mysql>

mysql> SHOW DATABASES LIKE '%st'; +----------------+ | Database (%st) | | test | 1 row in set (0.00 sec) mysql> SHOW DATABASES LIKE 't%t'; | Database (t%t) | mysql> SHOW DATABASES LIKE 't__t'; +-----------------+ | Database (t__t) | | test |

Wyświetlanie całej listy baz danych: mysql> SHOW DATABASES; +--------------------+ | Database | | information_schema | | gilg | | test | 3 rows in set (0.06 sec) mysql>

Podstawowe polecenia definicji danych SQL: CREATE SCHEMA DROP SCHEMA CREATE DOMAIN ALTER DOMAIN DROP DOMAIN CREATE TABLE ALTER TABLE DROP TABLE CREATE VIEW DROP VIEW CREATE CHARACTER SET DROP CHARACTER SET CREATE COLLATION DROP COLLATION Wykorzystywane są one do tworzenia, modyfikacji oraz usuwania struktur tworzących schemat konceptualny.

W wielu SZBD istnieją także polecenia: CREATE INDEX DROP INDEX Chociaż standard SQL tego nie opisuje. Według standardu ISO relacje i inne obiekty bazy danych istnieją w środowisku, które zawiera przynajmniej jeden katalog, a każdy katalog składa się ze zbioru schematów. Schemat zaś to nazwa obejmująca zespół obiektów bazy danych (tabele, perspektywy, dziedziny, zestawienia), które są ze sobą w pewien sposób powiązane. Standard pozostawia poszczególnym implementacjom realizację mechanizmu tworzenia i likwidowania katalogów.

Podaje jedynie polecenie definiowania schematu: CREATE SCHEMA nazwa [AUTHORIZATION nazwa_właściciela] Szczegóły dotyczące określenia zakresu uprawnień dla użytkowników schematu pozostają zależne od implementacji. Polecenie usuwania schematu: DROP SCHEMA nazwa [RESTRICTCASCADE] Słowo RESTRICT oznacza, że schemat musi być pusty – w przeciwnym razie nie zostanie usunięty, zaś słowo CASCADE oznacza, że operacja kaskadowo usuwa wszystkie obiekty związane ze schematem.

Tworzenie nowej bazy w MySQL: CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] nazwa_bazy [[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name]; CREATE SCHEMA synonim CREATE DATABASE Przy braku specyfikacji IF NOT EXISTS wystąpi błąd jeżeli baza danych o podanej nazwie istnieje. Wszystkie opcje bazy danych są zapisywane w pliku db.opt, który znajduje się w katalogu bazy danych (np.C:\MySQL\data\biuro). CHARACTER SET - wyszczególnia domyślny dla bazy danych zbiór znaków. COLLATE - wyszczególnia domyślne dla bazy danych zestawienie.

Serwer MySQL może równocześnie zarządzać wieloma bazami danych (zbiorami tabel - database), każdą z nich identyfikuje jej nazwa i mogą one posiadać oddzielnie zdefiniowane prawa dostępu. W danej chwili (w trakcie trwania połączenia z serwerem MySQL), jest jedna bieżąca baza danych, do której domyślnie odnoszą się komendy adresujące tabele. Odniesienia do kolumn mogą być postaci: nazwa_kolumny tabela.nazwa_kolumny bazadanych.tabela.nazwa_kolumny tabela@bazadanych.nazwa_kolumny

mysql> CREATE DATABASE IF NOT EXISTS biuro DEFAULT CHARACTER SET cp1250 DEFAULT COLLATE cp1250_polish_ci; Query OK, 1 row affected (0.02 sec) mysql> SHOW DATABASES; +--------------------+ | Database | | information_schema | | biuro | | test | 4 rows in set (0.00 sec) mysql>

Wyświetlanie zapisu tworzenia bazy: mysql> SHOW CREATE DATABASE biuro; +----------+---------------------------------------------+ | Database | Create Database | | biuro | CREATE DATABASE `biuro` /*!40100 DEFAULT CHARACTER SET cp1250 COLLATE cp1250_polish_ci */ | 1 row in set (0.00 sec) Inny sposób prezentacji wyniku: mysql> SHOW CREATE DATABASE biuro\G ************************* 1. row ************************* Database: biuro Create Database: CREATE DATABASE `biuro` /*!40100 DEFAULT CHARACTER SET cp1250 COLLATE cp1250_polish_ci */ 1 row in set (0.01 sec) mysql>

Zbiory znaków i zestawienia w MySQL: mysql> SHOW CHARACTER SET; +----------+-----------------------------+---------------------+--------+ | Charset | Description | Default collation | Maxlen | | big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 | | dec8 | DEC West European | dec8_swedish_ci | 1 | | cp850 | DOS West European | cp850_general_ci | 1 | | hp8 | HP West European | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom Russian | koi8r_general_ci | 1 | | latin1 | cp1252 West European | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 | | swe7 | 7bit Swedish | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | | hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 | | tis620 | TIS620 Thai | tis620_thai_ci | 1 | | euckr | EUC-KR Korean | euckr_korean_ci | 2 | | koi8u | KOI8-U Ukrainian | koi8u_general_ci | 1 | | gb2312 | GB2312 Simplified Chinese | gb2312_chinese_ci | 2 | | greek | ISO 8859-7 Greek | greek_general_ci | 1 | | cp1250 | Windows Central European | cp1250_general_ci | 1 | ...

cd: ... | gbk | GBK Simplified Chinese | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 Armenian | armscii8_general_ci | 1 | | utf8 | UTF-8 Unicode | utf8_general_ci | 3 | | ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 | | cp866 | DOS Russian | cp866_general_ci | 1 | | keybcs2 | DOS Kamenicky Czech-Slovak | keybcs2_general_ci | 1 | | macce | Mac Central European | macce_general_ci | 1 | | macroman | Mac West European | macroman_general_ci | 1 | | cp852 | DOS Central European | cp852_general_ci | 1 | | latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 | | cp1251 | Windows Cyrillic | cp1251_general_ci | 1 | | cp1256 | Windows Arabic | cp1256_general_ci | 1 | | cp1257 | Windows Baltic | cp1257_general_ci | 1 | | binary | Binary pseudo charset | binary | 1 | | geostd8 | GEOSTD8 Georgian | geostd8_general_ci | 1 | | cp932 | SJIS for Windows Japanese | cp932_japanese_ci | 2 | | eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci | 3 | +----------+-----------------------------+---------------------+--------+ 36 rows in set (0.00 sec) mysql> Domyślną czcionką jest latin1, natomiast ustawienie domyślne to latin1_swedish_ci

Zestawienia: mysql> SHOW COLLATION; +----------------------+----------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | | big5_chinese_ci | big5 | 1 | Yes | Yes | 1 | | big5_bin | big5 | 84 | | Yes | 1 | | dec8_swedish_ci | dec8 | 3 | Yes | | 0 | | dec8_bin | dec8 | 69 | | | 0 | | cp850_general_ci | cp850 | 4 | Yes | | 0 | | cp850_bin | cp850 | 80 | | | 0 | | hp8_english_ci | hp8 | 6 | Yes | | 0 | | hp8_bin | hp8 | 72 | | | 0 | | koi8r_general_ci | koi8r | 7 | Yes | | 0 | | koi8r_bin | koi8r | 74 | | | 0 | | latin1_german1_ci | latin1 | 5 | | Yes | 1 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | Yes | 1 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | Yes | 1 | | latin1_general_cs | latin1 | 49 | | Yes | 1 | | latin1_spanish_ci | latin1 | 94 | | Yes | 1 | | latin2_czech_cs | latin2 | 2 | | Yes | 4 | | latin2_general_ci | latin2 | 9 | Yes | Yes | 1 | | latin2_hungarian_ci | latin2 | 21 | | Yes | 1 | | latin2_croatian_ci | latin2 | 27 | | Yes | 1 | | latin2_bin | latin2 | 77 | | Yes | 1 | ...

... | swe7_swedish_ci | swe7 | 10 | Yes | | 0 | | swe7_bin | swe7 | 82 | | | 0 | | ascii_general_ci | ascii | 11 | Yes | | 0 | | ascii_bin | ascii | 65 | | | 0 | | ujis_japanese_ci | ujis | 12 | Yes | Yes | 1 | | ujis_bin | ujis | 91 | | Yes | 1 | | sjis_japanese_ci | sjis | 13 | Yes | Yes | 1 | | sjis_bin | sjis | 88 | | Yes | 1 | | hebrew_general_ci | hebrew | 16 | Yes | | 0 | | hebrew_bin | hebrew | 71 | | | 0 | | tis620_thai_ci | tis620 | 18 | Yes | Yes | 4 | | tis620_bin | tis620 | 89 | | Yes | 1 | | euckr_korean_ci | euckr | 19 | Yes | Yes | 1 | | euckr_bin | euckr | 85 | | Yes | 1 | | koi8u_general_ci | koi8u | 22 | Yes | | 0 | | koi8u_bin | koi8u | 75 | | | 0 | | gb2312_chinese_ci | gb2312 | 24 | Yes | Yes | 1 | | gb2312_bin | gb2312 | 86 | | Yes | 1 | | greek_general_ci | greek | 25 | Yes | | 0 | | greek_bin | greek | 70 | | | 0 | | cp1250_general_ci | cp1250 | 26 | Yes | Yes | 1 | | cp1250_czech_cs | cp1250 | 34 | | Yes | 2 | | cp1250_croatian_ci | cp1250 | 44 | | Yes | 1 | | cp1250_bin | cp1250 | 66 | | Yes | 1 | | cp1250_polish_ci | cp1250 | 99 | | Yes | 1 |

... | gbk_chinese_ci | gbk | 28 | Yes | Yes | 1 | | gbk_bin | gbk | 87 | | Yes | 1 | | latin5_turkish_ci | latin5 | 30 | Yes | | 0 | | latin5_bin | latin5 | 78 | | | 0 | | armscii8_general_ci | armscii8 | 32 | Yes | | 0 | | armscii8_bin | armscii8 | 64 | | | 0 | | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | utf8_latvian_ci | utf8 | 194 | | Yes | 8 | | utf8_romanian_ci | utf8 | 195 | | Yes | 8 | | utf8_slovenian_ci | utf8 | 196 | | Yes | 8 | | utf8_polish_ci | utf8 | 197 | | Yes | 8 | | utf8_estonian_ci | utf8 | 198 | | Yes | 8 | | utf8_spanish_ci | utf8 | 199 | | Yes | 8 | | utf8_swedish_ci | utf8 | 200 | | Yes | 8 | | utf8_turkish_ci | utf8 | 201 | | Yes | 8 | | utf8_czech_ci | utf8 | 202 | | Yes | 8 | | utf8_danish_ci | utf8 | 203 | | Yes | 8 | | utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 | | utf8_slovak_ci | utf8 | 205 | | Yes | 8 | | utf8_spanish2_ci | utf8 | 206 | | Yes | 8 | | utf8_roman_ci | utf8 | 207 | | Yes | 8 | | utf8_persian_ci | utf8 | 208 | | Yes | 8 | | utf8_esperanto_ci | utf8 | 209 | | Yes | 8 | | utf8_hungarian_ci | utf8 | 210 | | Yes | 8 |

... | ucs2_general_ci | ucs2 | 35 | Yes | Yes | 1 | | ucs2_bin | ucs2 | 90 | | Yes | 1 | | ucs2_unicode_ci | ucs2 | 128 | | Yes | 8 | | ucs2_icelandic_ci | ucs2 | 129 | | Yes | 8 | | ucs2_latvian_ci | ucs2 | 130 | | Yes | 8 | | ucs2_romanian_ci | ucs2 | 131 | | Yes | 8 | | ucs2_slovenian_ci | ucs2 | 132 | | Yes | 8 | | ucs2_polish_ci | ucs2 | 133 | | Yes | 8 | | ucs2_estonian_ci | ucs2 | 134 | | Yes | 8 | | ucs2_spanish_ci | ucs2 | 135 | | Yes | 8 | | ucs2_swedish_ci | ucs2 | 136 | | Yes | 8 | | ucs2_turkish_ci | ucs2 | 137 | | Yes | 8 | | ucs2_czech_ci | ucs2 | 138 | | Yes | 8 | | ucs2_danish_ci | ucs2 | 139 | | Yes | 8 | | ucs2_lithuanian_ci | ucs2 | 140 | | Yes | 8 | | ucs2_slovak_ci | ucs2 | 141 | | Yes | 8 | | ucs2_spanish2_ci | ucs2 | 142 | | Yes | 8 | | ucs2_roman_ci | ucs2 | 143 | | Yes | 8 | | ucs2_persian_ci | ucs2 | 144 | | Yes | 8 | | ucs2_esperanto_ci | ucs2 | 145 | | Yes | 8 | | ucs2_hungarian_ci | ucs2 | 146 | | Yes | 8 | | cp866_general_ci | cp866 | 36 | Yes | | 0 | | cp866_bin | cp866 | 68 | | | 0 | | keybcs2_general_ci | keybcs2 | 37 | Yes | | 0 | | keybcs2_bin | keybcs2 | 73 | | | 0 | | macce_general_ci | macce | 38 | Yes | | 0 | | macce_bin | macce | 43 | | | 0 |

... | macroman_general_ci | macroman | 39 | Yes | | 0 | | macroman_bin | macroman | 53 | | | 0 | | cp852_general_ci | cp852 | 40 | Yes | | 0 | | cp852_bin | cp852 | 81 | | | 0 | | latin7_estonian_cs | latin7 | 20 | | | 0 | | latin7_general_ci | latin7 | 41 | Yes | | 0 | | latin7_general_cs | latin7 | 42 | | | 0 | | latin7_bin | latin7 | 79 | | | 0 | | cp1251_bulgarian_ci | cp1251 | 14 | | | 0 | | cp1251_ukrainian_ci | cp1251 | 23 | | | 0 | | cp1251_bin | cp1251 | 50 | | | 0 | | cp1251_general_ci | cp1251 | 51 | Yes | | 0 | | cp1251_general_cs | cp1251 | 52 | | | 0 | | cp1256_general_ci | cp1256 | 57 | Yes | | 0 | | cp1256_bin | cp1256 | 67 | | | 0 | | cp1257_lithuanian_ci | cp1257 | 29 | | | 0 | | cp1257_bin | cp1257 | 58 | | | 0 | | cp1257_general_ci | cp1257 | 59 | Yes | | 0 | | binary | binary | 63 | Yes | Yes | 1 | | geostd8_general_ci | geostd8 | 92 | Yes | | 0 | | geostd8_bin | geostd8 | 93 | | | 0 | | cp932_japanese_ci | cp932 | 95 | Yes | Yes | 1 | | cp932_bin | cp932 | 96 | | Yes | 1 | | eucjpms_japanese_ci | eucjpms | 97 | Yes | Yes | 1 | | eucjpms_bin | eucjpms | 98 | | Yes | 1 | +----------------------+----------+-----+---------+----------+---------+ 127 rows in set (0.00 sec) mysql>

Zestawienia dla wybranych znaków: mysql> SHOW COLLATION LIKE 'latin1%'; +-------------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | | latin1_german1_ci | latin1 | 5 | | Yes | 1 | | latin1_swedish_ci | latin1 | 8 | Yes | Yes | 1 | | latin1_danish_ci | latin1 | 15 | | Yes | 1 | | latin1_german2_ci | latin1 | 31 | | Yes | 2 | | latin1_bin | latin1 | 47 | | Yes | 1 | | latin1_general_ci | latin1 | 48 | | Yes | 1 | | latin1_general_cs | latin1 | 49 | | Yes | 1 | | latin1_spanish_ci | latin1 | 94 | | Yes | 1 | 8 rows in set (0.00 sec) mysql> SHOW COLLATION LIKE 'cp1250%'; +--------------------+---------+----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | | cp1250_general_ci | cp1250 | 26 | Yes | Yes | 1 | | cp1250_czech_cs | cp1250 | 34 | | Yes | 2 | | cp1250_croatian_ci | cp1250 | 44 | | Yes | 1 | | cp1250_bin | cp1250 | 66 | | Yes | 1 | | cp1250_polish_ci | cp1250 | 99 | | Yes | 1 | 5 rows in set (0.00 sec)

mysql> SHOW COLLATION LIKE 'utf8%'; +--------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | | utf8_general_ci | utf8 | 33 | Yes | Yes | 1 | | utf8_bin | utf8 | 83 | | Yes | 1 | | utf8_unicode_ci | utf8 | 192 | | Yes | 8 | | utf8_icelandic_ci | utf8 | 193 | | Yes | 8 | | utf8_latvian_ci | utf8 | 194 | | Yes | 8 | | utf8_romanian_ci | utf8 | 195 | | Yes | 8 | | utf8_slovenian_ci | utf8 | 196 | | Yes | 8 | | utf8_polish_ci | utf8 | 197 | | Yes | 8 | | utf8_estonian_ci | utf8 | 198 | | Yes | 8 | | utf8_spanish_ci | utf8 | 199 | | Yes | 8 | | utf8_swedish_ci | utf8 | 200 | | Yes | 8 | | utf8_turkish_ci | utf8 | 201 | | Yes | 8 | | utf8_czech_ci | utf8 | 202 | | Yes | 8 | | utf8_danish_ci | utf8 | 203 | | Yes | 8 | | utf8_lithuanian_ci | utf8 | 204 | | Yes | 8 | | utf8_slovak_ci | utf8 | 205 | | Yes | 8 | | utf8_spanish2_ci | utf8 | 206 | | Yes | 8 | | utf8_roman_ci | utf8 | 207 | | Yes | 8 | | utf8_persian_ci | utf8 | 208 | | Yes | 8 | | utf8_esperanto_ci | utf8 | 209 | | Yes | 8 | | utf8_hungarian_ci | utf8 | 210 | | Yes | 8 | 21 rows in set (0.00 sec)

mysql> SHOW COLLATION LIKE 'ucs2%'; +--------------------+---------+-----+---------+----------+---------+ | Collation | Charset | Id | Default | Compiled | Sortlen | | ucs2_general_ci | ucs2 | 35 | Yes | Yes | 1 | | ucs2_bin | ucs2 | 90 | | Yes | 1 | | ucs2_unicode_ci | ucs2 | 128 | | Yes | 8 | | ucs2_icelandic_ci | ucs2 | 129 | | Yes | 8 | | ucs2_latvian_ci | ucs2 | 130 | | Yes | 8 | | ucs2_romanian_ci | ucs2 | 131 | | Yes | 8 | | ucs2_slovenian_ci | ucs2 | 132 | | Yes | 8 | | ucs2_polish_ci | ucs2 | 133 | | Yes | 8 | | ucs2_estonian_ci | ucs2 | 134 | | Yes | 8 | | ucs2_spanish_ci | ucs2 | 135 | | Yes | 8 | | ucs2_swedish_ci | ucs2 | 136 | | Yes | 8 | | ucs2_turkish_ci | ucs2 | 137 | | Yes | 8 | | ucs2_czech_ci | ucs2 | 138 | | Yes | 8 | | ucs2_danish_ci | ucs2 | 139 | | Yes | 8 | | ucs2_lithuanian_ci | ucs2 | 140 | | Yes | 8 | | ucs2_slovak_ci | ucs2 | 141 | | Yes | 8 | | ucs2_spanish2_ci | ucs2 | 142 | | Yes | 8 | | ucs2_roman_ci | ucs2 | 143 | | Yes | 8 | | ucs2_persian_ci | ucs2 | 144 | | Yes | 8 | | ucs2_esperanto_ci | ucs2 | 145 | | Yes | 8 | | ucs2_hungarian_ci | ucs2 | 146 | | Yes | 8 | 21 rows in set (0.00 sec) mysql>

Wybór używanej bazy: USE nazwa_bazy; – wybór bazy, która będzie wykorzystywana w MySQL mysql> USE biuro; Database changed mysql> Równoważne polecenie: CONNECT nazwa_bazy; – połączenie z bazą, która będzie wykorzystywana w MySQL mysql> CONNECT biuro; Connection id: 1 Current database: biuro mysql>

Modyfikacja bazy: ALTER {DATABASE | SCHEMA} [nazwa_bazy] [[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name]; Nazwa bazy danych może być pominięta, jeżeli dotyczy domyślnej (używanej) bazy. Zmiana nazwy bazy: RENAME {DATABASE | SCHEMA} nazwa_bazy TO nowa_nazwa_bazy; Dodane w MySQL 5.1.07 ale usunięte w MySQL 5.1.23

Usuwanie bazy: DROP {DATABASE | SCHEMA} [IF EXISTS] nazwa_bazy; mysql> DROP DATABASE biuro; Query OK, 0 rows affected (0.13 sec) mysql> CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA wprowadzone od MySQL 5.0.2.

Kontrola dostępu: Utworzenie nowego użytkownika: CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'][, user [IDENTIFIED BY [PASSWORD] 'password']] ... mysql> CREATE USER test; Query OK, 0 rows affected (0.00 sec) mysql> SET PASSWORD [FOR user] = PASSWORD('s_password') RENAME USER old_user TO new_user [, old_user TO new_user] ... DROP USER user [, user] ...

Nadawanie praw dostępu: GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.* | db_name.routine_name} TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [WITH with_option [with_option] ...]; Gdzie: object_type = TABLE | FUNCTION | PROCEDURE with_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count priv_type dla tabeli = SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION, INDEX, ALTER, CREATE VIEW, SHOW VIEW dla kolumn = SELECT, INSERT, UPDATE

GRANT SELECT ON biuro TO test; GRANT ALL [PRIVILEGES] ON biuro.* TO test; GRANT ALL PRIVILEGES ON *.* TO test; Wyświetlanie praw dostępu: SHOW GRANTS; SHOW GRANTS FOR root@localhost; SHOW GRANTS FOR test; mysql> SHOW GRANTS; +--------------------------------------------------------+ | Grants for root@localhost | | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*3F0B2389FD4B1BA0803952E313603A2C022057D0' WITH GRANT OPTION | 1 row in set (0.00 sec)

Odbieranie praw dostępu innym użytkownikom: REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] {tbl_name | * | *.* | db_name.*} FROM user [, user] ...; Odbieranie wszystkich praw dostępu: REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...;

Definicja danych: Do utworzenia tabeli służy instrukcja CREATE TABLE, wymagająca podania nazwy tworzonej tabeli, nazwy każdej kolumny w tej tabeli, typu danych kolumn oraz maksymalnej długości danych w kolumnie. Składnia polecenia: CREATE TABLE nazwa_tabeli ( nazwa_kolumny typ_danych[(długość)opcje], nazwa_kolumny typ_danych[(długość) opcje,] ...) [opcje_tabeli]; (nawiasami kwadratowymi obejmujemy elementy opcjonalne).

W MySQL większość typów danych ma domyślne lub ustalone długości (DATE, TIME, YEAR, ...) lub długości maksymalne (TEXT, BLOB, ...), parametr długości można więc często pominąć. Opcje, które mogą wystąpić po określeniu typu i długości danych to np. NULL, NOT NULL, PRIMARY KEY, UNIQUE, DEFAULT wartość_domyślna.

Typy danych: Standard ISO SQL (1992) przewiduje kilkanaście typów danych, podzielonych na grupy: 1. Typ logiczny: BOOLEAN 2. Typy znakowe: np. CHAR(N), VARCHAR(N) 3. Typ bitowy: BIT[(M)] 4. Typy liczbowe: dokładny np. INT, BIGINT, SMALLINT, DECIMAL lub przybliżony, np. FLOAT, DOUBLE PRECISION

3. Typy daty i godziny (Datetime): np 3. Typy daty i godziny (Datetime): np. DATE, TIME, DATETIME, TIMESTAMP, YEAR 4. Typ przedziałowy: INTERVAL – opisujący przedział czasu 5. Typ znakowy i bitowy dużych obiektów o zmiennej długości odpowiednio TEXT i BLOB oraz ich odmiany (TINYTEXT, MEDIUMTEXT, LONGTEXT, TINYBLOB, MEDIUMBLOB, LONGBLOB) różniące się limitem długości (nie dopuszczają one dodatkowego określenia długości i przechowują informację o długości faktycznie wprowadzonych danych). Kolumny BLOB i TEXT nie mogą posiadać wartości DEFAULT.

6. Innym częstym rozszerzeniem repertuaru typów są (np 6. Innym częstym rozszerzeniem repertuaru typów są (np. w MySQL) ENUM i SET; są to typy napisowe przyjmujące jedną lub odpowiednio kilka spośród z góry określonych (w definicji typu kolumny) wartości, np.: ... kolor ENUM('niebieski', 'biały', 'czarny') NOT NULL Różnorodność dostępnych typów danych i możliwość określania długości należy wykorzystywać do optymalizowania definicji tabeli pod kątem zużycia miejsca i do kontroli integralności wprowadzanych (bądź wynikających z operacji na danych) wartości.

Typy danych w MySQL: BOOL, BOOLEAN może przechowywać tylko dwie wartości: TRUE lub FALSE CHAR(N) definiuje pole napisowe o stałej długości (ew. uzupełniane spacjami) VARCHAR(N) jest polem o zmiennej długości nie przekraczającej N, ale maksymalnie 255 BIT[(M)] M oznacza liczbę bitów na wartość, od 1 do 64 (domyślnie 1). W wersjach przed 5.0.3, BIT jest synonimem do TINYINT(1)

INT[(M)] [UNSIGNED] [ZEROFILL] pole liczb całkowitych, przechowuje liczby z zakresu od -2147483648 do 2147483647 (z parametrem UNSIGNED - od 0 do 4294967295). DECIMAL(M,D) Pole liczbowe (ułamek dziesiętny o ustalonej liczbie cyfr dziesiętnych w części całkowitej i ułamkowej, gdzie M to maksymalna ilość cyfr w tej kolumnie, a D to maksymalna ilość cyfr w części ułamkowej). DATE pole daty przechowuje daty z zakresu od '1000-01-01' do '9999-12-31'. BLOB/TEXT pole tekstowe, przechowuje dłuższe, wielowierszowe teksty do 65535 znaków.

Wymagana pamięć dla typów znakowych : CHAR(M) M bajtów, 0 <= M <= 255 VARCHAR(M) L+l bajtów, gdzie L <= M i 0<= M <= 255 TINYBLOB, TINYTEXT L+l bajtów, gdzie L < 2^8 (255 znaków) BLOB, TEXT L+2 bajtów, gdzie L < 2^16 (65 535 znaków) MEDIUMBLOB, MEDIUMTEXT L+3 bajtów, gdzie L < 2^24 (16 777 215 znaków) LONGBLOB, LONGTEXT L+4 bajtów, gdzie L < 2^32 (4 294 967 295 znaków)

ENUM ( 'value1' , 'value2',...) 1 or 2 bajtów, zależnie od liczby wyliczeniowych wartości (maksymalnie 65 535) SET ( 'value1' , 'value2',...) 1, 2, 3, 4, lub 8 bajtów, zależnie od liczby elementów zbioru (maksymalnie 64) Od MySQL 4.0 maksymalna dopuszczalna długość kolumn LONGBLOB lub LONGTEXT zależy od skonfigurowanego maksymalnego rozmiaru pakietów w protokole klient/serwer i dostępnej pamięci.

Odmiany typów liczbowych: TINYINT[(M)] [UNSIGNED] [ZEROFILL] SMALLINT[(M)] [UNSIGNED] [ZEROFILL] MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] BIGINT[(M)] [UNSIGNED] [ZEROFILL] DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] FLOAT(p) [UNSIGNED] [ZEROFILL] DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL] REAL[(M,D)] [UNSIGNED] [ZEROFILL]

Wymagana pamięć dla typów liczbowych: bajty Wartość minimalna Wartość maksymalna   (Signed / Unsigned) TINYINT 1 -128 / 0 127 (27-1) / 255 (28-1) SMALLINT 2 -32768 / 0 32767 (215-1) / 65535 (216-1) MEDIUMINT 3 -8388608 / 0 8388607 (223-1) / 16777215 (224-1) INT 4 -2147483648 / 0 2147483647 (231-1) / 4294967295 (232-1) BIGINT 8 -9223372036854775808 / 0 9223372036854775807 (263-1) / 18446744073709551615 (264-1)

Wymagana pamięć dla typów liczbowych cd: FLOAT (p) 4 bajtów jeżeli 0<=p<=24, 8 bajtów jeżeli 25<=p<=53 FLOAT 4 bajtów DOUBLE [PRECISION], pozycja REAL 8 bajtów DECIMAL(M,D), NUMERIC(M,D) M+2 bajtów jeżeli D > 0, M+1 bajtów jeżeli D = 0 (D+2, jeżeli M < D)

Wymagana pamięć dla typów daty i czasu: DATE 3 bytes DATETIME 8 bytes TIMESTAMP 4 bytes TIME YEAR 1 byte

Odmiany typów daty: Typ DATE jest stosowany dla dat i zawiera pola 'YYYY-MM-DD' w zakresie od '1000-01-01' do '9999-12-31'.  Typ DATETIME jest stosowany dla dat z czasem i zawiera pola 'YYYY-MM-DD HH:MM:SS' w zakresie od '1000-01-01 00:00:00' do '9999-12-31 23:59:59'.   Niewłaściwe wartości DATETIME, DATE, TIMESTAMP, TIME lub YEAR są zamieniane na ``zera'' odpowiednio: Typ kolumny Wartości "zerowe" DATETIME ‘0000-00-00 00:00:00’ DATE ‘0000-00-00’ TIMESTAMP 00000000000000 TIME ‘00:00:00' YEAR 0000

Typ kolumny Format wyświetlania TIMESTAMP (14) YYYYMMDDHHMMSS TIMESTAMP (12) YYMMDDHHMMSS TIMESTAMP (10) YYMMDDHHMM TIMESTAMP (8) YYYYMMDD TIMESTAMP (6) YYMMDD TIMESTAMP (4) YYMM TIMESTAMP (2) YY

Funkcje dotyczące daty bieżącej: CURDATE() – podaje datę bieżącą w formatach: 'YYYY-MM-DD' lub YYYYMMDD CURTIME() – podaje czas bieżący w formatach: 'HH:MM:SS' lub HHMMSS w zależności od kontekstu użycia znakowym lub numerycznym: mysql> select CURDATE(); +------------+ | CURDATE() | | 2011-04-18 | mysql> select CURTIME(); +-----------+ | CURTIME() | | 10:04:06 |

UTC_DATE() – synonim CURDATE() UTC_TIME() – synonim CURTIME() mysql> select CURDATE()+0; +-------------+ | CURDATE()+0 | | 20110418 | mysql> select Now(); +---------------------+ | Now() | | 2011-04-18 10:10:21 | UTC_DATE() – synonim CURDATE() UTC_TIME() – synonim CURTIME() CURRENT_TIMESTAMP i CURRENT_TIMESTAMP() są synonimami NOW()