jezyki zapytan dla relacyjnych baz danych Flashcards

1
Q

Polecenia SQL dotyczą:

A

 tworzenia i usuwania baz danych, tabel, kluczy
 wprowadzania, uaktualniania i usuwania danych
 wyszukiwania danych
 ustawiania praw dostępu do danych
 administracji bazą danych
 zarządzania transakcjami

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Sposób wprowadzania do bazy poleceń SQL:

A

 w programie działającym z linii poleceń
(np. mySQL monitor)
 w programie z graficznym interfejsem użytkownika
(np. mySQL Navigator)
 w skryptach i programach komunikujących się z bazą
danych (np. skrypty PHP)
 pośrednio, przy użyciu graficznego interfejsu
użytkownika (np. Access

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

utworzenie bazy:

A

CREATE DATABASE nazwa;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

przełączenie się do bazy:

A

USE nazwa;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Typy danych mySQL – liczby całkowite:

A

 TINYINT (1 bajt)
 SMALLINT (2 bajty)
 MEDIUMINT (3 bajty)
 INT (4 bajty)
 BIGINT (8 bajtów)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Dodatkowe atrybuty:

A

 UNSIGNED – liczba bez znaku
 ZEROFILL – dopełnienie zerami
 (M) – wyświetlenie M cyfr

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Typy danych mySQL – liczby zmiennoprzecinkowe:

A

 FLOAT (n) – pojedyncza precyzja, n liczb
 DOUBLE (M,D) – podwójna precyzja
 DECIMAL (M,D) – liczba zapisywana jako tekst

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

 Dodatkowe atrybuty:

A

 UNSIGNED – liczba bez znaku
 ZEROFILL – dopełnienie zerami
 (M) – wyświetlenie M cyfr
 (M,D) – wyświetlenie M cyfr, D cyfr po przecinku

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

 Typy danych mySQL – data i czas:

A

 DATETIME – data + czas (2003-10-15 15:00:12)
 DATE – data (2003-10-15)
 TIME – czas (15:00:12)
 YEAR – rok (2003 lub 03)
 TIMESTAMP (n) – znacznik czasu (n – liczba znaków)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Typy danych mySQL – łańcuchy tekstowe:

A

 CHAR (n) – stała długość n (max. 255)
 VARCHAR (n) – zmienna długość, max. n (do 255)
 TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
– dane tekstowe ASCII
 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
– dane binarne
 ENUM – typ wyliczeniowy
 SET – zbiór wartości

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Utworzenie tabeli wymaga podania nazw pól
(kolumn) oraz ich typów.

A

CREATE TABLE albumy (
id INT NOT NULL,
wykonawca VARCHAR(30),
tytuł VARCHAR(30),
rok YEAR,
liczba-utw SMALLINT,
opis TEXT
);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wstawianie danych z podaniem wszystkich kolumn
tabeli (należy zachować kolejność!)

A

INSERT INTO albumy
VALUES (1, ‘Pink Floyd’, ‘The Division Bell’,
1994, 11, ‘Ostatni studyjny album’);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wyszukiwanie danych w tabeli – instrukcja SELECT

A

SELECT które_kolumny FROM z_której_tabeli
WHERE które_rekordy;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Eliminacja powtórzeń wyników:

A

SELECT DISTINCT wykonawca FROM albumy;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wyszukiwanie rekordów spełniających zadany
warunek
– instrukcja WHERE

A

SELECT tytuł FROM albumy
WHERE wykonawca = ‘Pink Floyd’;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Operatory używane w instrukcji SELECT …
WHERE:

A

 porównania: = <> < > <= >= <=>
 logiczne: NOT ! AND && OR || XOR
 IS NULL, IS NOT NULL
 expr BETWEEN min AND max (NOT BETWEEN)
 expr IN (lista) (NOT IN)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Symbole wieloznaczne używane w instrukcji WHERE:

A

 % zastępuje dowolny ciąg znaków
 _ zastępuje jeden znak

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Operator symboli wieloznacznych:

A

LIKE, NOT LIKE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Sortowanie wyników wg zadanej kolumny:

A

 ORDER BY pole – w porządku rosnącym
 ORDER BY pole ASC – jw.
 ORDER BY pole DESC – w porządku malejącym

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Grupowanie wyników

A

 użycie funkcji, np. COUNT, SUM, MAX, MIN, AVG
 nazwanie kolumny z wynikami (opcjonalnie) – AS
 zgrupowanie wyników – GROUP BY

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Ograniczenie rekordów uzyskanych w wyniku
grupowania

A

operator HAVING

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Ograniczenie liczby wyników

A

LIMIT

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Uwzględnienie relacji między tabelami:

A

SELECT * FROM albumy, utwory
WHERE albumy.IDA = utwory.IDA;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Wstawianie do tabeli danych uzyskanych w wyniku
zapytania:

A

INSERT INTO nowa (autor, dzielo)
SELECT DISTINCT wykonawca, album
FROM albumy;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Wstawianie danych z pliku na komputerze klienta (pola rozdzielone tabulatorami, rekordy – znakiem nowej linii) – komenda mySQL (nie standard):
LOAD DATA LOCAL INFILE ‘dane.txt’ INTO nowa_tabela;
26
Usunięcie rekordów spełniających zadane kryteria
– instrukcja DELETE. Warunki takie same jak w SELECT.
27
Zmiana danych rekordów już istniejących w tabeli
UPDATE albumy SET wykonawca = 'Pink Floyd' WHERE wykonawca = 'Fink Ployd';
28
Usuwanie całej bazy:
DROP DATABASE baza;
29
Wyświetlenie istniejących baz danych:
SHOW DATABASES;
30
Przełączenie się na inną bazę danych:
USE baza;
31
Wyświetlenie struktury tabeli:
DESCRIBE tabela;
32
Zmiana nazwy:
RENAME TABLE tabela TO nowa_tabela;
33
Zmiana struktury tabeli – ALTER TABLE
ALTER TABLE tabela ADD (opis TEXT); ALTER TABLE tabela DROP opis;
34
Modyfikacja typu kolumny
ALTER TABLE tabela MODIFY opis VARCHAR(50);
35
Zmiana nazwy kolumny:
ALTER TABLE tabela CHANGE opis info VARCHAR(50);
36
Atrybuty pól tabeli  Przy tworzeniu lub zmianie tabeli można podać opcjonalne atrybuty pól (kolumn) tabeli:  CREATE TABLE (pole typ atrybuty, ...);  Dostępne atrybuty:
 NULL – można nie podawać wartości (domyślnie)  NOT NULL – wartość musi być podana  DEFAULT wartość – gdy nie podamy wartości  AUTO_INCREMENT – automatycznie zwiększany licznik  COMMENT 'opis' – komentarz  PRIMARY KEY, KEY – indeksy główne
37
AUTO_INCREMENT
nie wpisujemy danych, baza wpisuje aktualny stan licznika i zwiększa go o 1.
38
DEFAULT
jeżeli nie wprowadzimy danych, zostanie wpisana wartość domyślna
39
TIMESTAMP
 Wartością domyślną dla kolumny o typie TIMESTAMP jest aktualny znacznik czasu (data i czas).  Kolumna tego typu umożliwia zachowanie czasu wprowadzenia lub ostatniej modyfikacji rekordu.  Jeżeli zostanie podana wartość – jest ona wpisywana.  Jeżeli nie zostanie podana wartość (NULL) – wpisywany jest znacznik czasu.
40
Sprawdzanie poprawności danych
 NOT NULL – w tej kolumnie muszą być wpisane dane  CHECK (wyrażenie) – dane muszą spełniać podany warunek
41
Na wybrane kolumny tabeli mogą być nakładane indeksy (klucze) w celu:
 przyspieszenia wyszukiwania  zdefiniowania relacji pomiędzy tabelami
42
Typy indeksów w MySQL:
 KEY, INDEX  UNIQUE  PRIMARY KEY  FULLTEXT
43
UNIQUE
żadne dwa rekordy w tabeli nie mogą mieć jednakowych danych w indeksowanej kolumnie. Jest to jednocześnie INDEX.
44
Indeks główny – PRIMARY KEY
 identyfikuje jednoznacznie każdy rekord w tabeli  może istnieć tylko jeden w tabeli  jest typu UNIQUE  indeksowana kolumna otrzymuje automatycznie atrybut NOT NULL  ma nazwę PRIMARY (nie można podać własnej)  bierze domyślnie udział w relacjach z innymi tabelami
45
Tworzenie indeksu głównego podczas definiowania tabeli
CREATE TABLE dane { nazwisko VARCHAR(30) NOT NULL, pesel CHAR(11) PRIMARY KEY, };
46
MySQL posiada specjalny typ klucza FULLTEXT, umożliwiający wyszukiwanie informacji w polach tekstowych. Indeks ten nie wchodzi w skład standardu SQL.
CREATE TABLE albumy { tytul VARCHAR(30) PRIMARY KEY, wykonawca VARCHAR(30), recenzja TEXT, FULLTEXT indeks (tytul, recenzja) };
47
Wyszukiwanie dosłowne:
MATCH (kolumny) AGAINST (napis)
48
Wyszukiwanie w trybie logicznym
– operator IN BOOLEAN MODE
49
 Operatory wyszukiwania:
 +słowo – słowo musi wystąpić  –słowo – słowo nie może wystąpić  "całe zdanie" – musi wystąpić podana fraza  słow* – słowo zaczynające się od podanych liter  () – grupowanie operatorów  ~ – zaprzeczenie
50
Przykład wyszukiwania w trybie logicznym:
SELECT * FROM albumy WHERE MATCH (tytul, recenzja) AGAINST ('+rock +"debut album" -awful' IN BOOLEAN MODE);
51
 Język SQL udostępnia szereg funkcji umożliwiających wykonywanie operacji na danych w zapytaniach.  Funkcje:
 matematyczne  tekstowe  daty i czasu
52
Użycie w warunku wyboru kolumn – zamienia litery na wielkie w zwracanych danych:
SELECT UPPER(wykonawca) FROM albumy;
53
Tryb transakcji –
wprowadzane operacje zostaną wykonane dopiero po podaniu odpowiedniej komendy.
54
 START TRANSACTION
rozpoczęcie transakcji  Kolejne operacje są zapamiętywane, ale nie są wykonywane.
55
COMMIT
wykonanie operacji z całej transakcji
56
ROLLBACK
cofnięcie do początku transakcji
57
Możliwe jest ustawienie w trakcie transakcji punktów zapisu za pomocą komendy
SAVEPOINT nazwa ROLLBACK TO SAVEPOINT nazwa
58
Blokowanie:
LOCK TABLES tabela1 typ, tabela2 typ, ... ; Typ blokady:  READ – blokada do odczytu  WRITE – blokada do zapisu Odblokowanie tabel:  UNLOCK TABLES;
59
 MySQL obsługuje różne standardy zapisywania tabel.  Typy nie udostępniające mechanizmu transakcji:
 MyISAM (domyślny), ISAM (stary), HEAP, MERGE
60
 Typy udostępniające mechanizm transakcji i blokowania:
 InnoDB, BDB
61
Aby utworzyć tabelę innego typu, należy podać żądany typ na końcu instrukcji:
CREATE TABLE nazwa (definicja) TYPE=InnoDB;
62
Zmiana typu tabeli (w praktyce utworzenie nowej tabeli, przepisanie danych i usunięcie starej tabeli):
ALTER TABLE nazwa TYPE=InnoDB;
63
System zarządzania bazą danych obsługuje tzw. system przywilejów (privilege system):
 autoryzacja użytkownika łączącego się z bazą z określonego komputera (login, hasło),  określenie praw do wykonywania poszczególnych operacji na bazie danych (przywileje)
64
Przywileje są ustalane na podstawie:
 nazwy użytkownika  nazwy sieciowej komputera klienta  operacji, którą chce wykonać użytkownik
65
Sprawdzanie przywilejów odbywa się na dwóch poziomach
Poziom 1 – połączenie z bazą Poziom 2 – wykonanie operacji
66
Nadanie praw wykonywania określonych operacji na danych w bazie:
 GRANT przywilej (kolumny_tabeli)  ON baza_danych.tabela  TO użytkownik@host IDENTIFIED BY 'hasło';
67
 Odbieranie praw dostępu:
 REVOKE przywilej (kolumny_tabeli)  ON baza_danych.tabela  FROM użytkownik@host;
68
 Przywileje dostępu do danych (ON) mogą dotyczyć:
 wszystkich baz danych na serwerze (poziom globalny): GRANT ... ON *.*  wszystkich tabel w określonej bazie: GRANT ... ON baza_danych.*  określonej tabeli: GRANT ... ON baza_danych.tabela  pojedynczych kolumn w określonej tabeli
69
Przywileje dla użytkowników
użytkownik user z dowolnego komputera: user@'%'  użytkownik user z komputera w domenie: user@'%.eti.pg.gda.pl'  użytkownik z określonego komputera: user@sound.eti.pg.gda.pl user@localhost user@153.19.49.25
70
Ustalenie hasła przy nadawaniu praw:
GRANT ALL ON *.* TO user IDENTIFIED BY 'hasło';
71
Nadanie wybranych praw do tabeli dane użytkownikowi joe łączącemu się z podanej domeny
GRANT SELECT,INSERT,UPDATE ON forum.dane TO joe@'%.eti.pg.gda.pl' IDENTIFIED BY 'alamakota';
72
Po połączeniu się z bazą systemową należy ustawić hasło:
mysql -u root mysql; SET PASSWORD FOR root = PASSWORD('tajnehaslo');
73
Dodanie użytkownika z jednoczesnym nadaniem praw dostępu do danych:
GRANT ALL ON baza.* TO user IDENTIFIED BY 'haslo1';