zoukankan      html  css  js  c++  java
  • 集合运算符和序列

    --学生表
    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;
    		
    		
    

      

  • 相关阅读:
    SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
    麦咖啡导致电脑不能上网
    SharePoint 2013 Central Admin 不能打开
    SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
    SharePoint 2013 APP 开发示例 系列
    synthesize(合成) keyword in IOS
    Git Cmd
    简单的正则匹配
    Dropbox
    SQL Server Replication
  • 原文地址:https://www.cnblogs.com/ysg520/p/9711801.html
Copyright © 2011-2022 走看看