oracle

前端之家收集整理的这篇文章主要介绍了oracle前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.0 安装

2.0 初始化

1.使用 sqlplus 连接oracle数据库

1)在cmd中输入sqlplus  /nolog

2)使用管理员账户登录orcl数据库实例

conn  sys/[email protected] as sysdba

3)解锁scott账户

alter user scott account unlock;

4)通过scott账户登录

conn  scott/[email protected]

修改新的密码:

新密码:tiger(输入是不可见的)

确认新密码:tiger(输入是不可见的)

5)已连接

 

2.使用 可视化工具 连接oracle数据库

 

分享图片

 

 

 

3.0 sql

3.1 select关键字

select关键字

作用:检索

注意:1.select后面的列可以起别名(查询显示结果)

1) 列名后面一个空格后添加别名(别名中不许有“空格

2) 列名后面一个空格后使用双引号添加别名

3) 列名后面一个空格后使用as关键字,在as后面添加别名

2.distinct用于对显示结果的去重

1) distinct必须放在select后面

2) 如果查询有多列,必须满足多列值都相同时,方可去重。

 

from关键字

作用:检索

注意:检索的表后可以添加别名(别名不需要被双引号引起)

 

 

3.2 where关键字

select ename,job,sal from emp;

--例:查询工资大于2000的员工信息

select * from emp where sal >2000

 

-- =,!=,<>,<,>,<=,>=,any,some,all

--查询员工信息,条件:薪水要大于1000,薪水还要大于1500,薪水还要大于2000

select * from emp where sal > any(1000,1500,2000);

-- is null,is not null

select * from emp where comm is not null;

--错误:select * from emp where comm = null;

 

 

--查询员工薪水在2000-3000的员工信息

-- between x and y

select * from emp where sal between 2000 and 3000

--and,or,not

select * from emp where sal >=2000 and sal <=3000

 

 

-- in(list),not in(list)

--查询职务为 MANAGER 和 ANALYST 的员工信息

select * from emp where job = ‘MANAGER‘ or job = ‘ANALYST‘

select * from emp where job in(‘MANAGER‘,‘ANALYST‘)

 

--查询工资为3000到50000的员工信息

select * from emp where sal in (3000,5000);

select * from emp where sal not in (3000,5000);

 

-- exists(sub-query)、not exists(sub-query)

select * from emp where exists(select * from dept where deptno =10)

select * from emp where not exists(select * from dept where deptno !=10)

 

-- like _,%,escape ‘\‘ _\% escape ‘\’

--模糊查询

--查询:员工姓名中含有“M”的员工信息

select * from emp where ename like ‘%M%‘

select * from emp where ename like ‘_M%‘

select * from emp where ename like ‘__O%‘

select * from emp where ename like ‘%E_‘

select * from emp where ename like ‘%\%%‘ escape ‘\‘

“%”:匹配零个或若干个字符

“_”:匹配一个字符

在模糊查询中,如果查询的数据中有“%”“_”时,可以使用escape自定义转义字符

 

 

3.3 order by关键字

order by关键字

作用:用于对查询结果进行排序

用法

1.利用asc 、desc对排序列进行升序或降序

2.order by后可以添加多个列(逗号分隔),当一个列的值相同时,在按第二列进行排序,依次类推

例子:

显示所有的姓名、工种、工资和奖金,按工种降序排列,若工种相同则按工资升序排列。

select ename,sal,comm from emp order by job desc,sal asc

3.4集合操作

  1. union   并集(相同显示一次)

select * from emp where deptno = 20

union

select * from emp where sal >2000;

  1. union all   全集( 相同显示多次)

select * from emp where deptno = 20

union all

select * from emp where sal >2000;

  1. intersect   交集

select * from emp where deptno = 20

intersect

select * from emp where sal >2000;

  1. minus    差集

select * from emp where deptno = 20

minus

select * from emp where sal >2000;

 

注意:

1.保证两个SQL查询的列数是个数一致的

2.保证两个SQL查询的列的数据类型是一致的

3.保证两个SQL查询的列是相同的,否则查询的结果是无意义的

 

