oracle中初学者在同一个用户创建表空间,建表使用

来源:互联网 发布:易用软件使用说明 编辑:程序博客网 时间:2024/06/05 19:21
--授权用户
GRANT CREATE SESSION TO scott;
GRANT CREATE TABLESPACE TO scott;
GRANT CREATE VIEW TO scott;
GRANT CREATE TABLE TO scott;
GRANT CONNECT,RESOURCE TO scott; 
--创建表空间
  CREATE TABLESPACE commerce   --commerce商务
  DATAFILE 'F:\oracleTData\user_data.dbf'
  SIZE 10m
  AUTOEXTEND ON
  NEXT 10m MAXSIZE 2048m
  EXTENT MANAGEMENT LOCAL;
 --表空间默认使用,在系统用户运行
   ALTER USER scott DEFAULT TABLESPACE commerce;
 --默认表空间中建表
  --用户表,关键字用双引号,不建议用关键字,后面插入数据,表就会出现很多问题。
  --1.用户表
   CREATE TABLE users1(    --如果用户中已有相同表,则修改数据,两张表数据会同时发生改变,不方便操作,最好不要重表
   user_id NUMBER(10),
   user_name VARCHAR2(50) NOT NULL,
   user_password VARCHAR2(50) NOT NULL,
   status  NUMBER(1) NOT NULL,
   last_modify_time DATE  NOT NULL,
   type_id NUMBER(10) 
   );     
   --2.用户类型表
   CREATE TABLE user_type(
   t_id NUMBER(10),
   t_name VARCHAR(2) NOT NULL
   
   );
  --设置表的主键及外键 user1-user_id  user_type-t_id
  ALTER TABLE users1 ADD CONSTRAINT pk_user1Id PRIMARY KEY(user_id); --pk_user1Id别名也不能重名
  ALTER TABLE user_type ADD CONSTRAINT pk_typeId PRIMARY KEY(t_id);
  --外键

  ALTER TABLE users1 ADD CONSTRAINT fk_user_typeid FOREIGN KEY(type_id) REFERENCES user_type(t_id);

 
  --1.主键自增(先执行序列,后执行触发器)
  CREATE SEQUENCE users1_sequence
  INCREMENT BY 1 --每次加几个
  START WITH 1    --从1开始计数
  NOMAXVALUE      ---不设置最大值
  NOCYCLE          ---一直累加,不循环
  NOCACHE  --不建缓冲区
  --只有表序列还不够,还需要一个触发器来执行它
  CREATE OR REPLACE TRIGGER "tri_users1" BEFORE
  INSERT ON users1 FOR EACH ROW WHEN(new.user_id IS NULL)
  BEGIN                                                      --nextval序列的下一个值.
  SELECT users1_sequence.nextval INTO:new.user_id FROM dual; --dual是oracle虚拟表,不是真实存在的.
  END tri_user1;
  
  --2.第二个序列,和触发器
       --主键自增(先执行序列,后执行触发器)
      CREATE SEQUENCE user_type_sequence
      INCREMENT BY 1 --每次加几个
      START WITH 1    --从1开始计数
      NOMAXVALUE      ---不设置最大值
      NOCYCLE          ---一直累加,不循环
      NOCACHE  --不建缓冲区
      --只有表序列还不够,还需要一个触发器来执行它
      CREATE  OR REPLACE TRIGGER "tri_user_type" 
      BEFORE
      INSERT ON user_type FOR EACH ROW WHEN(new.t_id IS NULL)
      BEGIN                                                      --nextval序列的下一个值.
      SELECT user_type_sequence.nextval INTO:new.t_id FROM dual; --dual是oracle虚拟表,不是真实存在的.
      END tri_user_type;
  
  --插入数据
   CREATE SEQUENCE t_id START WITH 1 INCREMENT BY 1;
   INSERT INTO user_type(t_id,t_name)VALUES(2,'黄金会员');
   INSERT INTO user_type(t_id,t_name)VALUES(3,'临时用户');
  --2.向users1插入数据
   CREATE SEQUENCE user_id START WITH 1 INCREMENT BY 1;
   INSERT INTO users1(user_id,user_name,user_password,status,last_modify_time,type_id) --日期显示用to_date
   VALUES(1,'张三','111111',1,to_date('2017-6-17 17:44:33','YYYY-MM-DD HH24:MI:SS'),1);
   
    INSERT INTO users1(user_id,user_name,user_password,status,last_modify_time,type_id) 
   VALUES(2,'李四','222222',1,to_date('2015-6-17 17:44:33','YYYY-MM-DD HH24:MI:SS'),2);
   
    INSERT INTO users1(user_id,user_name,user_password,status,last_modify_time,type_id) 
   VALUES(3,'王五','333333',1,to_date('2016-6-17 17:44:33','YYYY-MM-DD HH24:MI:SS'),3);
   
   
   
    INSERT INTO users1(user_id,user_name,user_password,status,last_modify_time,type_id) 
   VALUES(4,'胜七','444444',0,to_date('2015-6-17 17:44:33','YYYY-MM-DD HH24:MI:SS'),2);
   
   



原创粉丝点击