Zamiast "dziwny" powinienem był użyć czegoś silniejszego, ale z drugiej strony próbuję tu udawać osobnika kultular... kurtul... klurtuln... A, nieważne.
Od jakiegoś czasu używam - zamiast ulubionego dotychczas MSSQL - otwartoźródłowego MySQL-a.
MySQL ma wiele zalet. Jest darmowy, kompatybilny ze wszystkimi możliwymi i paroma niemożliwymi systemami operacyjnymi, a jedynym ograniczeniem na rozmiar bazy danych jest pojemność systemu plików, na którym siedzi. Tak, to prawda! MySQL nie ma oficjalnych limitów na rozmiar bazy danych, liczbę rekordów w tabeli itd itd. Jakieś tam limity są (na przykład rozmiar pojedynczego pliku bazy danych nie może przekraczać 64 petabajtów), ale zasadniczo dopóki jest miejsce na dysku, dopóty możemy dodawać kolejne rekordy do tabelki 😉
Od czasu do czasu jednak mam ochotę przelecieć się przez drzewo genealogiczne twórców MySQL-a z wiązką wyrażeń, które wywołałyby rumieńce wstydu u najstarszych marynarzy. I to zarówno po mieczu jak i po kądzieli.
Najbardziej dokucza mi fakt, że operator SELECT nie pozwala umieścić gwiazdki ("*") na liście kolumn jeżeli owa gwiazdka nie znajduje się na początku tejże listy.
Upraszczając:
SELECT *, 'coś', 'innego' FROM tabelka;
działa bezbłędnie, natomiast:
SELECT 'najpierw', 'to', 'a potem', * FROM tabelka;
wyrzuca komunikat błędu składni.
Uważam, że za powyższe ograniczenie twórcom MySQL-a należy się medal z kartofla.
Ewentualnie z ziemniaka.
SELECT t.najpierwTo, t.* FROM someTable AS t
No wiem, wiem, ale moim zdaniem jednak bez sensu. Sama gwiazdka (bez aliasu) nie ma żadnej dwuznaczności i wszystkie inne silniki potrafią z tego wykombinować kolejność kolumn automatycznie (nawet jeżeli select idzie z więcej niż jednej tabeli), a MySQL – nie potrafi. Medal z kartofla i już.
jakos tego nie odczulem przez tyle lat, innym kwiatkiem jest ze do wersji 5.7 sam select * from table nie zwracal zawsze takich samych wynikow 🙂
chodzi o sortowanie czy o dane?
Obstawiam sortowanie, bo jakby dawał inne wyniki (zakładając, że po drodze nie było żadnego DML-a), to już by ich dawno nie było na rynku…
AFAIK jest to ok. Podobnie jak w MS SQL – przynajmniej do 2012 nie gwarantowali zwracania zawsze wierszy w tym samym porządku [jeśli nie wskazałeś explicite ORDER BY]
Tutaj: https://www.w3schools.com/sql/sql_select.asp w ‘Example’, czyli tutaj:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_columns działa.
Z ‘AS’ też działa, ale dziwnie inaczej… Nie wiem, czym to coś jest, ale jednak zrobiło.
No działa. Przypuszczam, że “pod spodem” jest jakiś solidny silnik a nie MySQL.