oracle初步学习总结

1.介绍

1.1.定义

一种高效率、可靠性好的、适应高吞吐量的关系数据库

1.2.特点

可移植性好、使用方便、功能强

1.3.组成

Oracle数据库服务器由一个数据库和至少一个数据库实例组成。 数据库是一组存储数据的文件,而数据库实例则是管理数据库文件的内存结构。

1.4.和mysql的区别

区别 |oracle|mysql

区别oraclemysql
收费收费免费
并发高并发强高并发弱
内存占用内存大占用内存小
支持事务支持默认不支持
事务隔离级别read commited(已提交读)repeatable read(可重复读)
提交方式默认手动提交默认自动提交

2.安装

oracle和其可视化操作工具PLSQL的安装方式:
百度云链接:
https://pan.baidu.com/s/1uIYvhAsLyHm_SoJlGWXajg
提取码:omck

3.创建表空间和用户

3.1.表空间

(1)创建表空间

create tablespace itheima
datafile 'e:\oracleCode\itheima.dbf'
size 100m
autoextend on
next 10m;

注意:从上往下分别代表名称,位置,大小(M),自动扩容每次扩展10M
(2)删除表空间

drop tablespace 表空间名

3.2.用户

(1)创建用户

create user itheima
identified by itheima
default tablespace itheima

注意:
user后边是用户名
identifiedby 后边是用户的密码
default tablespace 后边是表空间名称
(2)给用户授权(否则无法登陆)

grant dba to 用户名

注意:
oracle有以下三种权限:
CONNECT角色:–是授予最终用户的权利
RESOURCE角色:–是授予开发人员的
DBA角色:拥有全部特权,是系统最高权限

4.oracle数据类型

在这里插入图片描述

5.表的管理

5.1.建表

(1)语法:

 create table 表名(
       字段名1 数据类型 [default 默认值],
       字段名2 数据类型 [default 默认值],
       ...
       字段名3 数据类型 [default 默认值],
);

(2)例子:

create table person(
       pid number(10),
       name varchar2(10),
       gender number(1) default 1,
       birthday date
);

5.2.删除表

DROP TABLE 表名

5.3.修改表

在sql中使用alter可以修改表
(1) 添加语法:

ALTER TABLE 表名称 ADD(列名1 类型[DEFAULT 默认值],列名2 类型[DEFAULT 默认值]...)

范例:在person表中增加列address

alter table person add(address varchar2(10));

(2) 修改语法:

ALTER TABLE 表名称 MODIFY(列名1 类型[DEFAULT 默认值],列名2 类型[DEFAULT 默认值]...)

范例:把person表的address列的长度修改成20长度

alter table person modify(address varchar2(20));

(3)修改列名:

ALTER TABLE 表名称 RENAME COLUMN 老列名 TO 新列名

范例:将emp表的ename字段名修改为ename2

alter table emp rename column ename to ename2

5.4. 数据库表数据的crud

(1)增加:

INSERT INTO 表名(列名1,列名2...) VALUES(1,值2...)

(2)修改:
全部修改:

UPDATE 表名 SET 列名1=1,列名2=2....

局部修改:

UPDATE 表名 SET 列名1=1,列名2=2....WHERE 修改条件;

(3) 删除
局部删除:

DELETE FROM 表名WHERE删除条件

删除所有:

DELETE FROM 表名

注意:oracle的事务对数据库的变更的处理,我们必须做提交事务才能让数据真正的插入到数据库中,在同样在执行完数据库变更的操作后还可以把事务进行回滚,这样就不会插入到数据库。如果事务提交后则不可以再回滚。
提交:commit
回滚:rollback
(4)查询
①基本查询:

select 字段名1,字段名2,... from 表名

②查询所有:

select 1 from 表名
select * from 表名

从效率上来说,1>anycol>*,因为不用查字典表
③条件查询

select 字段名1,字段名2,... from 表名 where 条件

5.5.序列

(1)背景:oracle 中列完成自动增长的功能, 需要用户手工依靠序列完成
(2)创建:

create sequence seqpersonid
increment by 1
start with 1
maxvalue 999999999;

注意:
sequence后是序列名,by、with、maxvalue后面分别是每次增加值,起始值,最大值
(3)使用
在插入数据时需要自增的主键中可以这样使用

insert into emp(eid,ename,hiredate) values(seqpersonid.nextval,'田七',sysdate)

注意:nextval :取得序列的下一个内容,currval :取得序列的当前内容

6.单行函数

6.1.字符串函数

(1)把小写的字符转换成大小的字符upper

select upper('yes') from dual