3.5函数

3.5.1单行函数

单行函数:对单个数值进行操作,并返回一个值。

分类

1.字符函数

1)concat(a,b) 拼接a,b两个字符串数据

2)initcap(x) 将每个单词x首字母大写

3)lower() / upper()  将字符串小写/将字符串大写

4)length() 获取字符串的长度

5)lpad(a,b,c) /rpad() 将a字符串左边填充至b长度,用c字符填充,如果c字符不填写,默认用空格填充

6)ltrim(a,b)  / rtrim()  去除a字符串左边的b字符,如果b不传参,默认去除空格

7)replace(a,c)   将a中的b字符串替换为c

8)substr(a,c) 将a的字符串,从b位置开始截取,截c个长度

9)trim( a from b) 将b左右两边的a字符去除

 

2.数字函数

abs() 求取绝对值

ceil() 向上取整

floor() 向下取整

round() 四舍五入

power(x,y)  x的y次幂

 

3.日期函数

sysdate 返回系统当前日期,注意没有括号

add_months(d1,d2) 在d1日期上,增加d2个月份

months_between(d1,d2) 返回d1和d2之间的相隔月份

last_day(d) 返回d日期所在月份最后一天的日期

next_day(d,X) 返回下一个“星期X”的日期

 

4.转换函数

to_char()  将数字、或日期转化为字符串

to_date() 将字符串转化为日期

to_number()  将字符串转化为数字

 

5.其他函数

nvl(x,y) 如果x为null,则显示为y,x和y的类型保持一致

sys_guid() 生成一个的32位随机字符串

decode()  条件取值,类同java的switch

case when then else end  条件取值,类同java的if-else if-else

 

 

3.5.2函数

函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果

avg()求平均值,只能对数字类型进行处理,不处理空字段

sum()求和,只能对数字类型进行处理

count()计数,对任何类型生效,不处理空字段

max() 求最大值,对任何类型生效

min() 求最小值,对任何类型生效

3.6 group by关键字

作用:对查询结果进行分组处理

 

用法

1.分组之后,不能将除分组字段之外的字段放在@H_602_502@select后面

2.group by 后面可以跟多个字段,则这多个字段值都相同时,才分为一组

3.分组之后,可以使用组函数对每个组进行数据处理

 

having 关键字

作用:用于对分组数据进行过滤

用法

类似于where用法

 

3.7 sql语句顺序

sql顺序分为两类:

1.sql的书写顺序

select   from    where    group by   having   order by [asc/desc]

2.sql的执行顺序

from   where   group by   having    select   order by [asc/desc]

 

3.8 连表查询

3.8.1  sql1992

sql分类

1.笛卡尔积 (表乘表)

2.等值连接 表的连接条件使用“=”

3.非等值连接 表的连接条件使用“>@H_602_502@>=@H_602_502@<@H_602_502@<=@H_602_502@!=@H_602_502@any

4.自连接 自己连接自己

5.外连接

1.左外连接,“(+)”在等号右边

2.右外连接,“(+)”在等号左边

3.“(+)”在哪一边的列,该表就补充null

3.8.2  sql1999

sql分类

1.cross join  交叉连接 (笛卡尔积) ,不需要@H_602_502@on关键字

2.natural join  自然连接 (找两个表中相同的列,进行等值匹配),不需要@H_602_502@on关键字

3.inner join 内连接

1)必须有@H_602_502@on关键字,@H_602_502@on表示连接条件

2)inner关键字可以省略

4.outer join 外连接,@H_602_502@outer关键字可以省略

1) left outer join

2) right outer join

3) full outer join

3.9 DML

insert关键字

作用:往表中插入一条(多条)数据

 

语法1:元祖值式的插入

语法1@H_602_502@insert into tablename(column1,column2,...,columnN) values(value1,value2,valueN);

 

语法2查询结果式的插入

语法2@H_602_502@insert into tablename sub-query

 

delete关键字

作用:从表中删除数据

语法:delete [from] tablename [where condition]

 

update关键字

作用:更新表中的数据

语法:update tablename set column1=value1,column2=value2,columnN=valueN [where condition]

