Oracle Day1
没有计划就没有动力,我决定花5天学完这个Oracle课程,大家监督我吧!!!
附上链接:https://www.bilibili.com/video/BV1AE411p79z
这个课程是我在b站经过多维度比较选出的一个最好的Oralce教程了。
第一天计划(3月24日):p4 Oralce基本概念~p13 Oralce通用函数
p4 Oralce基本概念
几个基本概念:
数据库:Oracle中的数据库是一个物理概念,指一个操作系统,只有一个大的数据库,相比较于mysql,root下可有多个数据库。
实例:一个实例由一系列后台进程和内存结构组成,一个数据库可以有n个实例。通常我们只使用一个足矣。
用户:用户在实例下建立,一个实例可以包含多个用户。不同实例下的用户名字可以重复。
表空间:一个实例下可包含多个表空间,表空间是一个逻辑概念,包含dbf,ora数据文件,每个用户都有一个它自己默认的表空间。同一个表空间,不同用户的数据是隔离的。

orcl表示实例名称。driver和url一般不会变。
Oracle中的用户相当于mysql中的database概念,Oracle一般以用户为单位进行存储数据。
p5 Oralce基本命令
登录命令:打开cmd,输入命令sqlplus sys/设置的密码 as sysdba;

sys是管理员用户,我们可以试试scott用户
先退出(exit)

查看当前用户:show user

切换用户:conn sys/1996 as sysdba;

查看用户下的表:select * from tab;

查询表中的数据:
select * from 表名;

查询表内容:desc 表名;

注意:sys是超级管理员,有查看其他用户下表格的权限,查询时在表名前注明用户名即可:(分号不能省略)
select * from scott.dept;

p6 Oracle简单查询
首先登录pl/sql developer

可以在左边看到刚刚的4张表:


DML:增删改数据
DDL:建表删表
DCL:权限相关
创建一个可视化命令窗口:file-new-sql window
进行第一次查询:(点绿色小三角就能运行)

查询指定的列:

指定别名:(as可以省略!!)

单行注释:--注释内容
多行注释:/* */
![]()
查询指定的列的数据,并去重:使用distinct即可。
这里注意,如查询多列,只有查询的每列都相同才会去重。

字符串连接查询:

查询时使用四则运算:(不推荐实际中使用)

p7&p8 Oracle限定查询
限定查询和mysql类似:
条件语句用where来表示即可。


这里加了not就相当于求括号里的条件的补集。

注意between and是包含边界的,还可以用于日期。
sql语句不区分大小写,但是值区分:
![]()
重点:范围查询,用in代替or

延申地,也可以用not in求补集,也可以范围查找字符串(单引号括起即可)。
模糊查询:%表示任意长度,_表示一个长度
查询第2个字母为M的人的信息
查询倒数第3个字母为M的人的信息
查询包含字母为M的人的信息
查询所有人的信息
不等号可以用!=或<>,效果一样。

p9 Oracle排序
默认asc(升序),可省略。desc表示降序,不可省略
order by语句一般放在所句子的最后边

p10 Oracle单行函数
伪表dual

小写转化成大写:

大写转化成小写

首字母大写

字符串连接
两种均可。||更推荐,可跨库


截取字符串
4表示从第4个字符开始截取,5表示截取长度为5

计算字符串长度

替换字符
将hello单词中所有的l都替换成x

四舍五入函数,可以自己指定保留的位数,默认取整


保留指定位数


取余

p11 Oracle日期函数
sysdate表示当前日期

练习:求入职员工至今为止入职的周数并取整

求入职员工至今为止入职的月数并取整(使用months_between函数)

获得几个月后的日期(使用add_month)

求下一个指定日期(next_day)
例如——求下一个星期一:

求当前月的最后一天(last_day)

p12 Oracle转换函数

to_char可以把日期转换成指定格式的字符串,为了美观,记得取别名。
在yyyy前加fm可以去掉前导0(05月——>5月)

to_char还可以将数字以指定格式输出:(只能用9)
9前面加l表示人民币,加$表示美元

字符串转化成数值to_number,只能对数值类型的字符串进行转化!

常用:to_date可以将字符串类型的数据转化成日期类型

p4 Oralce通用函数
null值和任何值相加都是null值,因此,有时需要使用nvl函数,将null值转化为指定的值:

选择函数有两种(decode或case when then end)
下面直接用例子说明:



浙公网安备 33010602011771号