這里的表結構指的表的基本信息:表名,表的注釋(備注),字段名,字段類型,長度,是否允許空,缺省值,字段注釋(備注)。
?
主要的是注釋..你的表名叫lcxxb,字段名叫lcmc,智商300的用戶也看不懂你這是拼音,意思是"流程信息表"和"流程名稱"。大家的思路都不一樣。
我要做到的就是讓用戶看到的是"流程信息表"和"流程名稱"而實際操作的是lcxxb和lcmc。
你自己建個表XXX來保存lcxxb,lcmc和"流程信息表","流程名稱"的對映吧。是相當麻煩的事情,
1,造成數據冗余,人家數據庫基本上都能讓你給表和字段寫注釋,你還自己搞一套..
2,每次修改表都要去修改一下這張表,刪除的表和字段要刪除,更新的表和字段要更新,新建的表和字段要新建,累..
3,每次創建數據庫都要獨立的再填寫表XXX的內容。每次修改了數據庫設計,創建數據庫的程序也要跟著修改。
所以俺還是老老實實用數據庫提供的注釋或備注或數據字典功能吧。
但是這又涉及一個問題:各種數據庫保存注釋(備注)的方法不一樣,雖然現在只用MS Sql server,但難保以后不會用Oracle。要不是大家都各搞一套,巴別塔也許早就建成了。
?
SQL Server下生成數據庫框架。
經過反復學習和測試,最后發現自定義的視圖才能簡單地勝任所需要的工作,否則把事情會變得很復雜。
視圖代碼如下
CREATE VIEW dbo.Data_Frame
AS
SELECT dbo.syscolumns.name AS Name, dbo.systypes.name AS Type,
????? dbo.syscolumns.length AS Width, dbo.syscolumns.isnullable AS IsNull,
????? dbo.sysproperties.[value], dbo.sysobjects.name AS Table_Name
FROM dbo.sysobjects INNER JOIN
????? dbo.syscolumns ON dbo.sysobjects.id = dbo.syscolumns.id INNER JOIN
????? dbo.sysproperties ON dbo.syscolumns.colid = dbo.sysproperties.smallid AND
????? dbo.syscolumns.id = dbo.sysproperties.id INNER JOIN
????? dbo.systypes ON dbo.syscolumns.xtype = dbo.systypes.xtype AND
????? dbo.syscolumns.xusertype = dbo.systypes.xusertype
最后輸出的是:
列名
系統類型
限制長度
是否允許為空
備注
所在表
可以進一步根據需要增加/刪除自己希望的部分。
調用:
Select * From [自定義的視圖名稱] Where Table_Name='[希望檢索的表名]'
或者 取得一個表中所有的字段列表及字段描述的方法:
字段名列表:
select Name from syscolumns where id=object_id('custmoerinfo')
字段描述:
select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', 'custmoerinfo','column', default)
ORACLE下的方法(摘自
Oracle數據字典的介紹與應用實例):
ORACLE自己搞了一套數據字典創建表的SQL語句如下
--" 創建數據表
create table TABLE_TEST
(
NAME varchar2(40) not null,
SEX varchar2(1) default 'Y' not null,
BIRTHDAY date not null,
HEIGHT number(3,2),
WEIGHT number(3,2),
MEMO blob
);
-- 給列添加備注
comment on column TABLE_TEST.NAME is '姓名';
comment on column TABLE_TEST.SEX is '性別';
comment on column TABLE_TEST.BIRTHDAY is '生日';
comment on column TABLE_TEST.HEIGHT is '身高';
comment on column TABLE_TEST.WEIGHT is '體重';
comment on column TABLE_TEST.MEMO is '備注';
-- 創建約束關系 主鍵 外鍵 其他
alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (NAME);
數據表創建完畢,執行下列SQL語句:
select
A.column_name 字段名,A.data_type 數據類型,A.data_length 長度,A.data_precision 整數位,
A.Data_Scale 小數位,A.nullable 允許空值,A.Data_default 缺省值,B.comments 備注
from
user_tab_columns A,
user_col_comments B
where
A.Table_Name = B.Table_Name
and A.Column_Name = B.Column_Name
and A.Table_Name = 'TABLE_TEST'
我們可以得出以下結果:
字段名 |
數據類型 |
長度 |
整數位 |
小數位 |
允許空值 |
缺省值 |
備注 |
Name |
varchar2 |
40 |
? |
? |
N |
<long> |
姓名 |
Sex |
varchar2 |
1 |
? |
? |
N |
<long> |
性別 |
........ |
?
學習數據庫的一些資料:
存儲過程的好處:1編譯2封裝3重復使用4安全性5減少網絡流量
JDBC讀取字段需要按順序的原因?:SQL數據庫在構造虛擬表的時候就是以一種先進先出的原則,把所有的數據排列在一個內存段之中,通過順序的讀取,將數據逐一的讀取,而如果跳過某個具體的字段獲取下一個字段的信息,系統就會將原來的那個字段的信息丟失,以釋放內存,這是出于系統構造的簡單性和系統的內存最低化的要求,所以這樣也保證了有限的內存資源得到最充分的發揮。?
在SQL Server中保存和輸出圖片http://www.pcdog.com/p/html/2004124/41220041381_1.htm
很好的一個電子書下載地址http://www.ibook8.com/book/shuju.htm