oracle增删改查详细图文.docx

上传人:b****7 文档编号:25984522 上传时间:2023-06-17 格式:DOCX 页数:23 大小:833.14KB
下载 相关 举报
oracle增删改查详细图文.docx_第1页
第1页 / 共23页
oracle增删改查详细图文.docx_第2页
第2页 / 共23页
oracle增删改查详细图文.docx_第3页
第3页 / 共23页
oracle增删改查详细图文.docx_第4页
第4页 / 共23页
oracle增删改查详细图文.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

oracle增删改查详细图文.docx

《oracle增删改查详细图文.docx》由会员分享,可在线阅读,更多相关《oracle增删改查详细图文.docx(23页珍藏版)》请在冰豆网上搜索。

oracle增删改查详细图文.docx

oracle增删改查详细图文

oracle增删改查详细图文

目录

1用户模式2

2查找数据(select)3

2.1简单查询4

2.2分组查询8

2.21groupby函数:

分类8

2.22having子句9

2.3连接9

2.3.1表别名9

2.3.2内连接10

2.3.3外连接10

2.3.4左外连接10

2.3.5又外连接11

2.3.6完全外连接11

2.3.7自然连接12

2.3.8自连接12

2.3.9交叉连接13

2.4常用系统函数13

2.4.1字符类函数13

2.4.2数字类函数15

2.4.3日期和时间类函数16

2.4.4转换类函数16

2.4.5聚集类函数17

2.5子查询17

2.5.1单行子查询17

2.5.2多行子查询17

2.5.3关联子查询18

3插入数据(insert)19

4更新数据(update)20

5删除数据(delete和truncate)20

1用户模式

1模式和模式对象

2示例模式scott

模式:

是一系列逻辑结构或对象的集合

模式对象是由用户创建的逻辑结构

示例模式scott

查询表selecttable_namefromuser_tables;

如何在system模式下查询scott模式所拥有的数据表

使用dba_tables数据表

进入system模式

connsystem/password

selecttable_namefromdba_tableswhereowner=’SCOTT’;

部门表

雇员表emp

工资登记表salgrade

工资补贴表bonus

2查找数据(select)

selcet{[distinct|all]columns*}

from{tables|views|otherselect}用于指定数据来源,包括表,视图,和其他select语句

[whereconditions]用于对检索的数据进行筛选,字句中不能用聚集函数如:

avg(),max(),sum()

[groupbycolumns]对检索结果分组显示与聚集函数一起使用时,groupby创建组,聚集函数运算每组值

[havingconditions]用于从使用groupby自居分组后的查询结果中筛选数据行,经常包括统计函数

[orderbycolumns[ASC|DESC]]对结果进行排序

2.1简单查询

查询单个表中所有列

在system模式下查询表

表名前面要加上改表模式所属名称

connsystem/passwd

select*fromscott.emp

查询多个表中所有列

scott模式

eg同时查询dept和salgrade表

select*fromdept,salgrade

查询特定列

select后面加想要查询的列名,用‘,’隔开

eg:

在scott模式下检索emp表中指定列(job,ename,empno)

selectjob,ename,empnofromemp

为列指定别名

eg:

检索emp表员工编号,姓名和年基本公司,日基本工资信息。

sal=月基本工资

年基本工资=sal*12

日基本工资=sal/30

查询语句

selectempno,ename,sal*12,sal/30fromemp;

使用列别名

列名[AS]列别名

enameas员工姓名

empno员工编号

selectempnoas“员工编号”,enameas“员工名称”’,sal*12as”年基本工资”sal/30as“日基本工资”fromemp;(注意引号为双引号)

as可省略

带有表达式的select子句

select语句中对于数字数据和日期都可以使用算术表达式,包括+-*/()

eg:

检索emp表的sal列,吧其值调整为原来的1.1倍

selectename.sal,sal*(1+0.1)fromemp;

查询结果中包含重复行

eg显示emp表中job职务列

消除重复:

distinct作用是消除重复内容,即一条完整数据全部是重复的,如果多行记录只有一列重复而其他列不重复,那么也是无法消除的;

