今天有人问有没有办法查看表的注释,或查询所有表的注释。这里所说的表或表字段等的注释,其实是数据库对象的扩展属性。在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作。扩展属性的内容可以通过SSMS添加、修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护。
创建一张测试表:
BEGIN
DROP TABLE T8
END
GO
CREATE TABLE T8 (
id INT NOT NULL,
name NVARCHAR(20)
)
GO
code-1
添加表的扩展属性:在Object Explorer中找到新建的表,右键选择属性。
figure-1
点击扩展属性,即可进行添加、修改和删除。
figure-2
添加字段的扩展属性。
figure-3
字段属性——描述,添加注释内容。
figure-4
保存后,即可完成对字段扩展属性的添加。可通过系统视图sys.extended_properties进行查询。
code-2
从下图可看到,刚才在SSMS上添加的属性已经被查询出来。默认的扩展属性名是MS_Description。
figure-5
系统视图sys.extended_properties每个字段的详细说明,可查阅SQL联机从书。除了系统视图,也可以通过函数fn_listextendedproperty查询。
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', default, default);
SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'id');
SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'name');
code-3
figure-6
扩展属性可以使用相关的存储过程进行维护。再执行code-1的代码,重建测试表,相关的属性也会删除。执行存储过程sp_addextendedproperty 进行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。
@name = N'MS_Description',
@value = N'This is a table description on [T8](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8'
GO
EXEC sp_addextendedproperty
@name = N'MS_Description',
@value = N'This is a column description on (2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
GO
EXEC sp_addextendedproperty ReactJS入门学习一 - 龙恩0707 阅读原文»
ReactJS入门学习一
阅读目录
React是什么?
React仅仅是VIEW层,而我们经常看到Angular是一个完整的框架,而React不是,因此我们看到他们两个的侧重点不一样,所以也不能比较的,React提供了模板语法及一些函数钩子用于HTML的渲染,只用于View层。
React的优点?
1. 虚拟DOM
在DOM树的状态发生改变时,虚拟DOM机制会将前后DOM树进行对比,如果两个DOM树有不一样的地方,那么React仅仅会对那些不一样的区域来进行响应DOM修改,这也就是React的更高的性能是使用虚拟DOM来实现的。
2. 数据流
React实现了单向响应的数据流,从而减少了重复的代码,这也是为什么比传统数据绑定更简单。
浏览器对React的支持程度:IE9- 以下的浏览器是不支持React.
下面我们来学习下React的基本使用方法吧!
首先React擅长于组件化页面,我们来看看使用React来如何渲染页面的,如下代码:
首先需要在页面上引入React.js
<script src="./build/react.min.js"></script>
HTML代码结构如下:
<div id="content"></div>
JS代码如下:
var CommentBox = React.createClass({
displayName: 'CommentBox',
render: function(){
return (
React.createElement('div',{className:'commentBox'},"Hello,world!I am a CommentBox")
);
}
});
React.render(
React.createElement(CommentBox,null),document.getElementById("content")
);
</script>
在页面上生成代码结构如下:
在IE9+ firefox chrome下生效;
我们下面来解释下上面的代码的含义:
React.createClass(): 该方法来创建一个新的React组件;其中最重要的方法是render,该方法返回一颗React组件树,这棵树将会渲染成HTML;
上面的div标签不是真实的DOM节点,他们是React div组件的实例,我们可以认为React是通过此来如何处理标记或者一些数据,React是安全的,它不生成HTML字符串,所以默认阻止了xSS的攻击;
React.render():该方法是 实例化根组件,启动框架,它有第二个参数,含义是:注入标记到原始的DOM元素中;
React 不依赖与Jquery,因此上面是通过 document.getElementById(“content”)来作为React.render()的第二个参数,当然我们也可以使用jqeury的方式来作为第二个参数调用,但是我们必须如下这样:$(“#content”)[0], 而不是 $(“#content”);
React如何制作组件?
如下我们有一个网站页面:首页分为如下几块,导航页,侧边栏,还有内容区;假如我现在想导航页,侧边栏和内容区都做成一个组件模块,因为有很多页面需要公用的;如下page页面结构图:
那么下面我们可以使用React.createClass()方法来创建一个react组件;如下代码:
导航页代码如下:我们使用JSX来写代码如下:(切记页面需要引入)
<script src="./build/react.min.js"></script>
<script src="./build/JSXTransformer2.js"></script>
这句代码;这是目前测试的,方便点直接引入;
/* 导航模块代码 */
var NavMode = React.createClass({
render: function(){
return (
<div className = "NavList">
Hello word! I am a Nav List
</div>
);
}
});
/* 侧边栏模块代码 */
var SlideMode = React.createClass({
render: function(){
return (
<div className="slideMode">hello world! I am a slide</div>
)
}
});
/* 内容区模块代码 */
var ContentMode = React.createClass({
render: function(){
return (
<div className="contentMode">Hello world! I am comtent</div>
)
}
});
/* 页面div封装 上面三个模块 */
var page = React.createClass({
render: function(){
return (
<div className="homepage">
<h1>page首页</h1>
<NavMode />
<SlideMode />
<ContentMode />
</div>
)
}
});
/*阅读更多内容
没有评论:
发表评论