資料庫value和values的區別

時間 2021-08-11 18:10:21

1樓:

value和values都可以表示是多行值的集合

values還有更巧妙的用法,不使用永久表或臨時表而表示一個結果集,而且不需要函式或表變數。看下面的例子:

--this sql is only for sql server 2008

select dname,dcode,ddate

from

(values

('demoa','aaa',getdate()),

('demob','bbb',getdate()),

('democ','ccc',getdate()),

('demod','ddd',getdate()),

('demoe','eee',getdate())

)demo_values (dname,dcode,ddate)

--(5 row(s) affected)

/*dname dcode ddate

demoa aaa 2010-10-12 20:37:45.500

demob bbb 2010-10-12 20:37:45.500

democ ccc 2010-10-12 20:37:45.500

demod ddd 2010-10-12 20:37:45.500

demoe eee 2010-10-12 20:37:45.500

*/注意該語句的最後一行定義了「源」名稱和列名,其中列名用於select語句。

2樓:

value是值,values 是多個值的集合

value並不是一個合法的t-sql關鍵字

oracle資料庫中nextval和values代表什麼意思

3樓:匿名使用者

可以通過在 sql 語句中使用 nextval 或 currval 運算子來訪問序列的值。必須用以 sequence.nextval 或 sequence.

currval 格式駐留在同一個資料庫中的序列名稱(或同義詞)來限定 nextval 或 currval。表示式也可以用所有者名來限定序列,如 zelaine.myseq.

currval。可以指定 sequence 的 sql 標識或有效同義詞(如果存在的話)。

在符合 ansi 的資料庫中,如果您不是所有者,必須用所有者名(owner.sequence)限定序列名。

要對序列使用 nextval 或 currval,必須對序列具有選擇特權或對資料庫具有 dba 特權。關於序列級特權的資訊,請參閱 grant 語句。

使用 nextval

第一次訪問一個序列,在引用 sequence.currval 之前必須先引用 sequence.nextval。

第一次引用 nextval,返回序列的初始值。後面每次引用 nextval,用已定義的 step 增加序列值並返回序列新的增加以後的值。

在一個 sql 語句中只能對給定的序列增加一次。即使在一個語句中多次指定 sequence.nextval,序列也只增加一次,所以每次 sequence.

nextval 出現在同一 sql 語句中返回相同的值。

除了在同一語句中多次出現這種情況以外,每個 sequence.nextval 表示式都會增加序列,無論後來是否提交或回滾當前事務。

如果在最終回滾的事務中指定 sequence.nextval,某些序列數可能被跳過。

使用 currval

任何對 currval 的引用返回指定序列的當前值,該值是最後一次對 nextval 的引用所返回的值。用 nextval 生成一個新值以後,可以繼續使用 currval 訪問這個值,不管另一個使用者是否增加這個序列。

如果 sequence.currval 和 sequence.nextval 都出現在一個 sql 語句中,則序列只增加一次。

在這種情況下,每個 sequence.currval 和 sequence.nextval 表示式都返回相同的值,不管在語句中 sequence.

currval 和 sequence.nextval 的順序。

序列的併發訪問

序列總是在資料庫中生成唯一值,即使當多個使用者併發地引用同一序列時也沒有可察覺的等待或鎖定。當多個使用者使用 nextval 來增長序列時,每個使用者生成一個其他使用者不可見的唯一值。

當多個使用者併發地增加同一序列時,每個使用者看到的值是有差異的。例如,一個使用者可能從一個序列生成一組值,如 1、4、6 和 8,而另一個使用者併發地從同一序列生成值 2、3、5 和 7。

限制nextval 和 currval 只在 sql 語句中有效,並不在 spl 語句中直接有效。(但是使用 nextval 和 currval 的 sql 語句可用於 spl 例程。)以下限制應用於 sql 語句中的這些運算子:

必須對序列有選擇特權。

在 create table 或 alter table 語句中,在下列上下文中不能指定 nextval 或 currval:

在 default 子句中

在檢查約束中。

在 select 語句中,下列上下文中不能指定 nextval 或 currval:

使用 distinct 關鍵字時在投影列表中。

在 where、group by 或 order by 子句中

在子查詢中

在 union 運算子結合 select 語句時。

在下列這些上下文中也不能指定 nextval 或 currval:

在分段儲存表示式中

在對另一個資料庫中的遠端序列物件的引用中。

示例在下面的例子中,假設沒有其它使用者併發地訪問序列並且使用者連續執行語句。

4樓:匿名使用者

1.nextval與序列關聯,表示下一個,如:

建立裡一個序列seq_1:#序列一般表示第幾行,起標識作用

create sequence seq_1 increment by 1 start with 1

在表中使用此序列:

insert into a values (seq_1.nextval, 'lewis', 'clerk',7902, sysdate, 1200, null, 20);

2.values與insert 連用,標示插入的欄位值,如:

有一個表 a,a有三個欄位:name,age,***,都是archar2型別的,則往表中插入資料語句為:

insert into a values ('name','age','woman')

sql資料庫和oracle資料庫哪個好

兄弟,聽我的。肯定學習oracle。原因 1 oracle是商用的最廣泛的關係型資料庫管理系統,廣泛應用於銀行 電信 電力 社保等各個領域。特別是對於unix和linux平臺,sqlserver怎麼用啊?我想你學習,肯定為了將來應用,或者工作,你的簡歷裡面寫oracle和sqlserver完全是不一...

sql2019資料庫還原資料庫提示資料庫不一致的問題

進入查詢分析器中,選擇所使用的資料庫,並檢查該資料庫是否存在錯誤。可以看到該資料庫存在4個分配錯誤和1個一致性錯誤。為你實際要處理 的資料庫.發現錯誤後要開始修復,所使用語句下 sp dboption dbname single user true 把資料庫置為單使用者模式dbcc checkdb ...

資料庫問題 關於大型資料庫

sql server是一定要的,庫到是可以在你開發的機器上把庫備份下來然後去要使用的地方還原,否則重新建庫使用者儲存過程和涵數都是沒有的。acess因為是ms office自帶了,其實安裝office就一同安裝了所以不需要再安。連線不上的原因多辦在沒有裝資料庫或者企業管理器中資料庫沒有建立好,另外在...