3.10事务

事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。

 

目的:保证数据库的完整性

 

特点:事务不能嵌套

 

如何开启事务:

一个DML语句(@H_602_502@insert@H_602_502@delete@H_602_502@update)的执行

 

如何关闭事务:

1.显示调用@H_602_502@commit@H_602_502@rollback

2.当执行@H_602_502@DDL(Create@H_602_502@Alter@H_602_502@Drop)语句事务自动提交

3.用户正常断开连接时,事务自动提交。

4.系统崩溃或断电时事务自动回滚

 

3.11序列

一、概念:

序列(sequence)@H_602_502@oracle专有的专有对象

二、作用:

产生一个自动递增的数列

 

三、创建一个序列:

create sequence seq_name

increment by 1

start with 1

 

四、使用序列:

序列名.nextval

序列名.currval

 

3.12视图

一、定义:

视图(view):一种不占用物理空间的虚表。

 

二、作用:

将一些查询复杂的sql语句变为视图,便于查询

 

三、语法:

create [or replace] view v$_name

as sub-query

[with read only]

 

四、需要注意的点:

1.视图也可以从视图中产生

2.我们把用于产生视图的表称之为基表

3.我们对视图进行数据修改就是对基表进行数据修改,反之亦然

4.不能对多张表的数据,通过视图进行修改

 

五、使用视图需要注意

1.一般来讲,只有重复出现非常多次的@H_602_502@sql语句,才会创建视图

2.数据库迁移,视图也得随之迁移,否则在新数据中是不能用的

3.创建视图时,尽量不要带@H_602_502@or replace

 

3.13数据类型

数据类型分类

1.number(x,y)  数字类型,@H_602_502@x表示最大长度,@H_602_502@y表示精度

2.varchar2(x) 可变字符串,@H_602_502@x表示最大长度

3.char(x) 定长字符串,@H_602_502@x表示最大长度

4.long 长字符串,最大@H_602_502@2G

5.Date,日期(年月日时分秒)

6.TIMESTAMP 时间戳,精确到微秒

 

要掌握oracle数据类型,在@H_602_502@java中的对应数据类型

https://www.cnblogs.com/softidea/p/7101091.html

 

3.14 DDL

1.create关键字

作用:用于创建数据库对象(表、视图、序列等)

 

语法: create table tablename(column1 dataType,column2 dataType,columnN dataType)

语法2@H_602_502@create table tablename as subquery

 

2.alert关键字

作用:用于修改数据库对象(表、视图、序列等)

 

语法:

1)alter table tablename add@H_602_502@columnname dataType

2)alter table tablename modify( columnname dataType)

3)alter table tablename drop [column] columnname

 

3.drop关键字

作用:用于删除数据库对象(表、视图、序列等)

 

语法:

drop table tablename

3.15约束

一、定义

约束(constraint):在建表时,为某些列添加一些特定的规则,保证数据库的数据满足某种用户的要求。添加约束之后,在往表中(插入、更新)数据时,如果数据不满足约束,则该条语句不能执行

 

二、约束的分类

非空约束 @H_602_502@not null

唯一约束 @H_602_502@unique

自定义检查约束 @H_602_502@check

主键约束 @H_602_502@primary key

外键约束 @H_602_502@foreign key

 

三、如何添加约束

1)在建表的同时,可以为某一列添加约束

在列后面直接追加约束

在填写完所有列之后,添加约束

2) 在建表之后,通过修改表结构来添加约束

 

3.16三范式

第一范式

列不可分

第二范式

不能部分依赖

第三范式

不能存在传递依赖

 

3.17 索引

索引:类似于的目录,索引可以加快对表的查询速度。

 

作用:在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数据@H_602_502@,减少了磁盘的@H_602_502@I/O

 

使用:

CREATE INDEX index ON table (column[,column]...);

 

条件:

1.当数据量非常大的时候

2.当该列的值不经常重复的情况下

3.当该列的值不容易发生变化的情况下

 

重点:数据库会为我们的表自动创建索引,为表中的唯一键列自动添加索引

猜你在找的Oracle相关文章