⑴ 如何修改和查看sqlServer视图的属性
如何修改和查看SQLServer视图的属性
修改是增加视图中没有的列,还是更新这个视图里面的数据项
如果是修改其中的列的话,你可以试一下alter view语句:
alter view [视图名] add [列名] //增加一个列
alter view [视图名] drop column [列名] //删除一个列
我觉得是这样的,我没在数据库上做过实验,增加的时候应该增加所建视图参照表里面已有的列,或许还会要求加上原来的表名。具体的你自己上机试一下就可以了
如果说的是更新操作,那就简单了,INSERT ,UPDATE,DELETE,
⑵ SqlServer数据库 中表的字段自动添加
create trigger T_OnModifyA
on A
after insert
as
begin
set nocount off
declare @sm varchar(20),@str varchar(1000)
select @sm=sm from inserted --查到添加的sm的值,并传递给变量@sm
set @str='alter table B add '+@sm +' varchar(20) null'
exec(@str)
end
⑶ sqlServer表之间属性关系的问题请教
看不懂,二个表没有需要关联的字段(相同字段),怎么关联?是否关联ID字段?如果是,关联将可以了。但一般不会关联ID字段的!
⑷ sqlserver 游标有哪些属性
楼上你的,你说的是oracle的,不是sqlserver的
游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
1.游标的组成
游标包含两个部分:一个是游标结果集、一个是游标位置。
游标结果集:定义该游标得SELECT语句返回的行的集合。游标位置:指向这个结果集某一行的当前指针。
2.游标的分类
游标共有3类:API服务器游标、Transaction-SQL游标和API客户端游标。
其中前两种游标都是运行在服务器上的,所以又叫做服务器游标。
API服务器游标
API服务器游标主要应用在服务上,当客户端的应用程序调用API游标函数时,服务器会对API函数进行处理。使用API函数和方法可以实现如下功能:
(1)打开一个连接。
(2)设置定义游标特征的特性或属性,API自动将游标影射到每个结果集。
(3)执行一个或多个Transaction-SQL语句。
(4)使用API函数或方法提取结果集中的行。
API服务器游标包含以下四种:静态游标、动态游标、只进游标、键集驱动游标(Primary key)
静态游标的完整结果集将打开游标时建立的结果集存储在临时表中,(静态游标始终是只读的)。静态游标具有以下特点:总是按照打开游标时的原样显示结果集;不反映数据库中作的任何修改,也不反映对结果集行的列值所作的更改;不显示打开游标后在数据库中新插入的行;组成结果集的行被其他用户更新,新的数据值不会显示在静态游标中;但是静态游标会显示打开游标以后从数据库中删除的行。
动态游标与静态游标相反,当滚动游标时动态游标反映结果集中的所有更改。结果集中的行数据值、顺序和成员每次提取时都会改变。
只进游标不支持滚动,它只支持游标从头到尾顺序提取数据行。注意:只进游标也反映对结果集所做的所有更改。
键集驱动游标同时具有静态游标和动态游标的特点。当打开游标时,该游标中的成员以及行的顺序是固定的,键集在游标打开时也会存储到临时工作表中,对非键集列的数据值的更改在用户游标滚动的时候可以看见,在游标打开以后对数据库中插入的行是不可见的,除非关闭重新打开游标。
Transaction-SQL游标
该游标是基于Declare Cursor 语法,主要用于Transaction-SQL脚本、存储过程以及触发器中。Transaction-SQL游标在服务器处理由客户端发送到服务器的Transaction-SQL语句。
在存储过程或触发器中使用Transaction-SQL游标的过程为:
(1)声明Transaction-SQL变量包含游标返回的数据。为每个结果集列声明一个变量。声明足够大的变量来保存列返回的值,并声明变量的类型为可从数据类型隐式转换得到的数据类型。
(2)使用Declare Cursor语句将Transaction-SQL游标与Select语句相关联。还可以利用Declare Cursor定义游标的只读、只进等特性。
(3)使用Open语句执行Select语句填充游标。
(4)使用Fetch Into语句提取单个行,并将每列中得数据移至指定的变量中。注意:其他Transaction-SQL语句可以引用那些变量来访问提取的数据值。Transaction-SQL游标不支持提取行块。
(5)使用Close语句结束游标的使用。注意:关闭游标以后,该游标还是存在,可以使用Open命令打开继续使用,只有调用Deallocate语句才会完全释放。
客户端游标
该游标将使用默认结果集把整个结果集高速缓存在客户端上,所有的游标操作都在客户端的高速缓存中进行。注意:客户端游标只支持只进和静态游标。不支持其他游标。
3.游标的生命周期
游标的生命周期包含有五个阶段:声明游标、打开游标、读取游标数据、关闭游标、释放游标。
声明游标是为游标指定获取数据时所使用的Select语句,声明游标并不会检索任何数据,它只是为游标指明了相应的Select 语句。
Declare 游标名称 Cursor 参数
声明游标的参数
(1)Local与Global:Local表示游标的作用于仅仅限于其所在的存储过程、触发器以及批处理中、执行完毕以后游标自动释放。Global表示的是该游标作用域是整个会话层。由连接执行的任何存储过程、批处理等都可以引用该游标名称,仅在断开连接时隐性释放。
(2)Forward_only与Scroll:前者表示为只进游标,后者表示为可以随意定位。默认为前者。
(3)Static、Keyset与Dynamic: 第一个表示定义一个游标,其数据存放到一个临时表内,对游标的所有请求都从临时表中应答,因此,对该游标进行提取操作时返回的数据不反映对基表所作的修改,并且该游标不允许修改。Keyset表示的是,当游标打开时,键集驱动游标中行的身份与顺序是固定的,并把其放到临时表中。Dynamic表示的是滚动游标时,动态游标反映对结果集内所有数据的更改。
(4)Read_only 、Scroll_Locks与Optimistic:第一个表示的是只读游标,第二个表示的是在使用的游标结果集数据上放置锁,当行读取到游标中然后对它们进行修改时,数据库将锁定这些行,以保证数据的一致性。Optimistic的含义是游标将数据读取以后,如果这些数据被更新了,则通过游标定位进行的更新与删除操作将不会成功。
标准游标:
Declare MyCursor Cursor
For Select * From Master_Goods
只读游标
Declare MyCusror Cursor
For Select * From Master_Goods
For Read Only
可更新游标
Declare MyCusror Cursor
For Select * From Master_Goods
For UpDate
打开游标使用Open语句用于打开Transaction-SQL服务器游标,执行Open语句的过程中就是按照Select语句进行填充数据,打开游标以后游标位置在第一行。
打开游标
全局游标:Open Global MyCursor 局部游标: Open MyCursor
读取游标数据:在打开游标以后,使用Fetch语句从Transaction-SQL服务器游标中检索特定的一行。使用Fetch操作,可以使游标移动到下一个记录,并将游标返回的每个列得数据分别赋值给声明的本地变量。
Fetch [Next | Prior | First | Last | Absoluten| Relativen] From MyCursor
Into @GoodsID,@GoodsName
其中:Next表示返回结果集中当前行的下一行记录,如果第一次读取则返回第一行。默认的读取选项为Next
Prior表示返回结果集中当前行的前一行记录,如果第一次读取则没有行返回,并且把游标置于第一行之前。
First表示返回结果集中的第一行,并且将其作为当前行。
Last表示返回结果集中的最后一行,并且将其作为当前行。
Absoluten如果n为正数,则返回从游标头开始的第n行,并且返回行变成新的当前行。如果n为负,则返回从游标末尾开始的第n行,并且返回行为新的当前行,如果n为0,则返回当前行。
Relativen如果n为正数,则返回从当前行开始的第n行,如果n为负,则返回从当前行之前的第n行,如果为0,则返回当前行。
关闭游标调用的是Close语句,方式如下:Close Global MyCursor Close MyCursor
释放游标调用的是Deallocate语句,方法如下:Deallocate Glboal MyCursor Deallocate MyCursor
游标实例:
Declare MyCusror Cursor Scroll
For Select * From Master_Goods Order By GoodsID
Open MyCursor
Fetch next From MyCursor
Into @GoodsCode,@GoodsName
While(@@Fetch_Status = 0)
Begin
Begin
Select @GoodsCode = Convert(Char(20),@GoodsCode)
Select @GoodsName = Convert(Char(20),@GoodsName)
PRINT @GoodsCode + ':' + @GoodsName
End
Fetch next From MyCursor
Into @GoodsCode,@GoodsName
End
Close MyCursor
Deallocate MyCursor
修改当前游标的数据方法如下:
UpDate Master_Goods Set GoodsName = 'yangyang8848' Where Current Of MyCursor;
删除当前游标行数据的方法如下:
Delete From Master_Goods Where Current Of MyCursor
Select @@CURSOR_ROWS 可以得到当前游标中存在的数据行数。注意:此变量为一个连接上的全局变量,因此只对应最后一次打开的游标。
⑸ sqlserver 查看表对象 (包含注释,每个字段代表的含义),sql 语句的写法
select * from syscolumns where id=object_id('Persons') 查看表中列的对象,persons是表名;
select * from sysobjects where id=object_id('Persons') 这个是查看表的属性
⑹ 如何修改 一个字段的属性 sqlserver
使用脚本修改吧,界面也可以
脚本如下:
Alter table [表名] Alter column [列名] [列类型] [NOT NULL或者 NULL]
alter table 脚本很丰富,可以查看MS SQL的帮助,新手做任务,给个满意吧
ALTER TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name
{
ALTER COLUMN column_name
{
[ type_schema_name. ] type_name [ ( { precision [ , scale ]
| max | xml_schema_collection } ) ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
| {ADD | DROP }
{ ROWGUIDCOL | PERSISTED | NOT FOR REPLICATION | SPARSE }
}
| [ WITH { CHECK | NOCHECK } ]
| ADD
{
<column_definition>
| <computed_column_definition>
| <table_constraint>
| <column_set_definition>
} [ ,...n ]
| DROP
{
[ CONSTRAINT ] constraint_name
[ WITH ( <drop_clustered_constraint_option> [ ,...n ] ) ]
| COLUMN column_name
} [ ,...n ]
| [ WITH { CHECK | NOCHECK } ] { CHECK | NOCHECK } CONSTRAINT
{ ALL | constraint_name [ ,...n ] }
| { ENABLE | DISABLE } TRIGGER
{ ALL | trigger_name [ ,...n ] }
| { ENABLE | DISABLE } CHANGE_TRACKING
[ WITH ( TRACK_COLUMNS_UPDATED = { ON | OFF } ) ]
| SWITCH [ PARTITION source_partition_number_expression ]
TO target_table
[ PARTITION target_partition_number_expression ]
| SET ( FILESTREAM_ON = { partition_scheme_name | filegroup |
"default" | "NULL" } )
| REBUILD
[ [PARTITION = ALL]
[ WITH ( <rebuild_option> [ ,...n ] ) ]
| [ PARTITION = partition_number
[ WITH ( <single_partition_rebuild_option> [ ,...n ] ) ]
]
]
| (<table_option>)
}
[ ; ]
<column_set_definition> ::=
column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS
<drop_clustered_constraint_option> ::=
{
MAXDOP = max_degree_of_parallelism
| ONLINE = {ON | OFF }
| MOVE TO { partition_scheme_name ( column_name ) | filegroup
| "default" }
}
<table_option> ::=
{
SET ( LOCK_ESCALATION = { AUTO | TABLE | DISABLE } )
}
<single_partition_rebuild__option> ::=
{
SORT_IN_TEMPDB = { ON | OFF }
| MAXDOP = max_degree_of_parallelism
| DATA_COMPRESSION = { NONE | ROW | PAGE} }
}
⑺ 使用SQLserver 2005创建表,表名为Table_a,属性包括:姓名、性别、年龄、联系方式、工资的命令
if exists(select * from sysobjects where name='Table_a')
drop table Table_a
go
create table Table_a
(
姓名 varchar(20) primary key,--主键
性别 bit,--只能存储0或1,以0来表示男,1表示女,反过来也可以.
年龄 tinyint,
联系方式 varchar(50),
工资 smallmoney
)
go
直接把上面的代码复制。把姓名,性别....等改为你想要的英文就可以了
⑻ SQLServer表连接查询
select *from 表1 inner join 表2 on 表1.属性=表2.属性
inner join表3 on 表1.属性=表3.属性
inner join表4 on 表1.属性=表4.属性
inner join表5 on 表1.属性=表5.属性
inner join表6 on 表1.属性=表6.属性
有什么不懂的可以问我。。嘿嘿。
⑼ sqlserver “列属性——说明" sql语句的关键字是什么
下面是一个 建表, 为列 设置 说明的 例子 sql 语句。
IF EXISTS(SELECT * FROM sys.Tables WHERE name='test_table')
DROP TABLE test_table
go
CREATE TABLE test_table(
Test_ID int IDENTITY(1,1) PRIMARY KEY NOT NULL ,
Test_Key varchar(10) NOT NULL ,
Test_Value varchar(20) NOT NULL ,
Test_Type int NOT NULL ,
Test_BelongTo int,
Test_Grade int DEFAULT 1,
Test_Remark varchar(50),
Test_Visible bit DEFAULT 1
);
go
EXECUTE sp_addextendedproperty N'MS_Description', '测试表', N'user', N'dbo', N'Table', N'test_table', NULL, NULL;
go
EXECUTE sp_addextendedproperty N'MS_Description', '主键(自增长)', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_ID';
go
EXECUTE sp_addextendedproperty N'MS_Description', '种类', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Key';
go
EXECUTE sp_addextendedproperty N'MS_Description', '数值', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Value';
go
EXECUTE sp_addextendedproperty N'MS_Description', '内部类型', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Type';
go
EXECUTE sp_addextendedproperty N'MS_Description', '从属关系', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_BelongTo';
go
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Grade';
go
EXECUTE sp_addextendedproperty N'MS_Description', '备注', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Remark';
go
EXECUTE sp_addextendedproperty N'MS_Description', '是否可见', N'user', N'dbo', N'Table', N'test_table', N'column' , N'Test_Visible';
go
⑽ 如何自动补全SQLSERVER表中的属性
如果表中的 id 列是一个增量列,则要插入的数据包括 id 列的值,设置 identity table on; 插入到 table (id,xxx,... ,xxx) values (id column value,xxx,... ,xxx) ; -- 注意: 这里不能省略字段名。设置身份表;