Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANSII SQL 92

0 views
Skip to first unread message

AJA

unread,
Jan 20, 2004, 3:44:31 AM1/20/04
to
Szukam jakiegos opisu co i jak w SQL'u robic.
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
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


hubert depesz lubaczewski

unread,
Jan 20, 2004, 4:55:36 AM1/20/04
to
AJA wyrzeźbił(a):

> 1- sprawdzic czy tablica o takiej nazwie juz istnieje

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

Grzegorz Szyszlo

unread,
Jan 20, 2004, 5:18:47 AM1/20/04
to
hubert depesz lubaczewski wrote:

> google wylaczyli? o rany.

jak juz o googlach mowa, ciekaw jestem jaki tam silnik bazy zasuwa.

znik.

hubert depesz lubaczewski

unread,
Jan 20, 2004, 5:15:15 AM1/20/04
to
hubert depesz lubaczewski wyrzeźbił(a):

> dokumentacja ansi sql 92 (czemu ansii ????) jest ciezko platna.

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

Raphael Posmyk

unread,
Jan 21, 2004, 2:56:30 AM1/21/04
to
On 20.01.2004 09:44, AJA schrieb:

> 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

AJA

unread,
Jan 22, 2004, 2:50:45 AM1/22/04
to
Na poczatku dziekuje wszystkim za odpowiedzi.

> > 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


Grzegorz Szyszlo

unread,
Jan 22, 2004, 4:05:50 AM1/22/04
to
AJA wrote:

>>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.

AJA

unread,
Jan 22, 2004, 6:50:44 AM1/22/04
to

> 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 :)
Nie ze sie czepilem.
Moze naswietle sprawe. Pisze program w VC++. Program ten ma byc malym combo.
Pierwsze co to loguje sie do dowolnej bazy poprzez odbc. Oczywiscie o ile
jest odbc dostepne. Po drugie odczytuje pewne informacje z tablic
konfigoracyjnych (wlasne tablice) i na podstawie pewnych wprowadzonych
danych w siatce, zaklada nowa tablice, edytuje ja, kasuje, zaklada indeksy.
Jezeli zaczne uzywac statementow dla jednej tylko bazy to program
przestanie dzialac na innych bazach. A ja chce by dzialal na jak najwiekszej
ilosci baz danych. Mysle ze wszedzie jest tak samo create table, drop table,
alter table, ale nie wszedzie kolumny mozna doczepic opis kolumny ( i tu
moze sie juz statement wylozyc a tego bym nie chcial)
Wiec tak naprawde nie ma znaczenia czy SQL92 czy SQL99 mi tak naprawde
zalezy na pewnych statementach ktore an kazdej bazie przejda. a jezeli nie
na kazdej to chociaz na ORACLE, POSTGRE, PROGRESS, MySQL no i oczywiscie 90
procent to bedzie M$ SQL. Wiec musze tak kombinowac by nie wylozyl sie
program.
Gdyby to bylo na M$ SQL to pewnie bym sobie standardami nie zawracal glowy i
polecial po tym co M$ SQL daje. A daje wg mnie sporo.
I prosze nie myslec ze mam klapki na oczach i tylko M$ widze :)) Klient ma
zazwyczaj takie systemy wiec na to robi sie.
Prosze o ewentualne uwagi jak z tymi roznymi systemami sobie radzic.


Pozdrawiam
AJA

0 new messages