⑴ 如何修改和查看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) ; -- 注意: 這里不能省略欄位名。設置身份表;