这里的表结构指的表的基本信息:表名,表的注释(备注),字段名,字段类型,长度,是否允许空,缺省值,字段注释(备注)。
主要的是注释..你的表名叫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