天天看點

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字

2022找工作是學曆、能力和運氣的超強結合體,遇到寒冬,大廠不招人,可能很多算法學生都得去找開發,測開

測開的話,你就得學資料庫,sql,oracle,尤其sql要學,當然,像很多金融企業、安全機構啥的,他們必須要用oracle資料庫

這oracle比sql安全,強大多了,是以你需要學習,最重要的,你要是考網絡警察公務員,這玩意你不會就别去報名了,耽誤時間!

oracle系列文章:

【1】Oracle資料庫:啥是oracle資料庫?你為啥要學oracle?

【2】Oracle資料庫:oracle 11g安裝教程,已安裝好的oracle各個檔案夾的作用,oracle使用者權限怎麼樣

【3】Oracle資料庫:oracle啟動,oracle用戶端工具plsql安裝教程和使用方法

【4】Oracle資料庫:建立表空間,建立新使用者,給使用者配置設定對象、角色和系統權限,登入新使用者建表

【5】Oracle資料庫:連結配置,包括sqlnet.ora裡面的transnames.ora配置資料庫辨別符SID,listener暫時簡單了解

【6】Oracle資料庫:net configureation assistant工具配置監聽listener,配置本地網絡通路伺服器上的資料庫

【7】Oracle資料庫:oracle字元類型、數字類型、建立表表名的命名規則

【8】Oracle資料庫:限制條件:主鍵限制、唯一限制、檢查限制、非空限制、外鍵限制、預設值填寫

【9】Oracle資料庫:表的關系:一對多,一對一,多對多,一一繼承和修改的關系,表不是重點,重點是資料和限制關系

【10】Oracle資料庫:sql語言結構,資料查詢語言DQL,select * from table;算術,别名,連接配接,去重等操作

【11】Oracle資料庫:限制行限制where語句,判斷條件,比較條件,字元串日期格式,in,like,escape,null語句

【12】Oracle資料庫:邏輯運算and,or,not和各種運算的優先級控制

【13】Oracle資料庫:排序order by語句,select from where order by的執行先後順序,各種樣例

【14】Oracle資料庫:oracle函數,單行函數,多行函數,upper,lower,initcap,字元串函數

【15】Oracle資料庫:數字函數,日期函數,round,trunc,mod,months_between,add_months,next_day,last_day,sysdate

【16】Oracle資料庫:oracle資料類型轉換to_char()日期和數字轉字元,to_number()字元轉數字,to_date()字元轉日期函數

【17】Oracle資料庫:oracle函數嵌套,nvl函數,nvl2函數,nullif函數,coalesce合并函數

【18】Oracle資料庫:條件表達式case when then else end,decode函數,oracle單行函數練習示例

【19】Oracle資料庫:oracle多表查詢,等值連接配接,非等值連接配接,自連接配接的sql語句和規則

【20】Oracle資料庫:oracle外連接配接left/right/full outer join on,oracle擴充的左右外連接配接展示符号(+)

【21】Oracle資料庫:自然連接配接natural join,using語句,注意避免寫交叉連接配接

【22】Oracle資料庫:oracle内連接配接inner join on,多表查詢各種自連結、内連接配接、外連接配接的練習示例

【23】Oracle資料庫:oracle組函數,聚合函數,多行函數,avg,sum,min,max,count,group by,having

【24】Oracle資料庫:oracle嵌套分組函數(聚合函數),組函數的練習題,挺複雜的,用好decode函數,很有趣

【25】Oracle資料庫:子查詢、單行子查詢,多行子查詢,in,any,all語句,子查詢的練習案例

————前面這些都是資料庫查詢語言的重要知識,一定要牢牢掌握和熟悉

後面的相對簡單一點

【26】Oracle資料庫:資料庫操縱語言DML,插入insert into where,更新update where,删除delete where

【27】Oracle資料庫:oracle事務處理語言TCL,commit,rollback,savepoint語句

【28】Oracle資料庫:oracle資料定義語言DDL,查詢表、序列、索引、視圖、建立表,修改表的列alter,rename to,删除表資料truncate和表drop

【29】Oracle資料庫:oracle用指令定義非空not null,unique唯一性,主鍵primary key,外鍵foreign key,check檢查,啟用enable,禁用disable限制

【30】Oracle資料庫:建立和删除視圖view,簡單和複雜視圖,内建視圖,topN分析,oracle分頁查詢

文章目錄

  • Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字
    • @[TOC](文章目錄)
  • oracle序列
  • 建立序列:ddl語句搞
  • 怎麼查序列呢?在user_sequences的資料字典表中
  • 怎麼用序列呢?nextval,currval
  • 修改序列
  • 删除序列
  • 總結

oracle序列

和表一樣

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

id列,整數類型的主鍵

這樣可以生成序列來維護主鍵

資料庫包保證它是唯一的

這個主鍵很難自己去避免重複的,最好資料庫自己搞

它自動去維護序列簡單多了

我們就可以解脫了,美滋滋

多個表都可以用統一個序列,1,2,3,4,5

仨表中的id就不會是連續的,比如A1,B2,C3,表内是無法連續,但是沒關系,我們要的是不重複,無所謂的

建立序列:ddl語句搞

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

index = next(index)

循環遞推下标

好說

緩存優點:性能快,但是資料庫關閉之後,緩存就沒了哦,又要重新啟動的話,對序列造成浪費

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
SQL> create sequence dept_seq increment by 10 start with 120 maxvalue 9999 nocache nocycle;

Sequence created
           

序列沒法檢視

SQL> desc dept_seq;
A sequence cannot be described.
           
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

你在序列檔案夾下new也可以建立序列

owner是HR

