1. sql怎麼修改表欄位某列屬性值
sql怎麼修改表欄位某列屬性值
alter table tab_info alter column sRyWork_Pstring varchar(200) not null;
2. sql查詢表中欄位
select * from --主查詢
(select namea=c.name from syscolumns c,sysobjects o where o.id=c.id and o.xtype='u' and o.name='tablea') a--A表中所有欄位
full join --使用全連接
(select nameb=c.name from syscolumns c,sysobjects o where o.id=c.id and o.xtype='u' and o.name='tableb') b--B表中所有欄位
on namea=nameb where namea is null or nameb is null--只保留不同的欄位
查詢結果是,兩表不同的欄位列出,兩表均有的欄位不列:
NAMEA,NAMEB
FIELD1 NULL
FIELD2 NULL
NULL FIELD3
NULL FIELD4
3. sql怎麼修改表欄位的大小
alter table <表名> alter column <欄位名> 新類型名(長度)
示例:假如有名T1,欄位名F1,原來F1為varchar(3),現在要改為varchar(10),則可以這么寫:
alter table T1 alter column F1 varchar(10)
一般地,改欄位名可以用這條語句:
alter table A rename column a to c
但是,實際應用中,我們往往是用J-SQL進行編譯,而J-SQL不支持修改欄位名,所以,如果一定要修改欄位名,那麼只有通過變通的方法了,具體思路為:
1.新建一個欄位,取名為c;
2.將欄位a的內容拷貝到c;
3.刪除欄位a;
sql修改欄位長度的語法:
alter table 表名 modify 欄位名 欄位類型;
sql修改欄位長度的示例代碼
alter table qtline modify qtl_bidernote VARCHAR2(4000);
標准SQL,對任何資料庫都適用
alter table fzrtmis.reporttemplate modify REPNAME varchar(100);
修改欄位名名稱
ALTER TABLE TABLENAME RENAME COLUMN COL1 TO COL2;
添加欄位
alter table fzrtmis.itiembuildqk add STATIONSTATE CHAR(1)
4. sql資料庫 表欄位個數有上限么
SQL創建的元素上限數,欄位(列)1024個/表,欄位個數上限為1024。操作方式如下:
1、首先打開SQL Database Studio。
5. 關於sql查詢語句,由於表欄位較多,很多欄位為空值,查詢數據內容最多的數據
單純用SQL語句,題主這個問題應該沒有更簡便的解決辦法,只能一個一個欄位地進行判斷,然後再選出有最多非空欄位的記錄。例如下列SQL語句:
select a.* from
(select *,
case col_1 is null then 0 else 1 end +
case col_2 is null then 0 else 1 end +
...... +
case col_n is null then 0 else 1 end as vals
from t1) a,
(select max(vals) as max_vals from (select
case col_1 is null then 0 else 1 end +
case col_2 is null then 0 else 1 end +
...... +
case col_n is null then 0 else 1 end as vals
from t1)) b
where a.vals=b.max_vals;
可見SQL語句的確是比較繁瑣,單用SQL解決只能這樣了。如果可能,建議添加一個欄位專門記錄每行記錄有多少個非空欄位數,這樣要查詢擁有最多非空欄位的記錄時就會方便許多。
還可以考慮創建一個可以計算出每行記錄的非空欄位數的自定義函數,然後在SQL語句里引用該函數,選擇返回值最大的記錄就行了,這樣相關SQL語句可被簡化。當然編寫這個自定義函數是要用一些腦筋的。
6. sql表的欄位太多,更新表的時候,sql語句寫起來很復雜,如何解決這個問題
在系統表中查一下待更新的表的欄位信息,如果是SQLServer用syscolumns表,如果是DB2用syscat.columns表,如果是Oracle請使用all_tab_columns。
查出來之後將這些欄位復制到EXCEL,用一個公式生成你要的更新語句,例如="sql=sql & " & A2 & " = '" & B2 & "'" ,最後將公式生成的結果復制到你的代碼中,再稍微改一改就OK了
7. 求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中查詢。