1- sprawdzic czy tablica o takiej nazwie juz istnieje
2- dolozyc kolumne do istniejacej tablicy w dowolne miejsce
3- utworzyc tablice z parametrami:
- nazwa tablicy
- opis tablicy
- id kolumny
- opis kolumny
- typ danych
- dlugosc pola
- precyzja
- czy pole obowiazkowe
- czy pole indeksowe
Przydalby mi sie jakis statement w standardzie ANSII SQL-92 by to wykonal
A jezeli jeszcze mozna to jakis link do dokumentacji ANSII SQL 92
Pozdrawiam
AJA
GG: 1314412
ansi 92 nie przewiduje czegos takiego.
information schema ject dopiero w ansi 99, a to niewiele baz ma
zaimplementowane. z tego co wiem jest w oraclu (ale chyba sie inaczej
nazywa) i w postgresie 7.4.
oczywiscie zawsze mozna zrobic:
select * from tablica;
ale to nie jest sensowny test.
> 2- dolozyc kolumne do istniejacej tablicy w dowolne miejsce
ansi 92 nie przewiduje czegos takiego.
afair ansi w ogole nie obejmuje czegos takiego jak kolejnosc kolumn, ale
tu moge sie mylic.
> 3- utworzyc tablice z parametrami:
> - nazwa tablicy
> - opis tablicy
> - id kolumny
> - opis kolumny
> - typ danych
> - dlugosc pola
> - precyzja
> - czy pole obowiazkowe
> - czy pole indeksowe
> Przydalby mi sie jakis statement w standardzie ANSII SQL-92 by to wykonal
nie wydaje mi sie by cos takiego bylo.
precyzja jest pojeciem bez sensu ogolnie - ma sens tylko szczegolnie -
przy polach typu numeric. jaka "precyzja" jest przy polu varchar?
poza tym co rozumiesz przez "id" kolumny? identyfikator? to jest tozsame
z nazwa.
reszta to normalnie:
create table <nazwa> (nazwa_kolumny typ_danych);
jesli typ danych to jakas mutacja numerica to dochodzi dlugosc i
precyzja.
jak tekstowy to dochodzi dlugosc.
czy pole obowiazkowe: modyfikator "NOT NULL".
czy indeksowe - afaik nie ma takiego modyfikatora. po rpostu trzeba
zalozyc indeks:
create index ...
> A jezeli jeszcze mozna to jakis link do dokumentacji ANSII SQL 92
google wylaczyli? o rany.
powazniej:
dokumentacja ansi sql 92 (czemu ansii ????) jest ciezko platna.
niedostepna "za free".
mozna za to posciagac drafty ktore sie duzo, malo lub wcale (w
zaleznosci od tego ktory to draft) roznia od wersji finalnej.
drafty oczywiscie wyszuka ci google - jak tylko go wlacza.
depesz
p.s. o "standardach" w bazach danych zapomnij. kazda baza ma swoja
wlasna wizje rzeczywistosci. kazda ma wlasne rozszerzenia. chyba zadna
nie implementuje calosci standardow.
kodowanie zgodne w 100% ze standardami ma:
1. olbrzymie szanse niedzialania nigdzie
2. jak juz okroisz standardy by dalo sie to uruchomic na jakiejs
konkretnej bazie to sie okazuje, ze jest to niesamowicie nieefektywne bo
ta konkretna baza ma inne rozwiazania ktore robia to co potrzebujesz o
niebo sensowniej/szybciej.
--
*-----------------------------------------------------------------*
czaderskie dywaniki do łazienki lub przed łóżko:
http://www.allegro.pl/show_user_auctions.php?uid=118670
> google wylaczyli? o rany.
jak juz o googlach mowa, ciekaw jestem jaki tam silnik bazy zasuwa.
znik.
sprawdzilem. wcale nie tak ciezko. w/g:
http://global.ihs.com/
wersje sciagalna mozna kupic za 18 dolarow
wersja drukowana - 231
plus do tego 18 (lub 142) dolary za wydany w 98 dodatek - czesc 10 o
"OBJECT LANGUAGE BINDINGS".
depesz
> Konkretnie chodzi oto ze chce programem podlaczyc sie do bazy
> danych(dowolnej) poprzez ODBC i wykonac pare polecen:
>
> 1- sprawdzic czy tablica o takiej nazwie juz istnieje
ODBC posiada API do czytania modelu danych.
> 2- dolozyc kolumne do istniejacej tablicy w dowolne miejsce
IIRC, ANSI przewidzialo do tego statement "alter table ...".
Z dodaniem w dowolne miejsce bedzie trudniej do niemozliwe.
> 3- utworzyc tablice z parametrami:
> - nazwa tablicy
> - opis tablicy
> - id kolumny
> - opis kolumny
> - typ danych
> - dlugosc pola
> - precyzja
> - czy pole obowiazkowe
> - czy pole indeksowe
Chcesz utwoszyc tablice (create table ...), czy interesuje
Cie zbior wynikowy z w/w informacjami. Jesli tak, to patrz
punkt 1.
> Przydalby mi sie jakis statement w standardzie ANSII SQL-92 by to wykonal
Informacje jakich szukasz zawarte sa najczesciej w tzw. tabelach
systemowych, a ich struktury sa inne dla kazdego silnika.
Przy pomocy SQL mozna owe dane odpytac, skladnie bedzie jednak
inna dla kazdego silnika.
Ciao, Smyk
--
carpe diem, quam minimum credula postero
> > 1- sprawdzic czy tablica o takiej nazwie juz istnieje
>
> .... oczywiscie zawsze mozna zrobic:
> select * from tablica;
> ale to nie jest sensowny test.
ale w tym przypadku chyba jednak daje efekty. Przechwytuje blad w
przypadku braku tablicy i wiem ze moge zalozyc tablice o takiej nazwie.
> > 2- dolozyc kolumne do istniejacej tablicy w dowolne miejsce
>
> ansi 92 nie przewiduje czegos takiego.
> afair ansi w ogole nie obejmuje czegos takiego jak kolejnosc kolumn, ale
> tu moge sie mylic.
Czyli pozostanie zalozenie tablicy zapasowej skpiowanie danych usuniecie
starej tablicy zalozenie nowej i skopiowanie powrotne .. no jakos trzeba
sobie radzic.
> > 3- utworzyc tablice z parametrami:
> > - nazwa tablicy
> > - opis tablicy
> > - id kolumny
> > - opis kolumny
> > - typ danych
> > - dlugosc pola
> > - precyzja
> > - czy pole obowiazkowe
> > - czy pole indeksowe
> > Przydalby mi sie jakis statement w standardzie ANSII SQL-92 by to
wykonal
>
> nie wydaje mi sie by cos takiego bylo.
> precyzja jest pojeciem bez sensu ogolnie - ma sens tylko szczegolnie -
> przy polach typu numeric. jaka "precyzja" jest przy polu varchar?
Przy polach varchar jest rozmiar. A co do dlugosci iprecyzji to program
sprawdza czy pole bedzie decimalem czy tez charem, varcharem cyz intem.
Wiec tu nie ma problemu ze cos bedzie zle. Program ma za zadanie pilnowania
poprawnosci i program przygotowuje statement poprawny w celu wygenerowania
tablicy.
> poza tym co rozumiesz przez "id" kolumny? identyfikator? to jest tozsame
id kolumny to oczywiscie nazwa kolumny
> z nazwa.
> reszta to normalnie:
> create table <nazwa> (nazwa_kolumny typ_danych);
> jesli typ danych to jakas mutacja numerica to dochodzi dlugosc i
> precyzja.
> jak tekstowy to dochodzi dlugosc.
> czy pole obowiazkowe: modyfikator "NOT NULL".
Ano tak
> czy indeksowe - afaik nie ma takiego modyfikatora. po rpostu trzeba
> zalozyc indeks:
> create index ...
No i tego nie wiedzialem.
>
> > A jezeli jeszcze mozna to jakis link do dokumentacji ANSII SQL 92
>
> google wylaczyli? o rany.
> powazniej:
Udalo mi sie na dc++ sciagnac cos co pokazuje sql na M$ SQL, Postgre,
ORACLE (nie pamietam jaka wersja .. nie mam otwartej dokumentacji) i MySQL
Pozdrawiam
AJA
>>czy indeksowe - afaik nie ma takiego modyfikatora. po rpostu trzeba
>>zalozyc indeks:
>>create index ...
>
> No i tego nie wiedzialem.
SQL 92 definiuje jedynie klucz glowny. poza tym nie okresla
zadnych indeksow.
btw. nie wiem czemu uczepiles sie tego SQL92, skoro rownie
dobrze mozesz sie uczepic SQL99 :) tak nawiasem, nawet
bazy ktore maja po czesci implementacje SQL99 (zadna nie ma
100%), to SQL92 tez nie implementuja w calosci.
znik.
Pozdrawiam
AJA