(2) 把大写字符变成小写字符lower

select lower('YES') from dual

(3) 首字母大写函数initcap

select initcap('yes') from dual

(4) 字符串链接函数||和CONCAT
①方式1:||
特点:链接个数无限制
Eg;

select ENAME || HIREDATE from EMP
SELECT '姓名:' || ENAME FROM EMP
SELECT '姓名:' || ENAME || 'TEST' || 'LALALA' FROM EMP

②方式2:CONCAT
特点:只能连接两个参数,两个以上需要嵌套

SELECT CONCAT(ENAME,HIREDATE) FROM EMP
SELECT CONCAT('姓名:',ENAME) FROM EMP
SELECT CONCAT(CONCAT(CONCAT('姓名:',ENAME),'TEST'),'LALALA') FROM EMP

(5) 字符串截取函数substr
格式1.从str的a位置截取长度为b的字符串

select substr(str,a,b) from dual

格式2.substr(str,a),从string1的第a个字符开始截取后面所有字母

select substr(str,a) from dual

(6) 字符串替换函数replace和translate
① TRANSLATE(char, from, to)
作用:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。
若from比to字符串长,那么在from中比to中多出的字符将会被删除
Eg:

select translate('abcdefga','abc','wo') from dual

结果:wodefgw
分析:该语句要将’abcdefga’中的’abc’转换为’wo’,
由于’abc’中’a’对应’wo’中的’w’,
故将’abcdefga’中的’a’全部转换成’w’;
而’abc’中’b’对应’wo’中的’o’,
故将’abcdefga’中的’b’全部转换成’o’;
'abc’中的’c’在’wo’中没有与之对应的字符,
故将’abcdefga’中的’c’全部删除;

② REPLACE(str, oldStr,newStr)
作用:将str字符串中oldStr全部转换为字符串newStr。
Eg:

select replace('abcdefga','abc','wo') from dual

(7) 获取字符串长度函数:LENGTH和LENGTHB
①返回字符串长度:

SELECT LENGTH('你好') FROM DUAL

②返回字符串的字节长度

SELECT LENGTHB('你好') FROM DUAL

6.2.数值函数

(1) 四舍五入函数ROUND()

select round(26.18,1) from dual

(2)取余函数mod

select mod(10,3) from dual

(3)向下取整函数

select trunc(56.16) from dual

6.3.日期函数

(1)sysdate:当前时间
eg:
查询雇员进入公司的天数(sysdate –入职日期)/7就是周数

select sysdate-e.hiredate from emp e

(2)MONTHS_BETWEEN(dateA,dateB):两个时间段之间的月份差
注意:在日期加减时有一些规律
日期–数字= 日期
日期+ 数字= 日期
日期–日期= 数字

6.4. 转换函数

(1)TO_CHAR:字符串转换函数, 可以将年月日分开
范例:查询所有的雇员将将年月日分开,此时可以使用TO_CHAR函数来拆分
拆分时需要使用通配符
年:y, 年是四位使用yyyy
月:m, 月是两位使用mm
日:d,日是两位使用dd

select ename,
to_char(hiredate,'yyyy') 年,
to_char(hiredate,'MM') 月,
to_char(hiredate,'dd') 日
from emp

(2) TO_DATE:日期转换函数,可以把字符串的数据转换成日期类型

insert into emp(ename,hiredate) values('田七',to_date('1996-12-04','yyyy-MM-dd'))

6.5. 通用函数

(1)空值处理nvl
nvl(comm,0):comm字段值为null的用0表示
(2)decode:类似if-else
语法:

DECODE(col/expression, [search1,result1],[search2, result2]....[default])

Col/expression:列名或表达式
Search1,search2…:用于比较的条件
Result1, result2…:返回值
如果col/expression和Searchi匹配就返回resulti,否则返回default的默认值
(3)case when类似if-else

CASE expr WHEN comparison_expr1 THEN return_expr1 
[WHEN comparison_expr2 THEN return_expr2 
WHEN comparison_exprn THEN return_exprn  
ELSE else_expr]
END

7.多行函数(聚合函数)

7.1.统计记录数count()

eg:查询所有员工记录数

select count(*) from emp 

注意:建议使用count(字段名),它比count(*)效率高

7.2.最小值查询min()

eg:查询出来员工最低工资

select min(sal) from emp 

7.3.最大值查询max()

eg:查询出来员工最高工资

select max(sal) from emp 

7.4.查询平均值avg()

eg:查询出来员工平均工资

select avg(sal) from emp 

7.5.求和函数sum()

eg:查询出来员工工资总和

select sum(sal) from emp 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值