Newsgroup: it.comp.software.database
Titolo: [Sql Plus]

Come faccio in sql plus di oracle dopo aver creato una tabella a
visualizzare tutte le informazioni su di essa? Mi spiego meglio.
Ad esempio, dopo aver creato due tabelle legate da una vincolo di chiave,
dopo posso vedere che questo vincolo di chiave è stato creato? Tra quali
campi delle tue tabelle è stato creato? In mysql ad esempio basta un "show
create table nome-tabella" e ti dice tutto. Non c'è un equivalente in sql
plus? L'unica cosa che sono riuscito a trovare è un "select * from
user_constraints" ma questo mi dice al massimo che è presente una chiave
esterna (non dicendomi qual è il campo da cui parte il vincolo).
Sono passato da mysql ad oracle e non riesco proprio a muovermi. Se qualcuno
avesse qualche link in cui si parli di sql plus(oracle) (con riferimenti a
liste di comandi utili) e non di sql in generale, sarei molto grato se me lo
comunicasse.
Grazie a tutti di cuore.

 comunicasse.
http://tahiti.oracle.com
c'è tutto quello che cerchi... basta cercarlo
/G

 /G
Grazie.

> No, se faccio desc nome-tabella mi da solo i nomi dei campi. Che vuol dire
no ti da anche i tipi e i constraint di dominio not null...
comunque intendevo fare una desc su user_constraints trovi campi che
ti danno tutte le informazioni che vuoi... sono autoesplicativi.
/G

 ha scritto:
[cut]
questo forse ?
devi dare in input il nome tabella, e volendo lo
username, scommentando lo srcipt:
SET ECHO OFF
rem ******************************************************************
rem DBA REPORTS
rem ******************************************************************
prompt Report of a table
accept table_name prompt "Enter the name of the Table :"
-- accept table_owner prompt "Enter the owner of the Table :"
set heading on
set verify off
set timing off
set time off
set newpage 0
set linesize 140
ttitle 'Table Description - Space Definition'
spool &&table_name.desc
--start time1
set heading on
set verify off
set linesize 140
set feedback off
set pagesize 1400
column ts format a30
column ta format a30
column clu format a30
column pcf format 99999999999990
column pcu format 99999999999990
column int format 99,999,999,990
column mat format 99,999,999,990
column inx format 99,999,999,990
column nxt format 99,999,999,990
column mix format 99,999,999,990
column max format 99,999,999,990
column pci format 99999999999990
column num format 99,999,999,990
column blo format 99,999,999,990
column emp format 99,999,999,990
column avg format 99,999,999,990
column cha format 99,999,999,990
column rln format 99,999,999,990
column spz format 99,999,999,990
column hdg format a30 newline
set heading off
select 'Table Name' hdg, TABLE_NAME ta,
 	'Tablespace Name' hdg, TABLESPACE_NAME ts,
	'Cluster Name' hdg, CLUSTER_NAME clu,
	'% Free' hdg, PCT_FREE pcf,
	'% Used' hdg, PCT_USED pcu,
	'Ini Trans' hdg, INI_TRANS int,
	'Max Trans' hdg, MAX_TRANS mat,
	'Initial Extent (K)' hdg, INITIAL_EXTENT/1024 inx,
	'Next Extent (K)' hdg, NEXT_EXTENT/1024 nxt,
	'Min Extents' hdg, MIN_EXTENTS mix,
	'Max Extents' hdg, MAX_EXTENTS max,
	'% Increase' hdg, PCT_INCREASE pci,
	'Number of Rows' hdg, NUM_ROWS num,
	'Number of Blocks' hdg, BLOCKS blo,
	'Number of Empty Blocks' hdg, EMPTY_BLOCKS emp,
	'Average Space' hdg, AVG_SPACE avg,
	'Chain Count' hdg, CHAIN_CNT cha,
	'Average Row Length' hdg, AVG_ROW_LEN rln,
        'Spazio Occupato ' hdg, (BLOCKS*8192) spz
from dba_tables
where TABLE_NAME=UPPER('&&table_name')
/
set heading on
set embedded off
column cn format a30 heading 'Column Name'
column fo format a15 heading 'Type'
column nu format a4 heading 'Null'
column nds format 99,999,999 heading 'No Distinct'
column dfl format 9999 heading 'Dflt Len'
column dfv format a40 heading 'Default Value'
ttitle 'Table Description - Column Definition'
select COLUMN_NAME cn,
       	DATA_TYPE ||
	decode(DATA_TYPE,
		'NUMBER',
		    '('||to_char(DATA_PRECISION)||
			decode(DATA_SCALE,0,'',','||to_char(DATA_SCALE))||')',
		'VARCHAR2',
		    '('||to_char(DATA_LENGTH)||')',
		'DATE','',
		'Error') fo,
	decode(NULLABLE,'Y','','N N') nu,
	NUM_DISTINCT nds,
	DEFAULT_LENGTH dfl,
	DATA_DEFAULT dfv
