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);