Wybrane polecenia wewnętrzne edytora MySQL
Polecenie (tekstowe) |
skrót |
Znaczenie |
Help |
\h |
|
? |
\? |
|
clear |
\c |
|
connect |
\r |
|
ego |
\G |
Wysyła komendę do serwera mysql, wyświetla rezultat pionowo |
exit |
\q |
|
go |
\g |
Wysyła komendę do serwera mysql |
source |
\. |
Wykonuje skrypty SQL z pliku |
Use |
\u |
Ustawia aktualną bazę danych |
Logowanie się jako określony użytkownik
mysql -u nazwaużytkownika -p
Wybór istniejącej bazy danych
USE nazwa_bazy
Tworzenie nowej bazy danych:
CREATE DATABASE nazwa_bazy
Wyświetlanie tabel i ich struktury
SHOW TABLES;
SHOW COLUMNS FROM nazwa_tabeli;
TYPY DANYCH
Lczby całkowite (dokładne)
Typ |
Rozmiar |
Opis |
INT, INTEGER |
4 bajty |
liczba całkowite z zakresu -2147483648 do 2147483647 (4 bajty) |
TINYINT |
1 bajt |
liczba całkowita z zakresu -128 do 127 |
SMALLINT |
2 bajty |
liczba całkowita z zakresu -32768 do 32767 |
MEDIUMINT |
3 bajty |
liczba całkowita z zakresu -8388608 do 8388607 |
BIGINT |
8 bajtów |
liczba całkowita z zakresu -9223372036854775808 do 9223372036854775807 |
Liczby rzeczywiste (przybliżone)
Typ |
Rozmiar |
Opis |
FLOAT |
4 bajty |
liczba rzeczywista z zakresu -3.402823466E+38 do -1.175494351E-38 i 0 i 1.175494351E-38 do 3.402823466E+38 (zmiennoprzecinkowa o pojedynczej precyzji) |
REAL, DOUBLE |
8 bajtów |
liczba rzeczywista z zakresu 1.7976931348623157E+308 do -2.2250738585072014E-308 i 0 i 2.2250738585072014E-308 do 1.7976931348623157E+308 |
DECIMAL (M,D) |
M+1 lub M+2 |
Liczba typu DOUBLE zapisana jako ciąg tekstowy, dla którego możliwe jest ustalenie liczby pozycji po przecinku |
Data i czas
Typ |
Rozmiar |
Opis |
DATETIME |
8 bajtów |
Data i czas w formacie : YYYY:MM:DD:HH:mm:SS (odpowiednio rok, miesiąc, dzień, godzina, minuta i sekunda); zakres od '1000-01-01 00:00:00' do '9999-12-31 23:59:59' |
DATE |
3 bajty |
data w formacie YYYY:MM:DD (rok, miesiąc, dzień), zakres od '1000-01-01' do '9999-12-31' |
TIME |
3 bajty |
godzina w formacie HH:mm:SS (godzina, minuta, sekunda) |
YEAR |
1 bajt |
zakres od 1901 do 2155 |
TIMESTAMP(n) |
4 bajty |
jest to data z godziną, precyzję tego zapisu ustalamy sami poprzez wartość n (dla przykładu n=14 oznacza datę i godzinę w formacie YYYY:MM:DD:HH:mm:SS a n=2 YY) zakres od 1970 do 2037 |
Znakowe
Typ |
Rozmiar |
Opis |
CHAR(n) |
n bajtów |
jest to łańcuch znaków o długości n, gdzie n może przyjmować wartości od 0-255, bez względu na to jaki łańcuch zapiszemy do takiej komórki tabeli, zawsze będzie zajmował n bajtów (dopełnienie spacjami). |
VARCHAR(n) |
n+1 bajtów |
łańcuch znaków, wartość n określa maksymalną długość łańcucha, np.: jeśli do kolumny VARCHAR(10) zapiszemy łańcuch o długości 5 znaków to będzie on zajmował w bazie 6 bajtów |
BLOB |
|
dane w formie binarnej, ze względu na maksymalną długość takiego ciągu znaków dzieli się na kilka podtypów: TINYBLOB (2^8 znaków), BLOB (2^16 znaków), MEDIUMBLOB (2^24 znaków), LONGBLOB (2^32 znaków) |
TEXT |
Długość ciągu + 2 bajty |
dane tekstowe, podobnie jak BLOB ma odmiany ze względu na długość tekstu: TINYTEXT (2^8 - 256 znaków ), TEXT (2^16 - 65535 znaków), MEDIUMTEXT (2^24 -16777216 znaków), LONGTEXT (2^32 - 4294967296 znaków) |
Wyliczeniowe i zbiorowe
Typ |
Rozmiar |
Opis |
ENUM |
1 lub 2 bajty |
typ wyliczeniowy - dane przyjmują wartości spośród wcześniej przygotowanej przez nas listy. Lista taka może mieć maksymalnie 65535 elementów. |
SET |
1,2,3,4,lub 8 bajtów |
typ zbiorowy - pozycja taka może przyjmować 0 lub więcej wartości spośród listy przygotowanej podczas tworzenia tabeli, np. dla definicji SET ("jeden" , "dwa") do komórki tabeli możemy zapisać następujące wartości: |
TYPY KOLUMN:
PRIMARY KEY
UNIQUE
INDEX
Atrybut kolumny AUTO_INCREMENT
WYRAŻENIA WARUNKOWE C.D.
WYRAŻENIA WARUNKOWE
Operator |
|
= |
Równość |
< |
Mniejsze niż |
> |
Większe niż |
<= |
Mniejsze lub równe |
>= |
Większe lub równe |
!= |
Różne |
IS NOT NULL |
Posiada wartość |
IS NULL |
Nie posiada wartości |
BETWEEN |
W danym zakresie |
NOT BETWEEN |
Poza zakresem |
OR (także ||) |
Lub |
AND (także &&) |
I |
NOT (także !) |
Przeczenie |
LIKE
SELECT * FROM tabela WHERE kolumna LIKE `An%';
SELECT * FROM uczen WHERE nazwisko LIKE `%ski';
NOT LIKE
Znaki specjalne wyrażeń regularnych
Znak |
Wartości spełniające warunek |
. |
Dowolny pojedynczy znak |
q |
Brak lub jeden znak q |
q |
Brak lub większa liczba znaków q |
q |
Przynajmniej jeden znak q |
qx} |
X znaków q |
q,x} |
Najwyżej x znaków q |
qx,y} |
Liczba znaków q z przedziału x i y |
^q |
Ciąg rozpoczynający się od q |
q |
Ciąg kończący się znakiem q |
(pgr) |
Grupa (te znaki spełniają warunek) |
qz |
Znak q lub z |
[ ] |
Klasy znaków (np. [a-z], [0-9]) |
\ |
Znaki specjalne (\., \* itp.) |
Opcje select i funkcje c.d.
Konkatenacja - łączenie kilku wartości
CONCAT(kolumna1, kolumna2)
Np.:
SELECT uczen_id, CONCAT(imie1,', `,imie2,', `,nazwisko) FROM uczen;
Aliasy - symboliczne nazwy, definiowane za pomocą klauzuli AS
Np.:
SELECT uczen_id, CONCAT(imie1,', `,imie2,', `,nazwisko) AS uczeń FROM uczen;
Grupowanie - pozwala osiągać zbiorcze wyniki dla rekordów z tej samej kategorii; stosowana tu jest klauzula GROUP BY
Funkcje grupujące: MIN (kolumna), MAX(kolumna), SUM(kolumna), COUNT(kolumna)
Np.:
SELECT MAX(NOW()-data_ur) FROM uczen;
SELECT COUNT(*), kategoria FROM uczen GROUP BY (kategoria);
DISTINCT() - służy do odrzucania duplikatów danej wartości
SELECT DISTINCT(kolumna) FROM nazwatabeli;
Sortowanie wyników zapytania - klauzula ORDER BY
SELECT * FROM nazwatabeli ORDER BY kolumna1 [ASC,DESC], [kolumna2 [ASC,DESC];
MODYFIKACJA TABEL
ALTER TABLE nazwatabeli klauzula
ADD COLUMN |
ALTER TABLE nazwatabeli ADD COLUMN nazwakolumny VARCHAR(40); |
nowa kolumna na końcu |
CHANGE COLUMN |
ALTER TABLE nazwatebeli CHANGE COLUMN nazwakolumny nazwakolumny VARCHAR(60); |
zmiana typu I właściwości kolumny |
DROP COLUMN |
ALTER TABLE nazwatabeli DROP COLUMN nazwatabeli; |
Usuwa kolumnę z tabeli (wraz z danymi) |
ADD INDEX |
|
|
DROP INDEX |
|
|
RENAME AS |
ALTER TABLE nazwatabeli RENAME AS nowa_nazwa_tabeli |
zmiana nazwy tabeli |
FORMATOWANIE DATY I CZASU
Parametr |
Opis |
Przykład |
%e |
Dzień miesiąca |
1 - 31 |
%d |
Dzień miesiąca (2 cyfry) |
01 - 31 |
%D |
Dzień miesiąca + końcówka |
1st - 31st |
%W |
Nazwa dnia tygodnia |
Sunday - satruday |
%a |
Skrócona nazwa dnia |
Sun = Sat |
%c |
Miesiąc roku |
1 - 12 |
%m |
Miesiąc w roku (2 cyfry) |
01 - 12 |
%M |
Nazwa miesiąca |
January - December |
%b |
Skrócona nazwa miesiąca |
Jan - Dec |
%Y |
rok |
2004 |
%y |
Rok (skrócona forma) |
04 |
%l |
godzina |
1 - 12 |
%h |
Godzina (2 cyfry) |
01 - 12 |
%k |
Godzina (format 24-ro godzinny) |
0 -23 |
%H |
Godzina (format 24-ro godzinny), 2 cyfry |
00 -23 |
%i |
Minuty |
00 - 59 |
%S |
Sekundy |
00 - 59 |
%r |
Czas |
8:15:00 PM |
%T |
Czas - format 24 godzinny |
20:15:00 |
%p |
AM lub PM |
AM lub PM |
Np.:
SELECT DATE_FORMAT (now(), `%d %W %Y godz. %k:%I');
BAZA DANYCH
KLIENT |
|
klient_id |
klucz główny tabeli |
imie |
do 30 znaków, nie może być pusty |
nazwisko |
do 40 znaków, nie może być pusty |
FAKTURA |
|
faktura_id |
klucz główny tabeli |
klient_id |
w firmie przewiduje się, że nigdy nie przekroczona będzie liczba 50tys klientów |
data_wystawienia |
data wystawienia |
opis |
Krótki opis, do 100 znaków |
PRODUKT |
|
produkt_id |
klucz główny tabeli |
nazwa_produktu |
Do 50 znaków |
cena_brutto |
Liczba typu dziesiętnego |
POZYCJA |
|
pozycja_id |
klucz główny tabeli |
faktura_id |
Musi się odnosić do istniejącego już numeru id faktury |
produkt_id |
Musi się odnosić do istniejącego już numeru id produktu |
liczba_sztuk |
Liczba całkowita |
- Wstawianie nowych wierszy
Prosta składnia instrukcji INSERT:
INSERT INTO nazwa_tabeli VALUES (lista wartości);
Złożona składnia instrukcji INSERT (z określeniem nazw kolumn)
INSERT INTO nazwa_tabeli(lista nazw kolumn) VALUES(lista wartości);
Składnia prosta:
INSERT INTO uczen VALUES(1,'Marek', `', `Kowalski', `1998-01-24', `2002-01-09');
Składnia złożona:
INSERT INTO uczen(imie1, imie2, nazwisko, data_ur, data_zap) VALUES(`Marek', `', `Kowalski', `1998-01-24', `2002-01-09');
Ćwiczenia:
próba zduplikowania wartości uczen_id w tabeli
zmiana interpretacji wpisywanych dat (poprzez zmianę jej formatu)
Usuwanie wierszy
Składnia polecenia DELETE:
DELETE FROM nazwa_tabeli WHERE warunek;
np.:
DELETE FROM uczen WHERE imie1='Andrzej';
usunięcie na podstawie porównania daty
Uaktualnianie wierszy
Składnia polecenia UPDATE:
UPDATE nazwa_tabeli SET nazwa_kolumny=wartość WHERE warunek;
Np.:
UPDATE uczen SET imie2='Tadeusz' WHERE uczen_id=4;
Aktualizacja na podstawie innej tabeli
UPDATE nazwa_tabeli1 FROM nazwa_tabeli2 WHERE warunek;
np.:
UPDATE uczen SET imie1=tabela_2.uczen FROM tabela_2 WHERE nazwisko='Kowalski';
Perspektywy
Służy to tworzenia „atrapy” tabeli
CREATE VIEW nazwa_perspektywy AS instrukcja_select
Np.:
CREATE VIEW uczniowie_wiek AS SELECT imie1, nazwisko, data_ur FROM uczen
uczniowie_wiek widziana jest jako tabela o trzech kolumnach: imie1, nazwisko, data_ur
Stworzenie tabeli, w której będzie imię ucznia, nazwisko, rok nauki w szkole (z odjęcia składnika roku data_ur od data_zap)
Perspektywa z wielu tabel
Tabela ocen z matematyki dla uczniów zapisanych w zeszłym roku do szkoły
2. MySQL - mechanizmy tworzenia i zarządzania bazami danych 1