A. 資料庫中的序列是什麼具體概念
序列(SEQUENCE)是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(類型為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下一個值。創建序列需要CREATE SEQUENCE系統許可權。序列的創建語法如下: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; INCREMENT BY 用於定義序列的步長,如果省略,則默認為1,如果出現負值,則代表序列的值是按照此步長遞減的。 START WITH 定義序列的初始值(即產生的第一個值),默認為1。 MAXVALUE 定義序列生成器能產生的最大值。選項NOMAXVALUE是默認選項,代表沒有最大值定義,這時對於遞增序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。 MINVALUE定義序列生成器能產生的最小值 ...
B. oracle怎麼實現id自增和設置主鍵啊
可以使用序列實現id自增,主鍵的語法為primary key。
當一個序列第一次被查詢調用時,它將返回一個預定值。在隨後的每次查詢中,序列將產生一個按指定的增量增長的值。序列可以循環,或者是連續增加的,直到指定的最大值為止。
創建序列語法如下:create sequence [模式]序頌慧列名稱[start with 起始數字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 數目|nocache][order|noorder]。
具體代碼示例如下:
創野耐答建表
create table book(
bookId varchar2(4) primary key,
name varchar2(20)
);
創建序列
create sequence book_seq start with 1 increment by 1;
創建觸發器
create or replace trigger book_trigger
before insert on book
for each row
begin
select book_seq.nextval into :new.bookId from al;
end ;
添加數據
insert into book(name) values ('cc');
insert into book(name) values ('dd');
commit;
(2)資料庫中訪問序列擴展閱讀:
在數據表中,有時候需要主鍵值自動增加,但在Oracle資料庫中,沒有象Mysql的Autoincrement一樣自動增長的數據類型。在實現Oracle資料庫欄位自增功能時,利用DML觸發器來完成。
觸發器(trigger)是一些過程,當發生畝前一個特定的資料庫事件時就執行這些過程,可以使用觸發器擴充引用的完整性。DML即數據操縱語言,用於讓用戶或程序員使用,實現對資料庫中數據的操作。基本的數據操作分成兩類四種:檢索(查詢)和更新(插入、刪除、修改)。
觸發器類似於函數和過程,其在資料庫中以獨立身分存在。觸發事件可以是對資料庫表的DML(insert、update或delete)操作等。
C. Oracle資料庫中nextval和values代表什麼意思
可以通過在 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:
在分段存儲表達式中
在對另一個資料庫中的遠程序列對象的引用中。
示例
在下面的例子中,假設沒有其它用戶並發地訪問序列並且用戶連續執行語句。
D. postgresql資料庫怎麼查詢所有的序列名
1、在查詢的時候一般使用*查詢代表查詢所有欄位信息,但表太大就不建議使用這種方式。
E. 資料庫裡面序列,視圖和索引是什麼
視圖可以被看成是虛擬表或存儲查詢。可通過視圖訪問的數據不作為獨特的對象存儲在資料庫內。資料庫內存儲的是 SELECT 語句。SELECT 語句的結果集構成視圖所返回的虛擬表。用戶可以用引用表時所使用的方法,在 Transact-SQL 語句中通過引用視圖名稱來使用虛擬表。拆喚使用視圖可以實現下列任一或所有功能戚滾:
將用戶限定在表中的特定行上。
例如,只允許雇員看見工作跟蹤表內記錄其工作的行。
將用戶限定在特定列上。
例如,對於那些不負責處理工資單的雇員,只允許他們看見雇員表中的姓名列、辦公室列、工作電話列和部門列,而不能看見任何包含工資信息或個人信息的列。
將多個表中的列聯接起來,使它們看起來象一個表。
聚合信息而非提供詳細信息。
例如,顯示一個列的和,或列的最大值和最小值。
------------------
資料庫中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查找所需信息,無須閱讀整本書。在資料庫中,索引使資料庫程序無須對整個表進行掃描,就可以在其中找到所需旅仔凱數據。
------------------
存儲過程可以使得對資料庫的管理、以及顯示關於資料庫及其用戶信息的工作容易得多。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲並作為一個單元處理。存儲過程存儲在資料庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其它強大的編程功能。
存儲過程可包含程序流、邏輯以及對資料庫的查詢。它們可以接受參數、輸出參數、返回單個或多個結果集以及返回值。
可以出於任何使用 SQL 語句的目的來使用存儲過程,它具有以下優點:
可以在單個存儲過程中執行一系列 SQL 語句。
可以從自己的存儲過程內引用其它存儲過程,這可以簡化一系列復雜語句。
存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快。
F. 頁面訪問序列是什麼
頁面訪問的序列是一個整數序列,需要我們編寫函數棗野生成,要求整數配岩信的取值范圍培輪為0-N-1。
G. 數據結構中,如何通過訪問次序確定對應的樹
先根GFKDAIEBCHJ
後跟DIAEKFCJHBG
由於先根的第一個是G,表示根節點是G
再分層
先根的第二個是F,那麼後根F及其以前的元素(DIAEKF)都是左子樹的節點,以後的(CJHB)都是右子樹的節點,再把子樹按遞歸的方法展開
一般來說,知道先根和後根序列,二叉樹可能不唯一,但是知道先中根,中後根,二叉樹就唯一
H. DB2資料庫中的序列和觸發器
Berkeley DB (DB)是一個高性能的,嵌入資料庫編程庫,和C語言,C++,Java,Perl,Python,PHP,Tcl以及其他很多語言都有綁定。Berkeley DB可以保存任意類型的鍵/值對,而且可以為一個鍵保存多個數據。Berkeley DB可以支持數千的並發線程同時操作資料庫,支持最大256TB的數據,廣泛用於各種操作系統包括大多數Unix類操作系統和Windows操作系統以及實時操作系統。 2.0版本或以上的Berkeley DB由Sleepycat Software公司開發,並使用基於自由軟體許可協議/私有許可協議的雙重授權方式提供[1],附有源代碼。開發者如果想把Berkeley DB嵌入在私有軟體內需要得到Sleepycat公司的許可,若將軟體同樣遵循GPL發布,則不需許可即可使用。而2.0版本以下的則使用BSD授權,可自由作商業用途。 Berkeley DB最初開發的目的是以新的HASH訪問演算法來代替舊的hsearch函數和大量的dbm實現(如AT&T的dbm,Berkeley的 ndbm,GNU項目的gdbm),Berkeley DB的第一個發行版在1991年出現,當時還包含了B+樹數據訪問演算法。在1992年,BSD UNIX第4.4發行版中包含了Berkeley DB1.85版。基本上認為這是Berkeley DB的第一個正式版。在1996年中期,Sleepycat軟體公司成立,提供對Berkeley DB的商業支持。在這以後,Berkeley DB得到了廣泛的應用,成為一款獨樹一幟的嵌入式資料庫系統。2006年Sleepycat公司被Oracle 公司收購,Berkeley DB成為Oracle資料庫家族的一員,Sleepycat原有開發者繼續在Oracle開發Berkeley DB,Oracle繼續原來的授權方式並且加大了對Berkeley DB的開發力度,繼續提升了Berkeley DB在軟體行業的聲譽。Berkeley DB的當前最新發行版本是4.7.25。 值得注意的是DB是嵌入式資料庫系統,而不是常見的關系/對象型資料庫,對SQL語言不支持,也不提供資料庫常見的高級功能,如存儲過程,觸發器等。 Berkeley DB的體系結構Berkeley DB以擁有比Microsoft SQL Server和Oracle等資料庫系統而言更簡單的體系結構而著稱。例如,它不支持網路訪問—程序通過進程內的API訪問資料庫。 他不支持SQL或者其他的資料庫查詢語言,不支持表結構和數據列。 訪問資料庫的程序自主決定數據如何儲存在記錄里,Berkeley DB不對記錄里的數據進行任何包裝,每個記錄有且只有兩部分:鍵、值,所以在Berkeley DB的背景下通常用key/data pair指代一個記錄。記錄和它的鍵都可以達到4G位元組的長度。 盡管架構很簡單,Berkeley DB卻支持很多高級的資料庫特性,比如ACID 資料庫事務處理,細粒度鎖,XA介面,熱備份以及同步復制。 Berkeley DB包含有與某些經典Unix資料庫編程庫兼容的介面,包括:dbm,ndbm和hsearch。Berkeley DB的核心數據結構資料庫環境句柄DB_ENV: 每個DB_ENV相當於一個資料庫,它包含了資料庫全局信息,比如緩沖區大小、以及對事務、日誌、鎖等子系統的全局配置信息。資料庫句柄結構DB:每個DB相當於關系資料庫的一個表,其中存儲了很多key/data pair。DB句柄代表了一個包含了若干描述資料庫表屬性的參數,如資料庫訪問方法類型、邏輯頁面大小、資料庫名稱等;同時,DB結構中包含了大量的資料庫處理函數指針,大多數形式為 (*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函數。 資料庫記錄結構DBT:DB中的記錄由關鍵字和數據構成,關鍵字和數據都用結構DBT表示。實際上完全可以把關鍵字看成特殊的數據。結構中最重要的兩個欄位是 void * data和u_int32_t size,分別對應數據本身和數據的長度。 資料庫游標結構DBC:游標(cursor)是資料庫應用中常見概念,其本質
I. Oracle資料庫怎麼手動添加序列
創建純仔序列
CREATE SEQUENCE SEQUENCE_NAME
START WITH 10
INCREMENT BY 10
MAXVALUE 2000
MINVALUE 10
NOCYCLE
CACHE 10
•通過序列的偽列來訪問序列的值
–SEQUENCE_NAME.NEXTVAL
返回序列坦褲鏈的讓孫下一個值
–SEQUENCE_NAME.CURRVAL
返回序列的當前值
J. postgresql資料庫怎麼查詢所有的序列名
postgresql中一個序列對象通常用於為行或者表生成唯一的標識符。
查看序列:
psql 的 \d 命令輸出一個資料庫對象,包括 Sequence,表,視圖和索引。你還可以使用 \ds 命令只查看當前資料庫的所有序列。例如:
pigdb-# \ds
List of relations
Schema | Name | Type | Owner
--------+-----------------------+----------+--------
public | author_ids | sequence | ichexw
public | shipments_ship_id_seq | sequence | ichexw
(2 rows)