Discussion:
ANSII SQL 92
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
AJA
2004-01-20 08:44:31 UTC
Permalink
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
2004-01-20 09:55:36 UTC
Permalink
Post by AJA
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.
Post by AJA
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.
Post by AJA
- 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 ...
Post by AJA
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
2004-01-20 10:18:47 UTC
Permalink
Post by hubert depesz lubaczewski
google wylaczyli? o rany.
jak juz o googlach mowa, ciekaw jestem jaki tam silnik bazy zasuwa.

znik.
hubert depesz lubaczewski
2004-01-20 10:15:15 UTC
Permalink
Post by hubert depesz lubaczewski
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
--
*-----------------------------------------------------------------*
czaderskie dywaniki do łazienki lub przed łóżko:
http://www.allegro.pl/show_user_auctions.php?uid=118670
AJA
2004-01-22 07:50:45 UTC
Permalink
Na poczatku dziekuje wszystkim za odpowiedzi.
Post by hubert depesz lubaczewski
Post by AJA
1- sprawdzic czy tablica o takiej nazwie juz istnieje
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.
Post by hubert depesz lubaczewski
Post by AJA
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.
Post by hubert depesz lubaczewski
Post by AJA
- 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.
Post by hubert depesz lubaczewski
poza tym co rozumiesz przez "id" kolumny? identyfikator? to jest tozsame
id kolumny to oczywiscie nazwa kolumny
Post by hubert depesz lubaczewski
z nazwa.
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
Post by hubert depesz lubaczewski
czy indeksowe - afaik nie ma takiego modyfikatora. po rpostu trzeba
create index ...
No i tego nie wiedzialem.
Post by hubert depesz lubaczewski
Post by AJA
A jezeli jeszcze mozna to jakis link do dokumentacji ANSII SQL 92
google wylaczyli? o rany.
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
2004-01-22 09:05:50 UTC
Permalink
Post by AJA
Post by hubert depesz lubaczewski
czy indeksowe - afaik nie ma takiego modyfikatora. po rpostu trzeba
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
2004-01-22 11:50:44 UTC
Permalink
Post by Grzegorz Szyszlo
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
Post by Grzegorz Szyszlo
bazy ktore maja po czesci implementacje SQL99 (zadna nie ma
100%), to SQL92 tez nie implementuja w calosci.
znik.
Raphael Posmyk
2004-01-21 07:56:30 UTC
Permalink
Post by AJA
Konkretnie chodzi oto ze chce programem podlaczyc sie do bazy
1- sprawdzic czy tablica o takiej nazwie juz istnieje
ODBC posiada API do czytania modelu danych.
Post by AJA
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.
Post by AJA
- 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.
Post by AJA
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
Loading...