資料庫擴展欄位
⑴ 求sql表擴展欄位屬性的思路
大家在使用SQL Server開發的時候一定會遇到這樣的需求,那就是通過Table_Name1表的兩個欄位Column1、Column2來查詢在Table_Name2表中符合這兩個條件的記錄,並返回Table_Name2中的欄位Column3,面對這樣的需求,你也許會說使用表連接就可以了,對的,沒錯,我也是這樣想的,但是有的時候往往要面對不同的突發情況,那就是並不是一定會Column1與Column2是全匹配的查詢,可能中間還需要一些邏輯的處理,比如字元串的截取後再匹配等等。這個時候我們通常會在SQL Server中寫一個函數,這個函數接收兩個參數:Column1、Column2,函數體裡面做一些邏輯處理,在通過處理好的參數去查詢Table_Name2表,並返回相應的值。很好,那下面我們來計算下圖中數據的查詢情況。假設表1的數據有50W,表2的數據有4W,在表2沒有索引的條件下,查詢的復雜度就有50W*4W了,兩個表都需要做全表掃描,表2的全表掃描就會達到50W次。(圖1:需求說明)優化1:這一個優化,每個開發人員都知道,那就是對表2的兩個查詢欄位分別建立索引。這樣的優化和之前相比,性能將會提高N個等級。優化2:這第二個優化方法是使用SQL Server的復合索引,在表2上創建一個復合索引,這個符合索引包括需要查詢的兩個欄位,其實就是把兩個欄位的內容生成一個索引,其中索引包含了兩個索引的排序。優化3:這第三個優化方法是使用SQL Server2005之後版本才有的索引-包含性索引(Include),就是在優化2的基礎上,把需要返回的欄位也一起放入到索引中,這樣的查詢就只需要查詢索引就夠了,不需要再讀取數據頁了,減少磁碟的IO消耗。不過這個方法也不是萬能,因為有時可能返回的欄位會比較多,有時幾個欄位加起來的長度有可能超出了900個字元(索引大小范圍),如果想了解可以進入:SQL Server 索引中include的魅力(具有包含性列的索引)優化4:在不考慮一些分區、分表、分到不同的磁碟等優化方式的情況下,我們是否還能進一步優化我們的查詢呢?這就是這篇文章想要告訴你的,因為我們的回答是:有的。那就是通過SQLCLR的UDT,把表2的數據一次性載入到內存,那麼在進行表1查詢的時候,我們不需要通過B+樹來查詢數據了,直接到內存中查詢,這樣之所以快是因為操作內存要比操作磁碟要快得多。這其中會有些局限性和缺點,具體見下面的缺點描述。設計思路1、去資料庫中把表2讀取出來,並放到private static readonly IDictionary<string, string> resultCollectionDic的靜態變數中。在資料庫服務啟動的時候是會初始化2、SQLCLR函數的,所以在啟資料庫服務的時候,也一起把表2的數據保存到了內存當中了。3、上面的查詢中包括了兩個欄位Column1、Column2和一個返回欄位Column3,那麼我們如何把這些數據保存到IDictionary字典當中呢?我的做法就是把Column1、Column2的中間加一個字元「+」,把這個字元串作為Key值,把Column3這個返回值做為Value,這樣就解決了多個And的查詢的問題。這個會有些局限性,具體可以見下面的缺點描述。在函數FunctionImsi2HLR2中傳進的兩個字元後,就要進行上面的拼湊方式來拼湊Key值,再到IDictionary中查詢。
⑵ mysql 怎麼給一個表一次增加多個欄位
mysql為一個表增加多個欄位的語法為:
ALTER TABLE 表名 ADD COLUMN `欄位名1` 數據類型(長度) [DEFAULT NULL],
ADD COLUMN `欄位名2` 數據類型(長度) [DEFAULT NULL];
其中,default null為可選內容。
舉例,已知表admin_pay_type,為其增加erp_code、province、province、city、bank等4個欄位,
sql如下:
alter table admin_pay_type
add erp_code varchar(20) not null,
add province varchar(30),
add city varchar(30),
add bank varchar(30);
擴展資料:
整理部分Mysql常用表處理命令:
1、查看列:desc 表名;
2、修改表名:alter table t_book rename to bbb;
3、添加列:alter table 表名 add column 列名 varchar(30);
4、刪除列:alter table 表名 drop column 列名;
5、修改列名MySQL: alter table bbb change nnnnn hh int;
6、修改列名SQLServer:exec sp_rename't_student.name','nn','column';
7、修改列名Oracle:lter table bbb rename column nnnnn to hh int;
8、修改列屬性:alter table t_book modify name varchar(22);
⑶ 如何增加資料庫的欄位大小
用ACCESS打開資料庫文件再某一個表上點滑鼠右鍵選擇你要操作的欄位,把255改大些或者將數據類型改成「備注」
⑷ 修改一個資料庫的表結構,並增加一個欄位「xxxx」的命令怎麼寫
資料庫中,增加一個欄位用alter命令。
工具:sqlserver 2008 R2
步驟:
1、資料庫中有表student數據如下:
⑸ 資料庫表如何增加欄位
用SQL語句添加刪除修改欄位、一些表與欄位的基本操作、資料庫備份等,需要的朋友可以參考下。
用SQL語句添加刪除修改欄位:
1.增加欄位。
alter table docdsp add dspcode char(200)
2.刪除欄位。
ALTER TABLE table_NAME DROP COLUMN column_NAME
3.修改欄位類型 。
ALTER TABLE table_name ALTER COLUMN column_name new_data_type
⑹ SQL如何添加欄位
增加欄位: alter table [表名] add 欄位名 smallint default 0 增加數字欄位,整型,預設值為0。
alter table [表名] add 欄位名 int default 0 增加數字欄位,長整型,預設值為0。
alter table [表名] add 欄位名 single default 0 增加數字欄位,單精度型,預設值為0。
alter table [表名] add 欄位名 double default 0 增加數字欄位,雙精度型,預設值為0。
alter table [表名] add 欄位名 Tinyint default 0 增加數字欄位,位元組型,預設值為0。
alter table [表名] add 欄位名 text [null] 增加備注型欄位,[null]可選參數。
alter table [表名] add 欄位名 memo [null] 增加備注型欄位,[null]可選參數。
alter table [表名] add 欄位名 varchar(N) [null] 增加變長文本型欄位大小為N(1~255)。
alter table [表名] add 欄位名 char [null] 增加定長文本型欄位大小固定為255。
(6)資料庫擴展欄位擴展閱讀
全局變數
全局變數是sql server(WINDOWS平台上強大的資料庫平台)系統內部使用的變數,其作用范圍並不局限於某一程序,而是任何程序均可隨時調用全局變數通常存儲一些sql server(WINDOWS平台上強大的資料庫平台)的配置設定值和效能統計數據。
用戶可在程序中用全局變數來測試系統的設定值或Transact-SQL命令執行後的狀態值。有關sql server(WINDOWS平台上強大的資料庫平台) 全局變數的詳細情況請參見附錄。
注意:全局變數不是由用戶的程序定義的,它們是在伺服器級定應義的。只能使用預先說明及定義的變局變數。引用全局變數時,必須以「@@」開頭。局部變數的名稱不能與全局變數的名稱相同、否則會在應用中出錯。
⑺ 資料庫如何增加欄位
簡單的方法:
1)create 一個新資料庫,(增加欄位後的)
2)從舊資料庫里導入,導入相同的欄位,新欄位空白,或固定的值。
⑻ 資料庫問題怎麼增加欄位
可以加,也可以不加。 一般能加約束為不能為空(not null) 唯一性( uique) 默認是可以為 NULL.
外碼,主碼不能直接加的
主碼這樣:alter table 學生 add constraint 學生主碼 primary key 學生(出生日期)
假如添加外碼:
alter table 學生 add constraint 學生外碼 foreign key 學生(出生日期) references 另一個表名(列名)
不可以同一列主碼外碼同時創建。
⑼ 如何在資料庫中添加欄位
alter table UserLevel add column 欄位名 數據類型如:varchar(6)
⑽ 寫一個oracle資料庫的存儲過程,請表user擴展一個欄位,類型varchar2(48) ,並用游標將
begin
execute immediate 'alter table user add new_columnname varchar2(48)';
for rec in (select * from user)
loop
update user set new_columnname=(並用游標將表user_name中的name更新到擴展的欄位種)
where (id=???)
end loop;
end ;
/
連接關系不太清楚,你試著修改下