sql insert語句中如何使用變量
sql insert語句中使用變量:
(insert)向表中添加一個新記錄,要使用SQL INSERT 語句。這里有一個如何使用這種語句的例子: INSERT mytable (mycolumn) VALUES ('some data') 這個語句把字符串'some data'插入表mytable的mycolumn字段中。將要被插入數據的字段的名字在第一個括號中指定,實際的數據在第二個括號中給出。
1. INSERT 語句的完整句法如下:INSERT [INTO] {table_name|view_name} [(column_list)] {DEFAULT VALUES |
Values_list | select_statement}
2. 如果一個表有多個字段,通過把字段名和字段值用逗號隔開,可以向所有的字段中插入數據。假設表mytable有三個字段first_column,second_column,和third_column.下面的INSERT語句添加了一條三個字段都有值的完整記錄:INSERT mytable (first_column,second_column,third_column)
VALUES ('some data','some more data','yet more data')
3. 可以使用INSERT語句向文本型字段中插入數據。但是,如果需要輸入很長的字符串,應該使用WRITETEXT語句。
4. 如果在INSERT 語句中只指定兩個字段和數據。向一個表中插入一條新記錄,但有一個字段沒有提供數據。在這種情況下,有下面的四種可能:
1)如果該字段有一個缺省值,該值會被使用。例如,假設插入新記錄時沒有給字段third_column提供數據,而這個字段有一個缺省值'some value'.在這種情況下,當新記錄建立時會插入值'some value'。
2)如果該字段可以接受空值,而且沒有缺省值,則會被插入空值。
3)如果該字段不能接受空值,而且沒有缺省值,就會出現錯誤。會收到錯誤信息:The column in table mytable may not be null.
4)最后,如果該字段是一個標識字段,那么它會自動產生一個新值。當向一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會給自己賦一個新值。
5. 注:向一個有標識字段的表中插入新記錄后,可以用SQL變量@@identity來訪問新記錄 的標識字段的值。考慮如下的SQL語句:
INSERT mytable (first_column) VALUES('some value')
INSERT anothertable(another_first,another_second)
VALUES(@@identity,'some value')
6. 如果表mytable有一個標識字段,該字段的值會被插入表anothertable的another_first字段。這是因為變量@@identity總是保存最后一次插入標識字段的值。
7. 字段another_first應該與字段first_column有相同的數據類型。但是,字段another_first不能是應該標識字段。Another_first字段用來保存字段first_column的值。
SQL 查詢語句如何定義變量
as在SQL中是別名的用法,它可以為表名取別名,也可以為列名取別名,
其作用主要是為了增加可讀性。
示例:為列取別名的兩種寫法
1、字段名 as 別名 注:as 也可以省略
select id as 編號,name as 姓名 from table1
這句也可以寫成:
select id 編號,name 姓名 from table1
2、用等號來使用別名
select 編號=id,姓名=name from table1
其效果和前兩個語句一樣
示例2:為表名取別名的用法
select * 編號,name 姓名 from table1 as a join table2 as b on *=*
其中as 也可以省略。
sql語句 變量賦值
在一個問題中遇到的一段精典動態SQL代碼:declare @fdate datetime declare @sql0 nvarchar(4000) declare @banzhi varchar(4),@num varchar(4),@cur_id intset @cur_id=2497 set @sql0=' SELECT @banzhi=b'+ case when substring(convert(char(10),@fdate,120),9,1)=0 then substring(convert(char(10),@fdate,120),10,1) else substring(convert(char(10),@fdate,120),9,2) end+' FROM kq_paiban'+ ' where empid='''+rtrim(convert(char,@cur_id))+''' and sessionid=(select id from s_session where convert(varchar(7),date0,120)='''+substring(convert(char(10),@fdate,120),1,7)+''')' select (@sql0)--顯示動態構造的SQL語句 --在構造動態SQL語句字符串時,對其中動態部分(比如這里的列名B1,B2[Bi]后面變化的部分i)要先運算出來,還有其中的常量部分,最后將字符串連接成完整語句.exec sp_executesql @sql0,N'@banzhi varchar(4) output',@num output --這里沒有使用EXEC()函數,因為該存儲過程支持嵌入參數.。
關于SQL常用全局變量是什么
全局變量有系統定義和維護。
@@ERROR 最后一個T-SQL錯誤的錯誤號 @@IDENTITY 最后一個插入的標識值 @@LANGUAGE 當前使用語言的名稱 @@MAX_CONNECTIONS 可以創建的同時鏈接的最大數目 @@ROWCOUNT 受上一個SQL語言影響的行數 @@SERVERNAME 本地服務器的名稱 @@SERVICENAME 該計算機上的SQL服務的名稱 @@TIMETICKS 當前計算機上每刻度的微秒數 @@TRANSCOUNT 當前連接打開的事務數 @@VERSION SQL Server的版本信息 示例: print '服務器的名稱:'+@@SERVERNAME //本地服務器名稱 SELECT @@ SERVERNAME AS '服務器名稱' //@@ERROR返回的是整型數值,用convert(varchar (5),@@ERROR)的方式將它轉換為字符串。 INSERT INTO stuInfo(stuName,stuNo,stuSex,stuAge)VALUES('梅超風','s25318','女','23') print '當前錯誤號'+convert(varchar (5),@@ERROR) //如果大于0,表示上一條語句執行有錯誤 print '剛才報名的學員,座位號為:' +convert(varchar (5),@@IDENTITY) UPDATA stuinfo SET stuAge=85 WHERE stuName='李文才' print 'SQL Server 的版本'+@@VERSION GO 輸出結果為 當前錯誤號0 剛才報名的學員,座位號:12 服務器:消息547,級別16,狀態1,行1 UPDATA 語句與COLUMN CHECK 約束'CK_stuAge'沖突。
該沖突發生于數據庫'stuDB',表'stuInfo' 語句終止 當前錯誤號547 SQL Server的版本Microsoft SQL Server 2000-8。00。
2039(Intel X86)。