1.连接
首先打开Navicat Premium填入正确的信息,连接。
2. 新建表空间
我们点击面板上的其他下的选项表空间
进入表空间的界面,我们可以通过面板上的新建表空间,也可以通过在空白处鼠标右键,新建表空间
在弹出的界面中,我们输入表空间的名中输入我们需要在oracle在物理磁盘存储的文件名,以及表空间的初始大小以及单位。
在“路径”选项中填写该表空间所在的物理磁盘路径。
自动扩展选项中选择on,即允许自己动扩展表空间。如果选择“off”,那么该表空间是固定大小的,不允许扩展的。
其他信息填写完毕后,我们只需点击保存按钮。系统弹出一个界面让我们填入此表空间的名称,
新建完毕后,我们可以在物理磁盘看看是不是有表空间的文件,
3. 新建用户
表空间新建完毕后,我们就要来新建用户。点击面板上的用户选项,
新建用户的方法有两种,一种是控制面板上的“新建用户”按钮,另外一种就是在空出右键,如上图。在点击“新建用户”后,弹出的界面,填入相关的信息。
其中我们需要注意的是,在用户名处填写的用户名字母一定是大写。请记住一定是要大写,如果是小写的话此用户是无法连接Oracle数据库的。具体为什么是这样,我想这个可能是此软件的BUG。在“默认表空间”处,我们选择理科前面我们新建的表空间。如果我们不选择的话,会使用系统默认的表空间USERS。
在“成员属于”中我们选择了DBA权限。其实对于一般的用户,我们只需赋予connect、resource、create view这几个权限即可。但是这里我们为了演示方便就选择“DBA”了。有关connect、resource、create view这几个权限的赋予,
以上操作完毕后,我们可以切换到“SQL预览”选项,查看相关的SQL语句,
用户建立完毕后,我们就可以使用此数据库了。那我们先来测试下,该用户是不是可以正常连接Oracle数据库。
4. 命令–建表空间,用户空间,触发器
hostname: localhost
port: 1521
sid: xe
service name: xe
username: system
password: oracle
sqlplus
CREATE TABLESPACE "CUSTOMS_SPACE"
DATAFILE 'CUSTOMS_DATA' SIZE 1024000 K AUTOEXTEND ON NEXT 1024000 K MAXSIZE UNLIMITED
CREATE USER "ROOT_TEST" IDENTIFIED BY "passw0rd" DEFAULT TABLESPACE "CUSTOMS_SPACE" TEMPORARY TABLESPACE "TEMP";
GRANT "DBA" TO "ROOT_TEST" WITH ADMIN OPTION;
ALTER USER "ROOT_TEST" DEFAULT ROLE "DBA"
-- Create sequence
create sequence SEQ_NEW_PREDICT_201809
minvalue 1 -- 最小值=1
maxvalue 999999999999999999999999999 -- 指定最大值
-- 或nomaxvalue -- 没有最大值
-- NOCYCLE; -- 不循环
start with 1 -- 从1开始
increment by 1 -- 每次递增1
cache 20;
--触发器
create or replace trigger TRI_NEW_PREDICT_201809
before insert on NEW_PREDICT_201809
REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW
begin
SELECT SEQ_NEW_PREDICT_201809.NEXTVAL INTO :NEW.ID FROM DUAL;
end;
5. 查询
1,笛卡尔积
select * from a cross join b
2,自然连接(需两表有潜在的对应字段)
select * from a natural join b
3,JOIN…USING子句:用户自己指定一个消除笛卡尔积的关联字段
SELECT* FROM emp JOIN dept USING(deptno);
4,union
两个集合相加减去一份交集,背后实际做了排序和Distinct约束,效率低
5,union all
两个集合相加,效率比union高
6,left [outer] join ,right [outer] join
以一边驱动去匹配另一边
7,inner join,
与join一样,等同于 select * from a,b where a.id=b.id,要求两表交集
# 查询最近一周12:30分到13:00这段时间内的订单量:
SELECT *
FROM T_ORDER O
WHERE O.CREATEDATETIME BETWEEN
SYSDATE-7 AND
SYSDATE
AND TO_CHAR(O.CREATEDATETIME, 'hh24:mi:ss') BETWEEN '12:30:00' AND
'13:00:00'
# 查询某段日期内某个时间段的订单量:
SELECT *
FROM T_ORDER O
WHERE O.CREATEDATETIME BETWEEN
TO_DATE('2016-10-08 12:30', 'yyyy-mm-dd hh24:mi') AND
TO_DATE('2016-10-14 13:00', 'yyyy-mm-dd hh24:mi')
AND TO_CHAR(O.CREATEDATETIME, 'hh24:mi:ss') BETWEEN '12:30:00' AND
'13:00:00'