oracle数据库⼯龄计算公式,Oracle数据库基础⼊门、数据库语
⼀、⾸先在dos⿊窗⼝下输⼊:sqlplus -> 进⼊Oracle登录
⼆、sys⽤户、system⽤户、普通⽤户
Oracle安装会⾃动⽣成 sys⽤户 和 system⽤户 ,是系统⽤户
sys⽤户:sys⽤户 是超级⽤户,具有最⾼权限,具有 sysdba ⾓⾊,有 create database 的权限
system⽤户:system⽤户 是管理操作员,权限也很⼤,具有 sysoper ⾓⾊,没有 create database 的权限
普通⽤户:是通过在系统⽤户下创建的,可以给普通⽤户授予权限,可以授予connect、resource、create view、dba权限,dba权限是最⾼权限,⼀般不需要授给普通⽤户。
Oracle创建⽤户授权的步骤(在系统⽤户下完成的):
① ⾸先要创建 表空间
SQL> create tablespace 表空间名 datafile '数据⽂件绝对路径\数据⽂件名.DBF' size ⼤⼩(单位 :m);
数据⽂件路径例如:D:\app\lxw\ oradata\orcl\数据⽂件名.DBF (是在你安装的Oracle数据库的oradata⽂件下)
表空间(数据库/schema模式/.DBF):⼀个⽤户只能创建⼀个表空间,⼀个表空间可以创建多个⽤户(重要,这也是和MySQL数据库不太⼀样的地⽅)
② 创建⽤户
SQL> create user ⽤户名 idetified by 密码 default tablespace 表空间名;
③ 为⽤户 授权
SQL> grant connect,resource to ⽤户名;
④ ⽤普通⽤户登录
直接连接: conn ⽤户名/密码;
退出,重新登陆:exit
⑤ 还可以修改Oracle⽤户密码:普通⽤户输⼊ passw
SQL> passw
更改 LXW 的⼝令
旧⼝令:
新⼝令:
重新键⼊新⼝令:
⼝令已更改
还可以⽤sys、system⽤户修改密码(alter是修改)
SQL> alter user ⽤户名 idetified by 新密码;
删除⽤户
SQL> drop user ⽤户名 【cascade】;
注意:在删除⽤户时,如果要删除的⽤户已经建了表,那么就需要写cascade,即把该⽤户和表⼀同删除
三、Oracle表的管理(对表操作后最好都 commit提交⼀哈,MySQL不⽤,会⾃动提交)
1. 表名和列名命名规则
河正宇女友
① 和java不⼀样,不能使⽤驼峰命名,每个单词之间⽤下划线分隔( _ )
② 必须以字母开头
③ 长度不能超过30个字符
④ 不能使⽤Oracle关键字和保留字
注:列名后⾯直接空格跟列别名
2. 数据类型
- - 这⾥只列出最常⽤的⼏个
① 字符型
char(长度): 长度固定
varchar2(长度):长度可变,可以节省空间
【栗⼦】
char(10) 类型的 abc —> 会⾃动补全空格 —> ‘abc 七个空格’
varchar2(10) 类型 abc —> 就是 ‘abc’
注:Oracle中字符串都是⽤的单引号,和java中的不同,java中字符是单引号,字符串是双引号
还有,字符串连接是 两个竖杠( || ),java中是加号( + )
② 数字型
李大为个人资料简介
number(总位数)
number(总位数,⼩数位数)
③ ⽇期类型 ----- date
to_date('⽇期' , 'YYYY-MM-DD'); -- ⽇期类型存⼊
select to_char(列名 , 'YYYY-MM-DD'); -- 取出
注:Oracle中注释是两个减号,不是两个斜杠
④ 图⽚ — blob
但⼀般存图⽚的路径
3. 对表结构查询,增加,修改,删除( DDL - 数据定义语⾔)
就是对表的 列名(即字段)操作
4. 创建表,对表的增删改查(DML - 数据操纵语⾔)
其中select查询最重要:
(1)区间查询
-
- where 列名 between and 区间查询
(2)过滤掉重复的⾏
-- distinct关键字 过滤掉重复的⾏
select DISTINCT 列名 from 表名 ;
(3)模糊查询
select模糊查询使⽤like关键字
【语法】
like ’ % ’ ;
①②③ 只是百分号的位置不同
① 前⾯精确后⾯模糊
-- %匹配多个字符
-
- 前⾯精确, 后模模糊(可以是任意字符)
-- 注意:SQL关键字和列名称不区分⼤⼩写,但是查询的内容⼀定要区分⼤⼩写,否则⽆法查询正确的结果-- ⼩结: like关键字只能⽤在from关键字后⾯
② 前⾯模糊后⾯精确
③ 前后模糊中间精确
(4)聚合函数
概念:数据汇总
特征:每个聚合函数查询结果当⾏单列,返回⼀个值
数据库提供了5个聚合函数:max(), min(), sum(), avg(), count() from 表名
威海旅游景点(5)select查询汇总
select 列名 / 或 聚合函数 (列名)
from 表名 -- 指定表
where 条件(可以加⼦查询select) -- 根据条件过滤 ⾏
group by 列名 -- 分组
having 过滤分组的条件 -- 过滤分组条件,对聚合过滤,where不⽀持聚合。所以⽤having
order by 列名 desc(递减↓); -- 最后对查询结果进⾏排序 ,默认是asc(递增↑)
-- 执⾏顺序: from ---> where ---> group by ---> having ---> select ---> order by
select 列名 / 或 聚合函数 (列名)-------- 查询
from 表名 ---------------------------------------- 指定表
where 条件(可以加⼦查询select) ------ 根据条件过滤 ⾏
group by 列名 ----------------------------------- 分组
having 过滤分组的条件 ----------------------- 过滤分组条件,对聚合过滤,where不⽀持聚合。所以⽤having order by 列名 desc(递减↓); --------------- 最后对查询结果进⾏排序 ,默认是asc(递增↑)
上述为⼀条完整的语句
执⾏顺序: from —> where —> group by —> having —> select —> order by
5. 其它DDL
周小斌个人资料(1)索引
【概念】作⽤在表上,相当于⼀本书(表)的⽬录(索引)
【创建索引的好处】可以快速查询数据,就像看书⼀样,通过⽬录,看到页码,然后根据页码很快就能翻到。
【创建索引语法】
create index 索引名 on 表名(列名)
-- 表名(列名) 指定为表的哪⼀列创建索引
【注意】
当你为某个表创建⼀个主键约束,就会⾃动隐式的创建⼀个索引
当你为某个表创建⼀个唯⼀约束,也会隐式的创建⼀个唯⼀索引
【删除索引语法】
drop index 索引名
向隽殊
【概念】视图是⼀张虚表,⼀般只供查看,不⽀持修改,所以要设置为只读,
⽽且视图为了隐藏核⼼数据,只暴露其它数据,供查看的
【创建视图语法】
create view 视图名
as
SQL 语句 -- SQL语句控制显⽰哪些数据
with read only; -- 视图设置为只读
创建视图最好设置为只读,要不然你修改了视图的内容,原表的数据也会同步修改,因为你创建视图就是为了查看的,不要修改【问题】
错误报告 -
ORA-01031: 权限不⾜
01031. 00000 - “insufficient privileges”
*Cause: An attempt was made to perform a database operation without
the necessary privileges.
*Action: Ask your database administrator or designated security
administrator to grant you the necessary privileges
【原因】scott⽤户没有创建视图的权限
【如何解决】在system⽤户下⾯为普通⽤户授予创建视图的权限
SQL > grant create view to ⽤户名;
(3)序列
【概念】⾃动为你创建⼀个整数类型的编号值,能够为你⾃动创建id
【为什么需要序列】之前向表插⼊id值是⼿动插⼊的,风险:有可能插⼊的id已经在表中存在,就会报错【语法】
create sequenece 序列名
start with 值 -- 初始值 int i=0
increment by 值 -- increment by 步长 i++
minvalue 值 -- 最⼩值 最⼩值不能⼤于start with
maxvalue 值 -- 最⼤值
nocache/cache -- nocache不使⽤缓存 cache 使⽤缓存
nocycle/cycle; -- nocycle不循环(超过最⼤值不循环) cycle超过最⼤值从新循环
【栗⼦】
-- 没有创建序列的情况下,需要显⽰的插⼊ID值
insert into 表名(id,其它列)values(你⼿输的id,'数据');
-- 序列名.NEXTVAL 就会⾃动插⼊id
-- 序列名 是我们创建的序列 , NEXTVAL序列的下⼀个值
孙骁骁和刘惜君
insert into 表名(id,其它列)values(序列名.NEXTVAL,'数据');
commit;
【删除序列】
drop sequence 序列名;
四、PL/SQL (⾯向过程和SQL结合)
Procedure Language / Struct Query Language
⾯向过程语⾔和结构化查询语⾔
1. 匿名 PL/SQL
重要:使⽤ PL/SQL 之前,必须加下⾯⼀句,否则执⾏不成功
- - 设置⼀个服务器端的输出缓存 ⼤⼩是999999
set serveroutput on size 999999
【概念】
没有名字的的PL/SQL语句,只能执⾏⼀次,不能重复调⽤
【语法】
declare
声明变量、常量
begin
程序逻辑
end; -- PL/SQL结束
【栗⼦】— 第⼀个HelloWorld(程序猿学语⾔的第⼀个程序HelloWorld)