系统用户登录
系统用户登录:
系统自带的用户(sys,system,scott)
格式: sqlplus username/password@serviceName as sysdba
示例: sqlplus system/a123456@orcl as sysdba -- as sysdba 表示用管理员账户登录
注意: 如果不加as sysdba即使普通用户登录
数据表说明
1.内置有四个数据表:
员工表、部门表、工资等级、奖金表,都在Scott用户下
注意:
刚安装好的Oracle数据库 Scott用户是锁定的,需要进行解锁才能登录
2.解锁Scott用户:
1.使用system用户进行登录 (本机的数据库)
sqlplus system/a123456@orcl as sysdba -- 在控制外面不要在语句结尾加分号
2.使用alter解锁:
alter user scott account unlock; -- 解锁
alter user scott account lock; -- 加锁
3.验证:
conn scott/tiger@orcl -- 注意:第一次链接会提示修改密码
tiger
tiger
口令已更改
已登录
4.查看当前用户下的所有表
show user; -- 查看当前用户
select table_name from user_tables; -- 查看当前用户下所有的表
emp -- 雇员表
dept -- 部门表
salgrade -- 工资等级表
bonus -- 奖金表
select * from emp; -- 查看emp表下的所有数据
sqlplus常用命令
命令 | 含义 |
---|---|
show user; | 显示当前用户名 |
connect scott/tiger; | 登录scott数据库 |
conn system/a123456; | 登录system数据库 |
disconnect; | 断开连接 |
desc emp; | 显示表结构 |
select * from tab; | 查看当前用户下的表名 |
select table_name from user_tables; | 查询当前用户下的表名 |
@path; | path代表SQL文件所在的位置 |
set linesize 100; | 设置行宽 |
set pagesize 8; | 设置每页显示的记录数 |
col 字段名 for 9999/a; | 设置字段的显示宽度,9999表示数字,a表示字符 |
1.之所以会设置行宽、列宽和页面记录,是因为在SQLplus模式下:select查询的时候经常会遇到返回的记录折行,为了便于我们查看,所以会对其进行设置。
2.SQLplus命令是会话级的,exit之后就消失了
3.在使用 set pagesize时,需要注意:该记录数包含标题、虚线、空行。
Oracle序列
1.rownum
作用:是Oracle系统顺序分配为从查询返回的编号,返回的第一行分配的是1.第二行是2,一次类推,这个伪 字段可以用于限制查询返回的总行数;
例如:
select rownum,empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;-- 14条记录
select rownum,deptno,dname,loc from dept; -- 4条记录
需求:取雇员表中前三条记录:
select
rownum,empno,ename,job,mgr,hiredate,sal,comm,deptno
from emp
where rownum <=3;
需求:取雇员表第三条及以后的记录:
select * from(
select rownum rn,empno,ename,job,mgr,hiredate,sal,comm,deptno from emp
)where rn >=3;
注释: rownum表示行号,是一个伪列,可以在每一张表中出现
例如1:查询表记录中的前五行:
select * from emp where rownum <=5;
例如2:取员工表,第六到第十条数据
select * from(
select rownum rn,empno,ename,job,mgr,hiredate,sal,comm,deptno from emp
)where rn between 6 and 10;
2.创建序列
语法: creater sequence 序列名称 [maxvalue num | nomaxvalue]
[minvalue num | nominvalue]
[increment by num start with 10]
[cache num | nocache]
[cycle | nocycle]
Squence参数说明:
maxvalue 100 序列的最大值
nomaxvalue 不设置最大值
minvalue 10 序列的最小值
nominvalue 不设置最小值
increment by 1 每次增加1个 类似mysql的自增长
start with 1 从1开始计数
cache 10 设置缓存10个序列
nocache 不设置缓存
cycle 到头循环
nocycle 一直累加,不循环
创建:
create sequence myseq minvalue 1 maxvalue 100 start with 1
incerment by 1 cache 20 nocycle
解释: 创建一个名为 myseq 的序列,该序列的范围是1 - 100,从1开始,每次加1,缓存20个,不循环
使用: nextval -> 取得序列的下一个内容
序列名.nextval
需要注意的地方
1.如果要使用Scott用户创建视图,需要对该用户进行授权:
grant create view to scott; -- 将创建视图的权限给Scott用户;
2.在使用插入语句时需要注意,Oracle不支持一次插入多条记录
3.在获取日志值时,不能直接使用year、month、day获取:
SELECT empno,ename,
hiredate,
to_char(hiredate,'yyyy')YEAR, -- year(hiredate)
to_char(hiredate,'mm')MONTH, -- month(hiredate)
to_char(hiredate,'dd')DAY, -- day(hiredate) %c
to_char(hiredate,'yyyy/mm/dd')ymd,
to_char(hiredate,'fmyyyy/mm/dd')ymd -- 用fm去掉前导0
FROM emp
对四张表的说明
只要方向对了,不怕路太远。