查询比较大的表时候尽量避免使用distinct关键字,因为结果进行排序,效率低

eg

selectdistinctdeptnofromemp;

selectdeptnofromdept;

2.2筛选查询

选择行

1表达式比较

where

比较运算符格式:

expression{=|<|<=|>|>=|<>|!

=}expression

eg:

查询emp中工资大于1500的数据记录

2模式匹配like谓词

格式:

string_expression[not]likestring_expression[escape‘escape_character’]

like运算符可以使用通配符’%’,’_”其中:

‘%’:

代表0个或者多个字符。

‘_’:

代表一个且只能是一个字符。

注意(单引号)

3范围比较

关键字:

in(notin)

betweenbetweenand(notbetweenand)在…中间

4空值比较

查询emp表中无奖金的人

selectempno,ename,sal,jobfromempwherecommisnull;

2.2分组查询

2.21groupby函数:

分类

经常与聚集函数一起使用,使用groupby子句和聚合函数可以实现对查询结果中每一组数据进行分类统计,所以在结果中每个数据都有一个与之对应的统计值

selectjob,avg(sal),sum(sal),max(sal),count(job)fromempgroupbyjob;

注意:

select子句可以是被分组的列名和统计函数,不能是其他列名

2.22having子句

having子句通常与groupby子句一起使用,在完成对分组结果统计后,可以使用having子句对分组结果做进一步筛选

eg:

emp表中分组方式计算出每个部门平均工资,然后再通过having子句过滤出平局工资大于2000的记录信息

排序

orderby

orderby(order_by_expression[ASC](升序)|DESC(降序)])

eg:

selectdeptno,empno,enamefromemporderbydeptno,empno;

2.3连接

2.3.1表别名

使用简短的表别名代替原有较长的表名称,这样就可以大大缩减语句的长度

eg:

通过deptno列来关联emp表和dept表,并检索这两个表中相关字段的信息

别名设置在from后面

一旦使用别名就不能用表名了

2.3.2内连接

内连接是一种常用的多表查询方式,一般使用关键字innerjoin来实现,其中Inner关键字可以省略,当使用join关键字是语句指标是内连接操作,on做连接条件

2.3.3外连接

共分为三种:

左外连接letfouterjoin或leftjoin

又外连接rightouterjoin或者rightjoin

完全外连接fullouterjoin或fulljoin

2.3.4左外连接

左外连接的查询结果中不仅包含了满足连接条件的数据行,还包含了左边中不满足条件的数据行。

(右表需满足条件)

eg:

首先使用insert在emp表中插入新纪录(注意没有为deptno和dname列插入值,即他们的值为null),然后实现emp表和dept表之间通过deptno列进行左外连接

结果如下图所示:

左表中不满足条件的9527也显示出来了

2.3.5又外连接

同理显示右表的全部信息

dname为operations的右表数据数据在左表中没有记录,不满足条件,也显示出来了

eg

fulljoin

2.3.6完全外连接

将左右两表数据全部显示出来,将查询结果合并,并消除重复行。

如下图所示9527,operations数据行都显示出来了

2.3.7自然连接

与内连接相似,检索多个表时,orcale会将第一个表列与第二个表中具有相同名称的列进行自动连接,自然连接不需要指定进行连接的列,由系统自动完成,自然连接使用”naturaljoin’关键字

自然连接中不能使用别名

eg:

在emp表中检索工资大于2000的记录,并实现emp表和dept表的自然连接

2.3.8自连接

用于自参照表上显示上下级关系或层次关系,指在同一表中的不同列之间具有参照关系或者主从关系的表,例如emp表包含empnomgr列两者参照关系

eg:

查出所有管理者所管理的下属员工信息

2.3.9交叉连接

交叉连接就是不需要任何连接条件的连接,他是用crossjoin关键字来实现。

他的结果集是笛卡尔积

1a

2b

3

4

该结果集为(1a1b2a2b3a3b4a4b)4*2=8(行数)

2.4常用系统函数

2.4.1字符类函数

ASCLL(C)函数和CHR(i)函数