起點120

名字dept_seq2

minvalue

maxvalue

increment by 10

cache size

不寫就不管了

預設20哦

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

你直接檢視view sql指令

-- Create sequence 
create sequence DEPT_SEQ2
minvalue 1
maxvalue 9999
start with 120
increment by 10
nocache;

           

預設Nocycle

跟咱們手動寫指令一個樣

很簡單的

怎麼查序列呢?在user_sequences的資料字典表中

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
SQL> select us.SEQUENCE_NAME,us.INCREMENT_BY,us.MAX_VALUE,us.MIN_VALUE,us.CYCLE_FLAG,us.CACHE_SIZE,us.LAST_NUMBER from user_sequences us;

SEQUENCE_NAME                  INCREMENT_BY  MAX_VALUE  MIN_VALUE CYCLE_FLAG CACHE_SIZE LAST_NUMBER
------------------------------ ------------ ---------- ---------- ---------- ---------- -----------
DEPARTMENTS_SEQ                          10       9990          1 N                   0         280
DEPT_SEQ                                 10       9999          1 N                   0         120
DEPT_SEQ2                                10       9999          1 N                   0         120
EMPLOYEES_SEQ                             1       1E28          1 N                   0         207
LOCATIONS_SEQ                           100       9900          1 N                   0        3300

           

為啥起點叫last_number

next_number 呢

因為第一次去1

下一次就是取120呗

就這麼來的

怎麼用序列呢?nextval,currval

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

我們建立搞個案例來玩

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

我們起個名字,預設其他的東西

開始為1

新增為1

區間1–無窮

SQL> select test_seq.nextval from dual;

   NEXTVAL
----------
         1

SQL> select test_seq.curval from dual;
select test_seq.curval from dual

ORA-00904: "TEST_SEQ"."CURVAL": 辨別符無效

SQL> select test_seq.currval from dual;

   CURRVAL
----------
         1

SQL> select test_seq.currval from dual;

   CURRVAL
----------
         1
           

nextval就是你目前沒用過的有效下一個序列值

currval就是目前最新産生過的序列值

SQL> select test_seq.nextval from dual;

   NEXTVAL
----------
         2

SQL> select test_seq.currval from dual;

   CURRVAL
----------
         2
           

是以整主鍵的話,那就是用nextval

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
SQL> desc departments;
Name            Type         Nullable Default Comments                                                                                                                                                                                 
--------------- ------------ -------- ------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
DEPARTMENT_ID   NUMBER(4)                     Primary key column of departments table.                                                                                                                                                 
DEPARTMENT_NAME VARCHAR2(30)                  A not null column that shows name of a department. Administration,
Marketing, Purchasing, Human Resources, Shipping, IT, Executive, Public
Relations, Sales, Finance, and Accounting.  
MANAGER_ID      NUMBER(6)    Y                Manager_id of a department. Foreign key to employee_id column of employees table. The manager_id column of the employee table references this column.                                    
LOCATION_ID     NUMBER(4)    Y                Location id where a department is located. Foreign key to location_id column of locations table.                                                                                         

           

DEPARTMENT_ID 主鍵

LOCATION_ID 2500中插入一個新部門

SQL> insert into departments(department_id,department_name,location_id) values(test_seq.nextval,'Support',2500);

1 row inserted


SQL> select * from departments d where d.location_id=2500;

DEPARTMENT_ID DEPARTMENT_NAME                MANAGER_ID LOCATION_ID
------------- ------------------------------ ---------- -----------
            3 Support                                          2500
           80 Sales                                 145        2500

           

之前nextval是2

現在最新的序列就是3

是以這裡的主鍵為3,變成了唯一的id,不重複哦

序列不像表,它實際上是一個疊代器,可以慢慢傳回,哈哈哈哈哈,跟Python那個疊代器類似

是以用dual僞表

修改序列

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

跟修改表一個道理

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

HR使用者是有alter權限的

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
SQL> alter sequence dept_seq increment by 20 maxvalue 999999;

Sequence altered
           

再查詢一波,就知道變了20

SQL> select us.SEQUENCE_NAME,us.INCREMENT_BY,us.MAX_VALUE,us.MIN_VALUE,us.CYCLE_FLAG,us.CACHE_SIZE,us.LAST_NUMBER from user_sequences us;

SEQUENCE_NAME                  INCREMENT_BY  MAX_VALUE  MIN_VALUE CYCLE_FLAG CACHE_SIZE LAST_NUMBER
------------------------------ ------------ ---------- ---------- ---------- ---------- -----------
DEPARTMENTS_SEQ                          10       9990          1 N                   0         280
DEPT_SEQ                                 20     999999          1 N                   0         130
DEPT_SEQ2                                10       9999          1 N                   0         120
EMPLOYEES_SEQ                             1       1E28          1 N                   0         207
LOCATIONS_SEQ                           100       9900          1 N                   0        3300
TEST_SEQ                                  1       1E28          1 N                  20          21

6 rows selected
           

删除序列

Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結
SQL> drop sequence dept_seq2;

Sequence dropped
           
Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字Oracle資料庫:序列sequence的建立,查詢,修改,删除,increment by,start with等關鍵字oracle序列建立序列:ddl語句搞怎麼查序列呢?在user_sequences的資料字典表中怎麼用序列呢?nextval,currval修改序列删除序列總結

沒了

總結

提示:重要經驗:

1)

2)學好oracle,即使經濟寒冬,整個測開offer絕對不是問題!同時也是你考公網絡警察的必經之路。

3)筆試求AC,可以不考慮空間複雜度,但是面試既要考慮時間複雜度最優,也要考慮空間複雜度最優。