這里的表結(jié)構(gòu)指的表的基本信息:表名,表的注釋(備注),字段名,字段類型,長(zhǎng)度,是否允許空,缺省值,字段注釋(備注)。
?
主要的是注釋..你的表名叫l(wèi)cxxb,字段名叫l(wèi)cmc,智商300的用戶也看不懂你這是拼音,意思是"流程信息表"和"流程名稱"。大家的思路都不一樣。
我要做到的就是讓用戶看到的是"流程信息表"和"流程名稱"而實(shí)際操作的是lcxxb和lcmc。
你自己建個(gè)表XXX來(lái)保存lcxxb,lcmc和"流程信息表","流程名稱"的對(duì)映吧。是相當(dāng)麻煩的事情,
1,造成數(shù)據(jù)冗余,人家數(shù)據(jù)庫(kù)基本上都能讓你給表和字段寫注釋,你還自己搞一套..
2,每次修改表都要去修改一下這張表,刪除的表和字段要?jiǎng)h除,更新的表和字段要更新,新建的表和字段要新建,累..
3,每次創(chuàng)建數(shù)據(jù)庫(kù)都要獨(dú)立的再填寫表XXX的內(nèi)容。每次修改了數(shù)據(jù)庫(kù)設(shè)計(jì),創(chuàng)建數(shù)據(jù)庫(kù)的程序也要跟著修改。
所以俺還是老老實(shí)實(shí)用數(shù)據(jù)庫(kù)提供的注釋或備注或數(shù)據(jù)字典功能吧。
但是這又涉及一個(gè)問(wèn)題:各種數(shù)據(jù)庫(kù)保存注釋(備注)的方法不一樣,雖然現(xiàn)在只用MS Sql server,但難保以后不會(huì)用Oracle。要不是大家都各搞一套,巴別塔也許早就建成了。
?
SQL Server下生成數(shù)據(jù)庫(kù)框架。
經(jīng)過(guò)反復(fù)學(xué)習(xí)和測(cè)試,最后發(fā)現(xiàn)自定義的視圖才能簡(jiǎn)單地勝任所需要的工作,否則把事情會(huì)變得很復(fù)雜。
視圖代碼如下
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
最后輸出的是:
列名
系統(tǒng)類型
限制長(zhǎng)度
是否允許為空
備注
所在表
可以進(jìn)一步根據(jù)需要增加/刪除自己希望的部分。
調(diào)用:
Select * From [自定義的視圖名稱] Where Table_Name='[希望檢索的表名]'
或者 取得一個(gè)表中所有的字段列表及字段描述的方法:
字段名列表:
select Name from syscolumns where id=object_id('custmoerinfo')
字段描述:
select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', 'custmoerinfo','column', default)
ORACLE下的方法(摘自
Oracle數(shù)據(jù)字典的介紹與應(yīng)用實(shí)例):
ORACLE自己搞了一套數(shù)據(jù)字典創(chuàng)建表的SQL語(yǔ)句如下
--" 創(chuàng)建數(shù)據(jù)表
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 '備注';
-- 創(chuàng)建約束關(guān)系 主鍵 外鍵 其他
alter table TABLE_TEST add constraint TB_TEST_P_NAME primary key (NAME);
數(shù)據(jù)表創(chuàng)建完畢,執(zhí)行下列SQL語(yǔ)句:
select
A.column_name 字段名,A.data_type 數(shù)據(jù)類型,A.data_length 長(zhǎng)度,A.data_precision 整數(shù)位,
A.Data_Scale 小數(shù)位,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'
我們可以得出以下結(jié)果:
字段名 |
數(shù)據(jù)類型 |
長(zhǎng)度 |
整數(shù)位 |
小數(shù)位 |
允許空值 |
缺省值 |
備注 |
Name |
varchar2 |
40 |
? |
? |
N |
<long> |
姓名 |
Sex |
varchar2 |
1 |
? |
? |
N |
<long> |
性別 |
........ |
?
學(xué)習(xí)數(shù)據(jù)庫(kù)的一些資料:
存儲(chǔ)過(guò)程的好處:1編譯2封裝3重復(fù)使用4安全性5減少網(wǎng)絡(luò)流量
JDBC讀取字段需要按順序的原因?:SQL數(shù)據(jù)庫(kù)在構(gòu)造虛擬表的時(shí)候就是以一種先進(jìn)先出的原則,把所有的數(shù)據(jù)排列在一個(gè)內(nèi)存段之中,通過(guò)順序的讀取,將數(shù)據(jù)逐一的讀取,而如果跳過(guò)某個(gè)具體的字段獲取下一個(gè)字段的信息,系統(tǒng)就會(huì)將原來(lái)的那個(gè)字段的信息丟失,以釋放內(nèi)存,這是出于系統(tǒng)構(gòu)造的簡(jiǎn)單性和系統(tǒng)的內(nèi)存最低化的要求,所以這樣也保證了有限的內(nèi)存資源得到最充分的發(fā)揮。?
在SQL Server中保存和輸出圖片http://www.pcdog.com/p/html/2004124/41220041381_1.htm
很好的一個(gè)電子書下載地址http://www.ibook8.com/book/shuju.htm