一次看到某張表中有幾條ID相同的數據,通過業務確認該ID應該是唯一的,后來找到原因,因為DBA未對該表建主鍵。
現在DBA工作比較忙,我們項目有時需要新增或者修改數據庫表結構時,可能需要對表結構進行確認。下面提供幾個比較有用對SQL,可以幫助大家看看數據庫 中表結構定義怎樣的,以PRODUCT表為例,請自行更換為所需的表名。
1.查詢主鍵:
----*********查詢主鍵------------
select col.* from user_constraints con,user_cons_columns col where con.constraint_name=col.constraint_name and con.constraint_type='P' and col.table_name='PRODUCT' select * from user_constraints where table_name = 'PRODUCT' and constraint_type ='P'
2.查看表結構基本信息:
--------*********查詢表基本信息---------------
select utc.column_name,utc.data_type,utc.data_length,utc.data_precision, utc.data_Scale,utc.nullable,utc.data_default,ucc.comments from user_tab_columns utc,user_col_comments ucc where utc.table_name = ucc.table_name and utc.column_name = ucc.column_name and utc.table_name = 'PRODUCT' order by column_id
3.查看SEQUENCE:
-----sequence-------------------
SELECT SEQ_PRODUCT_DRAFT.nextval FROM dual
----能查出來就說明該SEQ存在
(PRODUCT表中的ID是沒有設SEQ的,業務邏輯是該從product_draft那邊的ID寫入product.id,所以此處查的是 product_draft中的seq)
4.查看外鍵:
----**查詢外鍵-----
select distinct(ucc.column_name) column_name,rela.table_name,rela.column_name column_name1 from user_constraints uc,user_cons_columns ucc, (select t2.table_name,t2.column_name,t1.r_constraint_name from user_constraints t1,user_cons_columns t2 where t1.r_constraint_name=t2.constraint_name and t1.table_name='ONLINEXLS') rela where uc.constraint_name=ucc.constraint_name and uc.r_constraint_name=rela.r_constraint_name and uc.table_name='PRODUCT'
參考:http://blog.sina.com.cn/s/blog_497cdcc10100bi85.html