select * - =?ISO-8859-2?Q?kolejno=B6=E6_p=F3l?=
ps - 18-10-2007 00:03
select * - =?ISO-8859-2?Q?kolejno=B6=E6_p=F3l?=
Witam! Trywialne może, ale ... pytanko jest następujące:
zakładam sobie tabelę, create table t (int a, int b, costam...); wybieram dane z tabeli : select * from t;
I teraz - czy jest gdzieś jakiś standard opisujący kolejność zwracanych pól w wyniku? Bo zwykle dostaję oczywiście w takiej kolejności, w jakiej powstały przy zakładaniu tabeli, ale nie chcę polegać na tym jako na 'założeniu'. Reasumując - czy select * from tabela w wyniku zwróci zawsze dane (pola) w tej kolejności, w jakiej były utworzone, i jeśli tak, to gdzie jest jakiś opis 'takiego' standardu?
Aha - w tej chwili jest to MS SQL, ale pytam ogólnie. I nie interesują mnie inne rozwiązania problemu, bo takowe znam.
Z góry dziękuję za odpowiedzi :)
andrew - 18-10-2007 00:03
=?iso-8859-2?Q?Re:_select_*_-_kolejno=B6=E6_p=F3l?=
Użytkownik "ps" <pebees@gazeta.pl> napisał w wiadomości news:ff4ctu$hgr$1@inews.gazeta.pl... > Witam! > Trywialne może, ale ... pytanko jest następujące: > > zakładam sobie tabelę, create table t (int a, int b, costam...); > wybieram dane z tabeli : select * from t; > > I teraz - czy jest gdzieś jakiś standard opisujący kolejność zwracanych > pól w wyniku? Bo zwykle dostaję oczywiście w takiej kolejności, w jakiej > powstały przy zakładaniu tabeli, ale nie chcę polegać na tym jako na > 'założeniu'. > Reasumując - czy select * from tabela w wyniku zwróci zawsze dane (pola) w > tej kolejności, w jakiej były utworzone, i jeśli tak, to gdzie jest jakiś > opis 'takiego' standardu? > > Aha - w tej chwili jest to MS SQL, ale pytam ogólnie. I nie interesują > mnie inne rozwiązania problemu, bo takowe znam. > > Z góry dziękuję za odpowiedzi :)
Generalnie robienie selectów * z poziomu kodu programów jest złą praktyką, a tym bardziej odwoływanie się do zwracanych pół poprzez ich pozycję. Zawsze wypisuj pola, np: "select id, cena, opis from" to unikniesz głupich bugów.
BTW: w modelu relacyjnym kolejność pól nie ma znaczenia, dlatego nikt ci nie zagwarantuje, że "zawsze i na każdej bazie" będzie tak samo.
Andrew
Marcin - 18-10-2007 00:03
ps wrote: > Witam! > Trywialne może, ale ... pytanko jest następujące: > > zakładam sobie tabelę, create table t (int a, int b, costam...); > wybieram dane z tabeli : select * from t; > > I teraz - czy jest gdzieś jakiś standard opisujący kolejność zwracanych > pól w wyniku? Bo zwykle dostaję oczywiście w takiej kolejności, w jakiej > powstały przy zakładaniu tabeli, ale nie chcę polegać na tym jako na > 'założeniu'. > Reasumując - czy select * from tabela w wyniku zwróci zawsze dane (pola) > w tej kolejności, w jakiej były utworzone, i jeśli tak, to gdzie jest > jakiś opis 'takiego' standardu? > > Aha - w tej chwili jest to MS SQL, ale pytam ogólnie. I nie interesują > mnie inne rozwiązania problemu, bo takowe znam. > > Z góry dziękuję za odpowiedzi :)
Nie wiem, czy standard SQL-92 to opisuje http://www.contrib.andrew.cmu.edu/~s...ql/sql1992.txt
nawet gdyby, to i tak poleganie na kolejności pól w SELECT * może się źle skończyć ;)
M.
ps - 18-10-2007 00:03
andrew pisze: (..) > > Generalnie robienie selectów * z poziomu kodu programów jest złą > praktyką, a tym bardziej odwoływanie się do zwracanych pół poprzez ich > pozycję. > Zawsze wypisuj pola, np: "select id, cena, opis from" to unikniesz > głupich bugów.
To wiem. Gorzej, gdy muszę wyssać kilkadziesiąt pól... :D
> BTW: w modelu relacyjnym kolejność pól nie ma znaczenia, dlatego nikt ci > nie zagwarantuje, że "zawsze i na każdej bazie" będzie tak samo. >
Ok, przyjąłem, dzięki za odpowiedź.
ps - 18-10-2007 00:03
Marcin pisze: (..) > Nie wiem, czy standard SQL-92 to opisuje > http://www.contrib.andrew.cmu.edu/~s...ql/sql1992.txt
Nie znalazłem tam nic o tym. Może za bardzo 'na szybko' szukałem :)
> > nawet gdyby, to i tak poleganie na kolejności pól w SELECT * > może się źle skończyć ;)
Czyli nikt nie opisuje kolejności pól przy takim wywołaniu. Ok, rozumiem, dzięki za odpowiedź.
Andrzej Dąbrowski - 18-10-2007 00:03
> Użytkownik "ps" <pebees@gazeta.pl> napisał w wiadomości > news:ff4ctu$hgr$1@inews.gazeta.pl... > Reasumując - czy select * from tabela w wyniku zwróci zawsze dane (pola) w > tej kolejności, w jakiej były utworzone, i jeśli tak, to gdzie jest jakiś > opis 'takiego' standardu? > Nie powienieneś używać * bo jeśli kiedyś ktoś zmodyfikuje tabelę, doda pole to kolejność może się rozjechać. Mozna co prawda po * wołać pola po nazwie, ale najsensowniej jest jawnie użyć ich nazw w zapytaniu. Nie ma żadnej gwarancji kolejności zwróconych pól dla * - wyszstko zależy od wizji programisty, tak jak nie ma pewności do do kolejnosci zwracanych rekordów jeśli nie ma klauzuli ORDER BY. Andrzej Dąbrowski
Pietrina - 19-10-2007 00:00
=?iso-8859-2?B?UmU6IHNlbGVjdCAqIC0ga29sZWpub7bmIHDzbA==?=
On 17 Paź, 13:36, "Andrzej Dąbrowski" <andr...@sims.pl> wrote: > > Użytkownik "ps" <peb...@gazeta.pl> napisał w wiadomości > >news:ff4ctu$hgr$1@inews.gazeta.pl... > > Reasumując - czy select * from tabela w wyniku zwróci zawsze dane (pola) w > > tej kolejności, w jakiej były utworzone, i jeśli tak, to gdzie jest jakiś > > opis 'takiego' standardu? > > Nie powienieneś używać * bo jeśli kiedyś ktoś zmodyfikuje tabelę, doda pole > to kolejność może się rozjechać. Mozna co prawda po * wołaćpola po nazwie, > ale najsensowniej jest jawnie użyć ich nazw w zapytaniu. Nie ma żadnej > gwarancji kolejności zwróconych pól dla * - wyszstko zależy od wizji > programisty, tak jak nie ma pewności do do kolejnosci zwracanych rekordów > jeśli nie ma klauzuli ORDER BY. > Andrzej Dąbrowski
Jest jednak wytłumaczone w kilku przypadkach używanie: select * from t Pierwszym przypadkiem może być stworzenie narzędzia umożliwiającego przeglądanie bazy danych. Tutaj pewnie dobrze by się sprawdziło, jeśli dane byłyby pokazywane w takiej samej kolejności.
Po drugie, można utworzyć beana z tabelą, który jako parametry przyjmuje, zapytanie sql, oraz nazwy tabel które ma wybrać do wyświetlenia.
Z takimi przynajmniej przypadkami zetknąłem się.
Pozdrawiam, Pietrina
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
[MS SQL 2005] =?windows-1250?Q?Ilo=9C=E6_wiersz=F3w_w_zbiorze_wynikowym?=
=?ISO-8859-2?Q?=AFegnam_si=EA=2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|