99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀使用數(shù)據(jù)庫(kù)序列生成主鍵
使用數(shù)據(jù)庫(kù)序列生成主鍵
2017-12-25
收藏

使用數(shù)據(jù)庫(kù)序列生成主鍵

一,什么是序列
    序列(SEQUENCE)是序列號(hào)生成器,可以為表中的行自動(dòng)生成序列號(hào),產(chǎn)生一組等間隔的數(shù)值(類型為數(shù)字)。其主要
的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。

創(chuàng)建序列需要CREATE SEQUENCE系統(tǒng)權(quán)限。序列的創(chuàng)建語法如下:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];

創(chuàng)建一個(gè)名稱為:SEQUENCE_PARAMID 的序列:
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;

INCREMENT BY 用于定義序列的步長(zhǎng),如果省略,則默認(rèn)為1,如果出現(xiàn)負(fù)值,則代表序列的值是按照此步長(zhǎng)遞減的。 START WITH 定義序列的初始值(即產(chǎn)生的第一個(gè)值),默認(rèn)為1。 MAXVALUE 定義序列生成器能產(chǎn)生的最大值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒有最大值定義,這時(shí)對(duì)于遞增序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對(duì)于遞減序列,最大值是-1。 MINVALUE定義序列生成器能產(chǎn)生的最小值 ...
    在Oracle數(shù)據(jù)庫(kù)中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其實(shí)是序列號(hào)生成器,可以為表中的行自動(dòng)
生成序列號(hào),產(chǎn)生一組等間隔的數(shù)值(類型為數(shù)字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通
過查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。

二,使用序列生成主鍵
    創(chuàng)建一個(gè)序列以后,如何使用這個(gè)序列,生成主鍵呢?我們獲取序列的NEXTVAL就可以了,具體還要結(jié)合使用場(chǎng)景。
假如我們?cè)贗NSERT語句中使用序列生成主鍵,只需要把SEQUENCE_PARAMID.NEXTVAL作為值,傳遞給主鍵字段就可以了。
假如我們想獲取這個(gè)值,在程序中使用,我們可以通過下面的語句:SELECT SEQUENCE_PARAMID.NEXTVAL FROM DUAL;
    和自增長(zhǎng)的方式相比,序列具有更好的靈活性,可以根據(jù)需要設(shè)置的主鍵的長(zhǎng)度。而使用自增長(zhǎng)的方式,缺乏靈活
性,總是從1開始,每次遞增1,我們沒法控制。
三,實(shí)戰(zhàn)演示
1,創(chuàng)建序列
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;
2,創(chuàng)建數(shù)據(jù)庫(kù)表
CREATE TABLE YY_PRODUCT(
    PRODUCT_ID VARCHAR(18) NOT NULL,    -- 由于是主鍵,是唯一的,因此不用再加上unique關(guān)鍵字
    PRODUCT_NAME VARCHAR(100) NOT NULL,
    PRIMARY KEY(PRODUCT_ID)             -- 把PRODUCT_ID 設(shè)置為主鍵
);
3,數(shù)據(jù)庫(kù)插入操作
INSERT INTO YY_PRODUCT(
    PRODUCT_ID,
    PRODUCT_NAME
)
VALUES(
    sequence_paramId.nextval,
    '秋冬女士打底褲加絨加厚'
);
OK,一個(gè)簡(jiǎn)單的應(yīng)用就是這樣的,趕緊試試吧。這里補(bǔ)充說明一點(diǎn),很多人會(huì)問,為什么你寫SQL語句都用大寫字母呢,
因?yàn)镺RACLE和DB2數(shù)據(jù)庫(kù),在對(duì)SQL進(jìn)行編譯時(shí),會(huì)把SQL轉(zhuǎn)換成大寫,我們都使用大寫,數(shù)據(jù)庫(kù)就減少了一個(gè)轉(zhuǎn)換的
過程,這樣可以提高SQL的執(zhí)行效率。雖然對(duì)效率的提升不大,但相對(duì)而言,效率是有提升的。書寫高效的SQL,必須要
從細(xì)節(jié)著手。正所謂:不積跬步無以至千里。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }