• 集合运算符和序列


    --学生表
    CREATE TABLE STUDENT
    (SNO NUMBER(4),
     NAME VARCHAR2(20),
     SEX CHAR(2),
     BIRTHDAY DATE,
     CLASS NUMBER(6),
     CONSTRAINT STU_SNO_PK PRIMARY KEY (SNO));
    --教员表
    CREATE TABLE TEACHER
    (TNO NUMBER(3),
     NAME VARCHAR2(20),
     SEX CHAR(2),
     BIRTHDAY DATE,
     DEPART VARCHAR(20),--院系
     CONSTRAINT TEA_TNO_PK PRIMARY KEY (TNO));
    
    
    --并集(去重)
    SELECT s.sex  FROM student s
    UNION--去重并集
    select t.sex  FROM teacher t;
    
    --将两个子查询分别去重后合并
    SELECT  DISTINCT s.sex  FROM student s
    UNION ALL
    select DISTINCT t.sex  FROM teacher t;
    
    --并集(不去重)
    SELECT s.name,s.sex  FROM student s
    UNION ALL
    SELECT t.name,t.sex  FROM teacher t;
    --交集(先去重,后取交集)
    SELECT s.sex  FROM student s
    intersect
    SELECT t.sex  FROM teacher t;
    
    --差集
    SELECT s.sex  FROM student s
    except
    select t.sex  FROM teacher t;
    

      

         --  CREATE SEQUENCE sequencename 创建序列
    			 
    			-- [INCREMENT BY n]             定义序列增长步长,省略为1
    
         --  [START WITH m]               序列起始值,省略为1
    
         --  [{MAXVALUE n | NOMAXVALUE}] 序列最大值,
    
         --  [{MINVALUE n | NOMINVALUE}] 序列最小值
    
         --  [{CYCLE | NOCYCLE}]         到达最大值或最小值后,继续产生序列(默认NOCYCLE)
    
         --  [{CACHE n | NOCACHE}];      CACHE默认是20
    
     
    
    
    
    --创建序列
    create sequence myseq;
    --NEXTVAL 和CURRVAL 伪列
    --NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用CURRVAL 中存放序列的当前值
    --第一次使用时CURRVAL不能用,使用时需要指定序列的对象名,将序列值装入内存可提高访问效率
    --序列起始值,省略为1
    select myseq.nextval from dual;
    
    select myseq.currval from dual;
    
    --创建一个表
    create table weilie(
       mid number,
        name varchar2(50) not null,
        constraint pk_mid primary key(mid)
       );
    	 --插入一行
    	 insert into weilie(mid,name) values (myseq.nextval,'Scott');
    	 --插入一行
    	 insert into weilie(mid,name) values (myseq.nextval,'Tom');
    	 --查询
    	 SELECT * FROM weilie;
    	 
    	 select * from user_sequences;
    	 --删除序列
    	 drop sequence myseq;
    	 
    	 
    	  --设置序列的初始值和增长步长
    	 create sequence myseq
    	 --初始值
       increment by 5
    		--增长步长
        START WITH 30;
    		--步长30
    		select myseq.nextval from dual;
    		
    		
    		
    		
    		--cache和nocache  默认情况是打开缓存的,默认的大小是20,这里有一个重要的参数是LAST_NUMBER
    		create sequence myseq cache 100;
    		
    		select * from user_sequences;
    		
    		select myseq.nextval from dual;
    		
    		select * from user_sequences;
    		
    		
    		--nocache
    		create sequence myseq nocache;
    		
    		select * from user_sequences;
    		
    		select myseq.nextval from dual;--运行一次增长1
    		
    		--使用循环序列
    
     -- 循环序列是指每次调用nextval可以产生指定范围的数据,比如在1、3、5、7、9这5个数字中产生
    		
    		create sequence myseq 
        start with 1
        increment BY 3
        maxvalue 10
        minvalue 1
        cycle 
        cache 3;
    		
    		select myseq.nextval from dual;
    		--CACHE_SIZE 变化
    		select * from user_sequences;
    		
    		--修改序列的注意事项
    
               --必须是序列的拥有者或对序列有ALTER 权限
    
              -- 只有将来的序列值会被改变
    
               --改变序列的初始值只能通过删除序列之后重建序列的方法实现
    
               --其它的一些限制
    		ALTER SEQUENCE myseq
               INCREMENT BY 20
               MAXVALUE 160
               CYCLE;
    		
    		
    

      

  • 相关阅读:
    webstorm破解
    macos-WebStorm安裝
    CocoaPods安装与使用
    前端之HTML
    python调用百度语音(语音识别-斗地主语音记牌器)
    MySQL学习笔记(二)
    MySQL学习笔记(一)
    python网络编程
    计算机网络基础
    python之hashlib、configparser、logging模块
  • 原文地址:https://www.cnblogs.com/ysg520/p/9711801.html
Copyright © 2020-2023  润新知