concat(s1,s2)函数s2连接到s1后面

INITCAP(s)函数首字母大写函数

INSTR(S1,S2[,I][,J])函数

LENGTH返回字符串长度

lowerupper将字符串全部换成小写,大写

ltrim(s1,s2)函数,删除左边字符串s2

rtrim(s1,s2)函数删除右边字符串s2

trim(s1,s2)函数删除两边字符串s2

replace(s1,s2[,s3]函数将s1中的s2函数替换成s3;

substr(s,I,[j])

截取字符串从s中的l位置截取数据长度为j

2.4.2数字类函数

abs(n)返回绝对值

ceil(n)返回大于或者等于数值n的最小整数

floor(n)返回小鱼或者等于n的最大整数

cos(n)返回n的余弦值,n为弧度

exp(n)返回e的n次幂e=2.71828183

log(n1,n2)返回以n1为底n2的对数

mod(n1,n2)返回n1/n2的余数

power(n1,n2)返回n1的n2次方

round(n1,n2)返回n1小说点后n2位

sign(n)若n为负数则返回-1,若n为正数,则返回1,若n=0则返回0

sig(n)返回n的正弦值,n为弧度

sqrt(n)返回n的平方根n为弧度

trunc(n1,n2)返回结尾到n2位小数的n1的值

2.4.3日期和时间类函数

add_month(n1,n2)返回当前日期加上n2个月后的日期

last_day(n)返回当前月最后一天

month_between(d1,d2)返回d1和d2中间的数目

new_time(d1,t1,t2)

sysdate返回系统当前日期

2.4.4转换类函数

to_char(x[,format])将表达式转换成字符串

to_date[s,format[lan]]将字符串转换成date类型,format表示字符串格式lan

表示使用的语言

to_number(s,format[lan])返回字符串s代表的数字,返回值按照format格式显示

format表示字符串格式,lan表示语言

2.4.5聚集类函数

avg(x[distinct|all])计算选择列表的平均值

count()查询记录数

max()查询最大值

min()最小值

sum()返回总和

variance()统计方差

stddev()返回列表项目的标准方差

2.5子查询

2.5.1单行子查询

单行子查询指返回一行数据的子查询语句,当在where子句中引用单行子查询时候,可以使用单行比较运算符(=,>,<,>=,<=,<>)

eg:

在emp表中,查询出既不是最高工资,也不是最低工资的员工信息

2.5.2多行子查询

多行子查询指返回多行数据的子查询语句,当在where子句中使用多行子查询时候,必须使用多行比较符(in,any,all);

in

eg:

在emp表中,查询不是销售部门(sales)的员工信息

any:

只要匹配一个查询结果即可

eg:

查询工资大于部门编号是10的任意的一个员工的员工工资的员工信息;

selectempno,ename,sal

fromemp

wheresal>any(selectsalfromempwheredeptno=10)anddeptno<>10;

and所有,满足所有条件

eg:

查询工资大于部门编号30的所有员工工资的员工信息

selectempno,ename,sal

fromemp

wheresal>all(selectmax(sal)fromempwheredeptno=30);

2.5.3关联子查询

有一些查询中内外查询需要相互依赖。

这种子查询叫关联子查询

eg:

在enp表查询工资大于同职位的平均工资的员工信息

selectempno,ename,salfromemp

wheresal>(selectavg(sal)fromempwherejob=emp.job);

3插入数据(insert)

语法格式:

insertintotable_name[(column_name[,column_name2]…)]

values(express1[,express2]…)

commit提交

eg:

向部门表中插入数据

insertintodept(deptno,dname,loc)values(88,’design’,’beijing’);

commit提交

创建一个表

4更新数据(update)

updatetable_name

set{column_name1=express1[,column_name2=express2…]

|(column_name1[,column_name2…])=(selectSubquery)}

[wherecondition]

eg:

把销售员工资上调20%

5删除数据(delete和truncate)

1deletefromtable_name[wherecondition]

2truncatetabletable_name用truncate删除速度快没有回滚记录

删除表:

drop

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1