Które polecenie w MySQL wybiera bazę danych szkola jako bieżącą, tak aby kolejne zapytania odnosiły się do jej tabel?
ALTER DATABASE szkola;
ALTER DATABASE zmienia cechy bazy, np. kodowanie znaków, ale jej nie wybiera.USE szkola;
USE ustawia bazę jako bieżącą dla połączenia, więc kolejne zapytania dotyczą jej tabel.SET DATABASE szkola;
SET ustawia zmienne, np. SET NAMES. Polecenia SET DATABASE w MySQL nie ma.OPEN DATABASE szkola;
OPEN DATABASE, więc zakończy się błędem składni.Polecenie USE szkola; ustawia bazę szkola jako domyślną dla bieżącego połączenia. Od tej chwili zapytanie SELECT * FROM uczniowie; dotyczy tabeli uczniowie w bazie szkola i nie trzeba pisać pełnej nazwy szkola.uczniowie.
Zwykła kolejność pracy w konsoli MySQL: CREATE DATABASE szkola;, potem USE szkola;, potem CREATE TABLE i dalsze polecenia. Która baza jest wybrana, pokazuje SELECT DATABASE();. W phpMyAdmin wybór bazy w lewym panelu robi to samo, a w PHP odpowiednikiem jest czwarty parametr mysqli_connect albo funkcja mysqli_select_db.
Polecenie działa tylko w obrębie jednego połączenia: po ponownym zalogowaniu do konsoli bazę trzeba wybrać jeszcze raz. Na egzaminie praktycznym import pliku SQL w phpMyAdmin również wymaga wcześniejszego zaznaczenia właściwej bazy.
Błędne zapisy wyglądają wiarygodnie, bo słowa open czy set kojarzą się z otwieraniem i ustawianiem. MySQL nie ma jednak polecenia OPEN DATABASE ani SET DATABASE. Oba skończą się błędem składni.
SET istnieje, ale służy do ustawiania zmiennych, np. SET NAMES utf8mb4; albo SET @licznik = 0;, a nie do wyboru bazy.
ALTER DATABASE jest poprawnym poleceniem, ale zmienia cechy bazy, przede wszystkim domyślne kodowanie i porównywanie znaków, np. ALTER DATABASE szkola CHARACTER SET utf8mb4;. Nie ustawia jej jako bieżącej, więc po nim zapytanie bez nazwy bazy nadal zgłosi błąd braku wybranej bazy.
Jeśli bazy nie wybrano, możesz też podawać jej nazwę przed nazwą tabeli: SELECT * FROM szkola.uczniowie;. To działa niezależnie od bieżącej bazy i przydaje się, gdy zapytanie łączy tabele z dwóch różnych baz. Na co dzień wygodniej jednak raz wywołać USE.