1. 我想在sql server中使用自增序列,怎麼使用
1、跡源SQL Server 可以在表中直接設定某個欄位為自增序列欄位,來得比ORACLE容易得多,具體操作參看下圖:
(當然,也可以使用建表語句或修改表的語句來實現。)
相關知識點延伸:
1、MS SQL 沒有特定的 al 表,也沒有系統級的sequence。
2、Sequence是資料庫系統的特性,有的資料庫實現了Sequence,有的則沒有。比如Oracle、DB2、PostgreSQL資料庫實現Sequence,MySQL、SQL Server、Sybase等資料庫沒有Sequence。
3、但這並不表明MS SQL或ORACLE哪一個差,只是實橘州空現的思維方式,理念上的差別。
4、正是因為這兩個資料庫在思維、理念上有很多的差別,所以,雖圓瞎然這兩個是使用得最多的大型資料庫,但針對Oracle設計的中大型資料庫非常難移植到MS SQL上,反過來也是一樣,要想移植,其工作量往往接近於重寫。
2. 利用SQL語句自動生成序列號:SELECT (@i :=@i + 1)
@i:=@i+1表示序號依次加1
後面的查詢SELECT @i := 0是為了將i進行初始化每次查詢的序列號都會從1開始進行排序生成序列號
用SQL語句可以這樣寫就能生成序列號: select(@i:=@i+1)as 序號 from (select @i:=0) as i
SELECT (@i:=@i+1) 序號 , name as 所屬組織,resource as 單位 FROM cx_external_resources , (SELECT @i:=0) as i
3. SQL裡面如何插入自動增長序列號欄位
INSERT時如果要用到從1開始自動增長的數字做唯一關鍵字,
應該先建立一個序列號.CREATE
SEQUENCE
序列號的名稱
(最好是表名+序列號標記)
INCREMENT
BY
1
START
WITH
1
MAXVALUE
99999
NOCYCLE
NOCACHE;其中最大的值按欄位的長度來定,比如定義的自動增長的序列NUMBER(6)
,
最大值為999999INSERT
語句插入這個欄位值為:
序列號的名稱.NEXTVAL例子:
SQL>
insert
into
s_dept(id,
name,
region_id)
values
(s_dept_id.nextval,
『finance』,
2);1
row
created.只有運行了序列號的名稱.
nextval後序列號的名稱.
currval
才有效才有值.
4. SQL語句 自動生成序列
參考:http://..com/question/44614954.html
或者搜索sql字元串格式化。。慎老。
對於數字,租孝掘可以使用這弊核種方法
5. sql 怎麼進行排序 自動生成的序列
如果你用的是sql2005的話,你可以用消培下面爛答這句select * ,ROW_NUMBER() OVER (ORDER BY 成績 desc) AS 'pm' from 表拿歷唯
6. sql 查詢語句自動增加序號
.使用臨時表實現
SQL的IDENTITY函數可以提供自增的序號,但只能用在帶有INTO table子句的SELECT語句中,所以如果可以使用臨時表的情況下可以使用這種實現方法。
eg:
SELECT IDENTITY(INT,1,1) as seq,field1,field2,...,fieldn INTO tmpTableName FROM srcTableName;
SELECT * FROM tmpTableName;
DROP TABLE tmpTableName;
7. sql怎樣設置屬性不用填id讓它自動排序(1-2-3-4-------等)
將id列設成自增長序列,設置的方法有兩種:
CREATESEQUENCE自增長序列名稱--例如ID列可以設為ID_SQ,名稱一點要按這樣的規則設置
INCREMENTBY1--每次加幾個
STARTWITH1--從1開始計數
NOMAXVALUE--不設置最大值
NOCYCLE--一直累加,不循環
NOCACHE--不建緩沖區
;
另一種是在plsql中,右擊sequence新建,如圖:
設置的參數和名稱參照第一種方式。
8. 在SQL SERVER 2000中通過SELECT自動生成序列號的方法或者通過 UNION ALL 實現分頁.
1.生成標識列.前提行數是你所查詢的表沒有標識列
select *, record= identity(int,1,1) into #t from 表名
select * from #t
drop table #t
2.union all 分頁
select * into #tt from 表1 union all select * from 表2
SELECT TOP 每頁大小 * FROM #tt where WHERE (ID NOT IN (SELECT TOP 每頁大小*當前頁數,id FROM #tt ORDER BY id))
select * from #tt
drop table #tt
3.關於表變數
在查詢分析器里運行下以代碼:
use pubs
declare @t table(myid int IDENTITY(1, 1),au_id nvarchar(255), au_lname nvarchar(255))
INSERT INTO @t(au_id, au_lname) SELECT au_id, au_lname FROM authors
select * from @t
要是回答的內容有問題,或認為不妥,請發送百檔孝首度消息給我,消息內容慎派加上本頁網址哦。。
·
9. sql資料庫建表時如何實現自動編號
Oracle
不直接支持 自動遞增的列。
需要創建一個序列 SEQUENCE。
又由於無法在列的默認值那裡,設置默認值為序列。因此只能通過觸發器橘哪來設置。
SQL> CREATE SEQUENCE test_sequence2
2 increment by 1 -- 每次遞增1
3 start with 1 -- 從1開始
4 nomaxvalue -- 沒有最大值
5 minvalue 1 -- 最小圓帆碼值=1
6 NOCYCLE; -- 不循環
Sequence created.
SQL> CREATE TABLE test_create_tab2 (
2 id INT,
3 val VARCHAR(10),
4 PRIMARY KEY (id)
5 );
Table created.
SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert
2 BEFORE INSERT ON test_create_tab2
3 FOR EACH ROW
4 BEGIN
5 SELECT test_sequence2.nextval INTO :new.id FROM al;
6 END;
7 /
Trigger created
SQL Server
通過 IDENTITY 來設置
參數有2個,一個是「初始值」轎跡 一個是「增量」。
1> CREATE TABLE test_create_tab2 (
2> id INT IDENTITY(1, 1) PRIMARY KEY,
3> val VARCHAR(10)
4> );
5> go
MySQL
通過
AUTO_INCREMENT設置
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
10. 在sqlserver2008中如何根據年份和單位機構碼自動生成序列號
會寫一個存儲過程嗎?
寫觸發它嗎?
如果你能看懂下面的代碼可以做到的,否則,你需要看這本書的存儲過程。
GO
CREATE FUNCTION V_GetStr
(SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON
的的_at_數字解釋 - 中位數(范圍1-32)
值int - 所需的值
)
RETURNS數據類型的數據類型為varchar(32)
「啟動
DECLARE @ R的數據類型為varchar(16)
DECLARE的_at_ R2數據類型為varchar(16)
聲明@ R3的數據類型為varchar(32)
DECLARE _at_ R4數據類型為varchar(32)
>>選擇_at_ R = '0000000000000000'
選擇@ R2 =選擇_at_ R3 = @ R _at_值
+ _at_ R2
選擇@ R4 = RIGHT(@ R3,@位)
回報(_at_ R4)
END GO
- 調用示例(長度10),呼籲關注以下存儲過程完成
- 報告:的_at_ IDme數據類型為varchar(16)
- 選擇:_at_ IDme(選擇「beyczyxx.ID地方從beyczyxx beyczyxx.ID = 1),
- 以選擇DBO V_GetStr的(10 _at_ IDme)。