A. sql 中有哪幾種類型的變數,各自有什麼特點。
bit
整型
bit 數據類型是整型,其值只能是0、1或空值。這種數據類型用於存儲只有兩種可能值的數據,如Yes 或No、True 或Fa lse 、On 或Off
int
整型
int 數據類型可以存儲從- 231(-2147483648)到231(2147483 647)之間的整數。存儲到資料庫的幾乎所有數值型的數據都可以用這種數據類型。這種數據類型在資料庫里佔用4個位元組
smallint
整型
smallint 數據類型可以存儲從- 215(-32768)到215(32767)之間的整數。這種數據類型對存儲一些常限定在特定范圍內的數值型數據非常有用。這種數據類型在資料庫里佔用2 位元組空間
tinyint
整型
tinyint 數據類型能存儲從0到255 之間的整數。它在你只打算存儲有限數目的數值時很有用。 這種數據類型在資料庫中佔用1 個位元組
numeric
精確數值型
numeric數據類型與decimal 型相同
decimal
精確數值型
decimal 數據類型能用來存儲從-1038-1到1038-1的固定精度和范圍的數值型數據。使用這種數據類型時,必須指定范圍和精度。 范圍是小數點左右所能存儲的數字的總位數。精度是小數點右邊存儲的數字的位數
money
貨幣型
money 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-9220億到9220 億之間的數據,精確到貨幣單位的萬分之一
smallmoney
貨幣型
smallmoney 數據類型用來表示錢和貨幣值。這種數據類型能存儲從-214748.3648 到214748.3647 之間的數據,精確到貨幣單位的萬分之一
float
近似數值型
float 數據類型是一種近似數值類型,供浮點數使用。說浮點數是近似的,是因為在其范圍內不是所有的數都能精確表示。浮點數可以是從-1.79E+308到1.79E+308 之間的任意數
real
近似數值型
real 數據類型像浮點數一樣,是近似數值類型。它可以表示數值在-3.40E+38到3.40E+38之間的浮點數
datetime
日期時間型
datetime數據類型用來表示日期和時間。這種數據類型存儲從1753年1月1日到9999年12月3 1日間所有的日期和時間數據, 精確到三百分之一秒或3.33毫秒
Smalldatetime
日期時間型
smalldatetime 數據類型用來表示從1900年1月1日到2079年6月6日間的日期和時間,精確到一分鍾
cursor
特殊數據型
cursor 數據類型是一種特殊的數據類型,它包含一個對游標的引用。這種數據類型用在存儲過程中,而且創建表時不能用
timestamp
特殊數據型
timestamp 數據類型是一種特殊的數據類型,用來創建一個資料庫范圍內的唯一數碼。 一個表中只能有一個timestamp列。每次插入或修改一行時,timestamp列的值都會改變。盡管它的名字中有「time」, 但timestamp列不是人們可識別的日期。在一個資料庫里,timestamp值是唯一的
Uniqueidentifier
特殊數據型
Uniqueidentifier數據類型用來存儲一個全局唯一標識符,即GUID。GUID確實是全局唯一的。這個數幾乎沒有機會在另一個系統中被重建。可以使用NEWID 函數或轉換一個字元串為唯一標識符來初始化具有唯一標識符的列
char
字元型
char數據類型用來存儲指定長度的定長非統一編碼型的數據。當定義一列為此類型時,你必須指定列長。當你總能知道要存儲的數據的長度時,此數據類型很有用。例如,當你按郵政編碼加4個字元格式來存儲數據時,你知道總要用到10個字元。此數據類型的列寬最大為8000 個字元
varchar
字元型
varchar數據類型,同char類型一樣,用來存儲非統一編碼型字元數據。與char 型不一樣,此數據類型為變長。當定義一列為該數據類型時,你要指定該列的最大長度。 它與char數據類型最大的區別是,存儲的長度不是列長,而是數據的長度
text
字元型
text 數據類型用來存儲大量的非統一編碼型字元數據。這種數據類型最多可以有231-1或20億個字元
nchar
統一編碼字元型
nchar 數據類型用來存儲定長統一編碼字元型數據。統一編碼用雙位元組結構來存儲每個字元,而不是用單位元組(普通文本中的情況)。它允許大量的擴展字元。此數據類型能存儲4000種字元,使用的位元組空間上增加了一倍
nvarchar
統一編碼字元型
nvarchar 數據類型用作變長的統一編碼字元型數據。此數據類型能存儲4000種字元,使用的位元組空間增加了一倍
ntext
統一編碼字元型
ntext 數據類型用來存儲大量的統一編碼字元型數據。這種數據類型能存儲230 -1或將近10億個字元,且使用的位元組空間增加了一倍
binary
二進制數據類型
binary數據類型用來存儲可達8000 位元組長的定長的二進制數據。當輸入表的內容接近相同的長度時,你應該使用這種數據類型
varbinary
二進制數據類型
varbinary 數據類型用來存儲可達8000 位元組長的變長的二進制數據。當輸入表的內容大小可變時,你應該使用這種數據類型
image
二進制數據類型
image 數據類型用來存儲變長的二進制數據,最大可達231-1或大約20億位元組
B. sql結果集臨時變數
一條語句就解決..select LogDate, max(value) from Mth_DayLog where LogDate between '2014-03-02 00:00:00.000' and '2014-03-31 00:00:00.000';
C. 什麼是在資料庫定義的一些完成特定功能的SQL語句的集合
應該是存儲過程,它可以在資料庫中通過定義入參,變數,一系列sql語句,比如select,update,insert,delete,利用判斷if,循環loop等操作完成某個功能。
D. SQL中變數的種類及表現形式
MS SQL Server中的變數- -
在SQL中,我們常常使用臨時表來存儲臨時結果,對於結果是一個集合的情況,這種方法非常實用,但當結果僅僅是一個數據或者是幾個數據時,還要去建一個表,顯得就比較麻煩,另外,當一個SQL語句中的某些元素經常變化時,比如選擇條件,(至少我想)應該使用局部變數。當然MS SQL Server的全局變數也很有用。
>>>>局部變數
聲明:DECLARE @local_variable data_type
@local_variable 是變數的名稱。變數名必須以 at 符 (@) 開頭。data_type 是任何由系統提供的或用戶定義的數據類型。變數不能是 text、ntext 或 image 數據類型。
示例:
use master
declare @SEL_TYPE char(2)
declare @SEL_CUNT numeric(10)
set @SEL_TYPE = 'U'/*user table*/
set @SEL_CUNT = 10
/*返回系統中用戶表的數目*/
select @SEL_CUNT = COUNT(*)
from sysobjects
where type = @SEL_TYPE
select @SEL_CUNT as 'User table ''s count'
如果要返回系統表的數目,可以用set @SEL_TYPE = 'S'
可能這個例子並不能說明使用變數的好處,我只是想說明使用方法。當一組(幾個甚至幾十個)SQL語句都使用某個變數時,就能體會到他的好處了。
>>>>全局變數
全局變數是系統預定義的,返回一些系統信息,全局變數以兩個at(@)開頭。下面是我統計了一些較為常用的變數。
@@CONNECTIONS
返回自上次啟動以來連接或試圖連接的次數。
@@CURSOR_ROWS
返回連接上最後打開的游標中當前存在的合格行的數量。
@@DATEFIRST
返回每周第一天的數字
@@ERROR
返回最後執行的SQL 語句的錯誤代碼。
@@FETCH_STATUS
返回被 FETCH 語句執行的最後游標的狀態,而不是任何當前被連接打開的游標的狀態。
@@IDENTITY
返回最後插入的標識值
@@LANGID
返回當前所使用語言的本地語言標識符(ID)。
@@LANGUAGE
返回當前使用的語言名。
@@LOCK_TIMEOUT
返回當前會話的當前鎖超時設置,單位為毫秒。
@@PROCID
返回當前過程的存儲過程標識符 (ID) 。
@@ROWCOUNT
返回受上一語句影響的行數。
@@SERVERNAME
返回運行 的本地伺服器名稱。
@@SPID
返回當前用戶進程的伺服器進程標識符 (ID)。
@@TRANCOUNT
返回當前連接的活動事務數。
@@VERSION
返回當前安裝的日期、版本和處理器類型。
E. asp sql語句表達 有request集合變數
1.表單ckindof集合內是否有"之類的呢?是否有1個以上的表單名字叫ckindof?
2.如果上面2個都不存在,那下面一個是對的,字元需要加',但下面的requst寫錯了,是request,如果那是一個function當我沒說....
F. SQL中全局變數和局部變數的用法
局部變數是用戶可自定義的變數,它的作用范圍僅在程序內部。在程序中通常用來儲存從表中查詢到的數據,或當作程序執行過程中暫存變數使用。局部變數必須以「@」開頭,而且必須先用DECLARE命令說明後才可使用。其說明形式如下:
DECLARE@變數名變數類型[@變數名變數類型…]
其中變數類型可以是sql server(WINDOWS平台上強大的資料庫平台) 2000支持的所有數據類型,也可以是用戶自定義的數據類型。
在Transact-SQL中不能像在一般的程序語言中一樣使用「變數=變數值」來給變數賦值。必須使用SELECT或SET命令來設定變數的值,其語法如下:
SELECT@局部變數=變數值
SET@局部變數=變數值1212
例:聲明一個長度為10 個字元的變數「id」並賦值
declare@idchar(10)
select@id=『10010001』1212
注意:可以在Select命令查詢數據時,在Select命令中直接將列值賦給變數。
例:查詢編號為「10010001」的員工和工資,將其分別賦予變數name和wage
usepangu
declare@namechar(30)@wagemoney
select@name=e_name,@wage=e_wage
fromemployee
whereemp_id='10010001'
select@namease_name,@wagease_wage123456123456
運行結果如下:
e_namee_wage
-----------------------------------------
張三8000.0000123123
注意:資料庫語言和編程語言有一些關鍵字,關鍵字是在某一一樣下能夠促使某一操作發生的字元組合,為避免沖突和產生錯誤,在命令表、列、變數以及其它對象時應避免使用關鍵字。
全局變數
全局變數是sql server(WINDOWS平台上強大的資料庫平台)系統內部使用的變數,其作用范圍並不局限於某一程序,而是任何程序均可隨時調用全局變數通常存儲一些sql server(WINDOWS平台上強大的資料庫平台)的配置設定值和效能統計數據。用戶可在程序中用全局變數來測試系統的設定值或Transact-SQL命令執行後的狀態值。有關sql server(WINDOWS平台上強大的資料庫平台) 全局變數的詳細情況請參見附錄。
注意:全局變數不是由用戶的程序定義的,它們是在伺服器級定應義的。只能使用預先說明及定義的變局變數。引用全局變數時,必須以「@@」開頭。局部變數的名稱不能與全局變數的名稱相同、否則會在應用中出錯。
G. .NET 解析T-SQL語句中集合變數
T-SQL 不支持 此種類型的參數,你需要自己組合SQL字元串來實現
H. 如何在SQL中聲明一個數組變數以及相關SQL語
集合:是具有相同定義的元素的聚合。Oracle有兩種類型的集合:
可變長數組(VARRAY):可以有任意數量的元素,但必須預先定義限制值。
嵌套表:視為表中之表,可以有任意數量的元素,不需要預先定義限制值。
在PL/SQL中是沒有數組(Array)概念的。但是如果程序員想用Array的話,就得變通一下,用TYPE 和Table of Record來代替多維數組,一樣挺好用的。
emp_type 就好象一個table 中的一條record 一樣,裡面有id, name,gender等。emp_type_array 象個table, 裡面含有一條條這樣的record (emp_type),就象多維數組一樣。
--單維數組
DECLARE
TYPE emp_ssn_array IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
best_employees emp_ssn_array;
worst_employees emp_ssn_array;
BEGIN
best_employees(1) := '123456';
best_employees(2) := '888888';
worst_employees(1) := '222222';
worst_employees(2) := '666666';
FOR i IN 1..best_employees.count LOOP
DBMS_OUTPUT.PUT_LINE('i='|| i || ', best_employees= ' ||best_employees(i)
|| ', worst_employees= ' ||worst_employees(i));
END LOOP;
END;
--多維數組
DECLARE
TYPE emp_type IS RECORD
( emp_id employee_table.emp_id%TYPE,
emp_name employee_table.emp_name%TYPE,
emp_gender employee_table.emp_gender%TYPE );
TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;
emp_rec_array emp_type_array;
emp_rec emp_type;
BEGIN
emp_rec.emp_id := 300000000;
emp_rec.emp_name := 'Barbara';
emp_rec.emp_gender := 'Female';
emp_rec_array(1) := emp_rec;
emp_rec.emp_id := 300000008;
emp_rec.emp_name := 'Rick';
emp_rec.emp_gender := 'Male';
emp_rec_array(2) := emp_rec;
FOR i IN 1..emp_rec_array.count LOOP
DBMS_OUTPUT.PUT_LINE('i='||i
||', emp_id ='||emp_rec_array(i).emp_id
||', emp_name ='||emp_rec_array(i).emp_name
||', emp_gender = '||emp_rec_array(i).emp_gender);
END LOOP;
END;
-------------- Result --------------
i=1, emp_id =300000000, emp_name =Barbara, emp_gender = Female
i=2, emp_id =300000008, emp_name =Rick, emp_gender = Male
I. PL/SQL調試的時候 怎麼看集合變數的值
Debug模式下有兩種方式可以查看變數的值(前提需要打斷點):
通過添加Expressions的方式將變數加到固定展示的區域。
當代碼運行到某一行的時候右鍵本行或者上面的變數,inspect(ctrl+shift+I)。或者直接將滑鼠移動到變數上也可以看到變數的值。
J. sql 中如何將 幾個變數組合形成 表名,比如: select * into @ss+'aa'+@bb from table1 如何寫
declare @str varchar(100)
declare @ss varchar(100)
declare @bb varchar(100)
set @ss = 'AA'
set @bb = 'BB'
set @str='select * into '+@ss+'aa'+@bb+' from table1'
exec(@str)
看看能幫到你么