Oracle構文(2つ:シーケンス、Oracleページング)

1.シーケンス

シーケンスとは:連続する整数の文字列
デフォルトでは、Oracleには主キーの自動インクリメントはありません。この問題を解決するには、シーケンスを使用してください。
シーケンスの役割:Oracleでは、主に主キーの自己成長機能として使用されます

シーケンスを作成するための構文:

シーケンスシーケンス名の作成
[開始//初期値の
増分//ステップ
minvalue | maxvalue | nomaxvalue //最小、最大、無制限のサイズ
サイクル| nocycle //
キャッシュを循環的に使用するかどうか| nocache] //キャッシュを使用するかどうか

-- 创建一个序列名为seq_one,起始值为1,步长为2,最大值9,循环使用,不指定缓存
create sequence seq_one 
start with 1
increment by 2
maxvalue 9
cycle
nocache;
シーケンスの操作プロパティ:

次の2つの操作が順番に提供されます。

シーケンス属性 特徴
nextval シーケンスの次の値を取得します
currval シーケンスの現在の値を取得します
-- 查询当前的序列号select seq_one.nextval 是否正确?

必须加上from关键字

	疑问:dual是什么?
虚拟表,用来让select的语法完整

-- mysql查询现在的时间
select now();

-- 在oracle中使用sysdate
-- 注:oracle中只要使用select语句,语法必须包含from 
-- 在oracle中有一个虚拟表名:dual,为了让select 语法完整
select sysdate from dual; 

-- 查询序列
select seq_one.nextval from dual;
select seq_one.currval from dual;

注:新しく作成されたテーブルの場合、seq_one.currvalを使用して現在のシーケンスを取得するとエラーが報告されます。これは、新しく作成されたテーブルには現在のシーケンスがなく、次のシーケンスを最初に取得する必要があるためです:seq_one.nextval、それ以外の場合はエラー報告されます。

2. Oracleページングクエリ:疑似列ROWNUM

疑似列ROWNUM:

        ROWNUMは、Oracleデータベースがデータファイルからデータを読み取る順序です。最初のレコードを取得し、ROWNUM値は1、2番目は2というように続きます。>、> =、=、between ...とこれらの条件を使用すると、テーブルから取得された最初のレコードのROWNUMが1であり、ROWNUM> 5の条件が満たされないため、フィルタリングされます。次に、バーを削除します。そのROWNUMはまだ1であり、フィルター処理されているなど、データはありません。
        解決策:サブクエリを使用してrownumを仮想テーブルの形式で保存してから、2番目のクエリを実行する必要があります。ここに画像の説明を挿入
コード:

-- 分页查询
-- 每页显示5条
select * from emp;
-- 伪列rownum
select rownum, e.* from emp e;
-- 查询第1页
select rownum, e.* from emp e where rownum > 0 and rownum<=5;

-- 查询第2页
select rownum, e.* from emp e where rownum > 5;

-- rownum是对结果集进行编号

-- 将rownum做成一张虚拟表,再次查询
select t.* from (select rownum rn, e.* from emp e) t where rn>0 and rn<=5;
select t.* from (select rownum rn, e.* from emp e) t where rn>5 and rn<=10;
select t.* from (select rownum rn, e.* from emp e) t where rn>10 and rn<=15;

おすすめ

転載: blog.csdn.net/RookiexiaoMu_a/article/details/105129133