FROM user_tab_columns
where TABLE_NAME=UPPER('&&table_name')
order by COLUMN_ID
/
ttitle 'Table Constraints'
set heading on
set verify off
column cn format a30 heading 'Primary Key'
column cln format a45 heading 'Table.Column Name'
column ct format a7 heading 'Type'
column st format a7 heading 'Status'
column ro format a30 heading 'Ref Owner|Constraint Name'
column se format a70 heading 'Criteria ' newline
break on cn on st
set embedded on
prompt Primary Key
prompt
select cns.CONSTRAINT_NAME cn,
	cns.TABLE_NAME||'.'||cls.COLUMN_NAME cln,
       	initcap(cns.STATUS) st
from user_constraints cns,
	user_cons_columns cls
where cns.table_name=upper('&&table_name')
and cns.owner=user
and cns.CONSTRAINT_TYPE='P'
and cns.constraint_name=cls.constraint_name
order by cls.position
/
prompt Unique Key
prompt
column cn format a30 heading 'Unique Key'
select cns.CONSTRAINT_NAME cn,
	cns.TABLE_NAME||'.'||cls.COLUMN_NAME cln,
       	initcap(cns.STATUS) st
from user_constraints cns,
	user_cons_columns cls
where cns.table_name=upper('&&table_name')
and cns.owner=user
and cns.CONSTRAINT_TYPE='U'
and cns.constraint_name=cls.constraint_name
order by cls.position
/
column cln format a38 heading 'Foreign Key' newline
column clfn format a38 heading 'Parent Key'
break on cn on st skip 1
prompt Foreign Keys
prompt
select cns.CONSTRAINT_NAME cn,
        initcap(STATUS) st,
	cls.TABLE_NAME||'.'||cls.COLUMN_NAME cln,
	clf.OWNER||'.'||clf.TABLE_NAME||'.'||clf.COLUMN_NAME clfn
from user_constraints cns,
	all_cons_columns clf ,
	user_cons_columns cls
where cns.table_name=upper('&&table_name')
and cns.owner=user
and cns.CONSTRAINT_TYPE='R'
and cns.constraint_name=cls.constraint_name
and clf.CONSTRAINT_NAME = cns.R_CONSTRAINT_NAME
and clf.OWNER = cns.OWNER
and clf.POSITION = clf.POSITION
order by cns.CONSTRAINT_NAME, cls.position
/
prompt Check Constraints
prompt
column se format a35 heading 'Criteria'
set arraysize 1
set long 32000
select CONSTRAINT_NAME cn,
       initcap(STATUS) st,
       SEARCH_CONDITION se
from user_constraints
where table_name=upper('&&table_name')
and owner=user
and CONSTRAINT_TYPE='C'
/
prompt View Constraints
prompt
select CONSTRAINT_NAME cn,
       initcap(STATUS) st,
       SEARCH_CONDITION se
from user_constraints
where table_name=upper('&&table_name')
and owner=user
and CONSTRAINT_TYPE='V'
/
spool off
btitle off
ttitle off
clear breaks
clear columns
clear computes
set verify on
set long 80
set arraysize 30
set verify on
set timing on
set time on
felice_pago
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 questo forse ?
[...]
tu sei un po' troppo raffinato per i miei gusti ;)
ce ne ho a bizzeffe di questi script, ma in genere ci metto
3 ore a ricordarmi lo script poi il path, oppure devo prendere
il cdrom dove li ho salvati... 
Insomma... alla fine gli scriptini stanno li da qualche parte
ma 99% of the times faccio prima a fare le query a mano libera.
Che poi è la vera natura del DBA, DataBase Artist ;)
/G

 /G
4,5 mb,
oddio molti sono ripetuti in varie versioni :)


 
una volta avevo iniziato un progettino che 
riorganizzava tutti gli script in un piccolo DB
con una GUI... infilavi il cdrom e fai partire 
la GUI (java) che ti ricerca gli sciptini... divisi
per categoria e versione del dibbě...
progetto abbandonato... ma credo che lo riprendero
/G

 wrote in message
news:V1Otb.6701$
9k3...@tornado.fastwebnet.it

La tabella USER_CONS_COLUMNS ti dice su quali colonne della tabella
vi sono dei constraints:
- OWNER
- TABLE_NAME
- CONSTRAINT_NAME
sono i campi principali.
La tabella USER_CONSTRAINTS ti specifica le caratteristiche del
constraint:
- TABLE_NAME
- CONSTRAINT_NAME
- CONSTRAINT_TYPE (r = reference constraint, c = check constraint..)
- R_CONSTRAINT_NAME  (nel caso di reference constraint punta al nome del
  constraint sulla tabella della chiave primaria)
Esempio:
CLIENTE ( id_cliente, nome )
FATTURE ( id_fattura, id_cliente )
SQL > select us1.table_name,
             us1.column_name,
             us2.table_name,
             us2.column_name
      from user_cons_columns us1, user_constraints, user_const_columns
us2
      where user_constraints.constraint_name = us1.constraint_name
      and user_constraints.constraint_type = 'R'
      and us1.table_name = 'FATTURE'
      and us2.constraint_name = user_constraint.r_constraint_name;
Esempio di output:
us1.table_name -> FATTURE
us1.column_name -> ID_CLIENTE
us2.table_name -> CLIENTE
us2.column_name -> ID_CLIENTE
Spero di esserti stata utile.
ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG