当前位置: 首页 新闻详细

oracle数据库如何利用PLSQL的文本导入器把excel表中的内容导入到数据库...oracle数据库知识点汇总(上)

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V:159999-78052 ,欢迎咨询oracle数据库怎么插入到空表显示,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、oracle数据库如何利用PLSQL的文本导入器把excel表中的内容导入到数据库...

1、打开要导入的文件,如图,要TXT,或是CSV格式,不是这俩就直接改后缀就行。

2、若出现图中本来要显示3列却未分列情况,则需要分几步进行,

step1:把字段计数改为3,;

step2:每选中一个field ,请将箭头指向的下来菜单中选中<tab>

总共需要改field1-3

效果图为:

3、就是指定你要的导入的已经建好的表TABLE中

如图所示,

1》点击"到Orale的数据"

2》所有者:即你的数据库登录的用户名;

   表:填写你建好的表名TABLE

3》把每个字段都指定好字段名和字段类型

4、这些检查无误后点导入就好了~

不过文本导入器只限于少量数据导入 大了的很容易卡死,这就要用批处理的方法了~具体如果需要再联系吧~~

二、在oracle数据库中如果查询一个数据库中有哪几张表?

1、本文以plsql图形化管理工具为例,使用它连接oracle数据库。当点开plsql的时候,就需要输入用户名、密码、数据库然后连接。如果连接成功,就能查看里面的表等等操作,如果连接不成功,就输入正确的信息再次尝试。

2、连接上数据库之后,默认会看到这个主界面。顶部是各种操作菜单,左侧第一个框是最近打开的一些信息,第二个框里面的才是数据库的所有信息。

3、如果不想看到这么多的框,只想专注于数据库的相关信息,就可以将其他框关闭或者隐藏,这两种方式只是点击不同的按钮而已,具体参见截图。

4、在oracle数据库中,用户是属于表空间的,因此,当使用某一个用户登录之后,看到的其实就是这个用户默认的表空间中的信息。这个时候,可以展开【Tables】菜单,就能看到当前表空间下的所有表,如果表的数量不多,就可以直接一个一个的数出数量。

5、如果当前用户具有管理员权限,还可以在【Tablespaces】菜单下面,找到所有的表空间名称,在每个表空间名称下面还有【Tables】菜单,这里面会显示这个表空间下面的所有用户和表。

注意,对于同一个表空间下的相同数据库,在这里会显示每个用户都拥有一套表结构

6、如果想直接获得表空间中的表数量,可以点击左上角的新建图标,选择【SQLWindow】,右侧就会出现一个空白的SQL语句书写窗口

7、获取指定表空间下表数量(这是包含了此表空间下的所有用户的表)

selectcount(1)fromall_tableswheretablespace_name='表空间名称';获取指定表空间下,指定用户的表数量。

selectcount(1)fromall_tableswheretablespace_name='表空间名称'andowner='用户名称';如果将count(1)换成星号,就可以查询表空间下的所有表名信息等。

oracle数据库知识点汇总(上)

原创2021-04-2611:22·百暗Oracle数据库

1.Oracle数据库:

Oracle公司成立于1977年,最早开发数据库的厂商,经过近40年的发展,oracle公司目前已经是世界数据库以及相关领域领导者。

Oracle数据库系统是由Oracle公司(甲骨文)提供的一款关系数据库管理系统。

目前主流的版本是Oracle9i,Oracle10g,Oracle11g,Oracle12c

表是数据库中存储数据的基本单元。

2.表空间:

1)表空间是用来存储数据库对象(表,视图,索引,序列...)的容器,一个表空间只能属于一个数据库。所有的数据库对象都存放到指定的表空间中。

2)表空间是由一个或者若干个数据文件组成,这些数据文件是数据库实际存放数据的位置

3)每个数据库创建的时候,系统都会默认的创建一个SYSTEM表空间,一个数据库可以包含若干个表空间,也可以只有一个SYSTEM表空间。

3.Oracle中常用数据类型

1)字符型:char,varchar,varchar2

a)char(n):用来保存固定长度的字符串,n代表字符串的长度,当实际数据库不足定义的长度,右边会使用空格补全

比如:char(10)'liu',实际保存时候占据10个存储空间,浪费了7个存储空间

b)varchar(n):可变的字符类型,n代表字符串的长度。当实际数据小于n的时候,则按照实际长度进行存储数据

比如:varchar2(10)。‘liu’实际保存时候占据3个存储空间,比较节约空间

c)varchar2(n):Oracle自行定义的类型,兼容性特别好,建议使用varchar2取代varchar类型。

2.)数值型:number

number:可以用来存储整数和小数类型。

number(n):只能保存整数m,整数的最大的位数是n。

比如:number(3),表示能保存最大的整数的位数是3。

number(n,m):可以保存有效数字的位数最多是n,小数的位数最多是m,整数的最多的位数是n-m

比如:number(7,2),7表示有效数字的位数是7,2代表小数的位数,5代表整数的位数。

3)日期时间类型:date

data:包含(世纪),年,月,日,时,分,秒

DD-MON-YY(默认日期格式)

DD:几号

MON:月份

YY:年份,后两位年份

比如:2011-12-2323-12月-11

SQL语句是学习的重点,掌握了SQL语句就可以操作任意的数据库。

SQL语句的分类:

1)数据定义语言(DDL):用来创建,修改,删除表结构

create(创建)drop(删除)alter(修改)

2)数据操作语言(DDL):用来操作表中的数据,完成插入,修改,删除功能

insert(插入)delete(删除)update(修改)

3)事务控制语言(TCL):用来管理数据库中的事务

commitrollback

4)数据查询语言(SQL):用来查询所需要的数据

select


5.创建表:

createtableperson1(

idnumber(4)primarykey,

namevarchar2(12),

agenumber(3)

);

createtableperson2(

idnumber(4)primarykey,

namevarchar2(12)

);

createtableperson3(

idnumber(4)primarykey,

namevarchar2(12),

jobvarchar2(12)

);

createtableperson4(

idnumber(4)primarykey,

namevarchar2(12),

addressvarchar2(12),

agenumber(3)

);

案例:创建一张表customer,cidnumber(4)

编号主键,cnamevarchar2(12)姓名,

sexchar(3)性别,addressvarchar2(12)地址,phonevarchar2(11),emailvarchar2(50)


createtablecustomer(

cidnumber(4)primarykey,

cnamevarchar2(12),

sexchar(3),

addressvarchar2(12),

phonevarchar2(11),

emailvarchar2(50)

);

案例:创建一张book表,bidnumber(4)图书

编号主键,bnamevarchar2(50)书名,pubvarchar2(50)出版社,authorvarchar2(50)作者,typevarchar2(50)类型,numinputnumber(10)进货量,numstorenumber(10)库存量

createtablebook1(

bidnumber(4)primarykey,

bnamevarchar2(50),

pubvarchar2(50),

authorvarchar2(50),

typevarchar2(50),

numinputnumber(10),

numstorenumber(10)

);


2)desc表名:查询表结构

案例:descperson1;descperson2;


6插入操作(insert):

1)向所有列都插入列值

格式:

insertinto表名

values(列值1,列值2,列值3.....)

a)每次执行insert语句,往表中插入一条数据

b)不要反复地执行同一条insert语句,避免出现重复数据。

c)insert语句中任意一个位置出现错误,则整个数据都无法插入表中。

insertintoperson1

values(1,'李世民',32);

d)主键所修饰的列的列值非空唯一。往person1表中任意插入3条数据

insertintoperson1

values(10,'程咬金',30);

insertintoperson1

values(11,'李靖',28);

insertintoperson1

values(12,'苏烈',24);

2)查询表中所有的数据:

select*from表名;


insertintoperson2values(1,'刘备');


2)向指定列插入列值

格式:

insertinto表名(列名1,列名2,列名3...)

values(列值1,列值2,列值3....)

a)表名中的列必须跟values中列值一一对应。

b)主键所在的列,必须要插入列值

insertintoperson4(id)values(1);

insertintoperson4(id,name)values(2,'曹操');


7.修改语句(update)

1)格式:

update表名set列名1=该列新值,

列名2=该列新值,列名3=该列新值

where条件:

2)根据where条件修改表中的数据,如果没有where条件修改表中所有的数据

person2;

IDNAME

----------------------

1刘备

2关羽

3张飞

4诸葛亮

案例:修改person2表ID是2的信息,把姓名改为马超

updateperson2setname='马超'

whereid=2;



where条件

根据where条件修改表中对应的数据,如果没有where条件,修改表中所有的数据


案例:练习修改


2删除语句

1)使用delete删除

deletefrom表名where条件

根据where条件,删除表中的数据,如果没有where条件,删除表中所有的数据

案例:删除person表中所有的数据

案例2:删除person4表中id=1的数据

案例3:删除person4表中姓名是刘备的数据


2)使用truncate删除:直接删除表中所有的数据,而且删除速度很快,但是删除的数据不能还原(不能恢复)

格式:truncatetable=表名

truncatetableperson4;

案例:删除person2,person3表中的数据


3)删除表

格式:droptable表名;

droptableperson1;

案例:删除person2,person3,person4

4简单的查询语句(没有where条件)

1)查询表中所有的数据

格式:

select*from表名(emp/dept)

2)查询表中某些列的列值

格式:

select列名1,列名2,列名3....from表名

selectempno,ename,jobfromemp

案例:查询emp表中员工的编号,姓名,职位,工资,入职时间

selectempno,ename,job,sal,hiredatefromemp

案例:查询emp表中员工的编号,姓名,上级领导(经理)的编号,入职时间

selectempno,ename,mgr,hiredatefromemp

案例:查询emp表中员工的姓名,工资,奖金,所属部门的编号

selectename,sal,comm,deptnofromemp

案例:查询dept表中部门的名称和地址

selectdname,locfromdept

案例:查询salgrade表中登记最低工资和最高工资

selectlosal,hisalfromsalgrade


5.别名:给表或者列起别名

1)给列起别名

a)使用as

格式:

select列名1as别名1,列名2as别名2...from表名

--selectempnoas员工的编号,enamelas姓名,jobas职位fromemp


案例:查询emp表中员工的姓名,职位,上级领导的编号,入职时间以及工资,对查询的列起别名

selectenameas姓名,jobas职位,mgras上级领导的编号,hiredateas入职时间,salas工资fromemp

案例:查询dept表中所有的信息,对查询返回的每一个列都起别名

--selectdeptnoas部门编号,dnameas部门名称,locas部门地址fromdept

b)使用空格起别名

格式:

select列名1别名1,列名2别名2....from表名

selectdeptno部门编号,dname部门名称fromdept

案例:查询emp表中员工的姓名,职位,工资,奖金以及所在部门的编号,对查询返回的每一个列都去起别名

--selectename姓名,job职位,sal工资,comm奖金,deptno所在部门的编号

fromemp

2)给表起别名:多表连接查询中,容易出现多张表中列名一致现象,通过给表起列名,别名指向对应表中的列

格式:

select别名.列名1,别名.列名2....

from表名别名

selecte.aname,e.job,e.sal,e.hiredate

fromempe


6排序:对查询返回的结果,根据某一个列或者多个列的列值大小进行升序或者降序排列

1.根据某一个列的列值大小进行升序或者降序排列

格式:

select*/列名from表名

orderby列名asc/desc

asc:升序,默认值

desc:降序

案例:查询emp表中员工的编号,姓名,职位,根据与昂的编号进行降序排列

--selectempno,ename,jobfromemp

orderbyempnodesc

案例:查询emp表中员工的姓名,职位,工资,入职时间以及奖金,最后根据员工的工资进行升序排列

--selectename,job,sal,hiredate,commfromemp

orderbysalasc

案例:查询emp表中员工的编号,姓名,入职时间以及上级领导的编号,最后根据入职时间进行升序排列

--selectempno,ename,hiredate,mgrfromemp

orderbyhiredateasc

案例:查询emp表中员工的编号,姓名,职位以及所属部门的编号,最后根据部门的编号进行降序排列

--selectempno,ename,job,deptnofromemp

orderbydeptnodesc


2)根据多个列的列值大小进行升序或者降序排列

格式:

select*/列名from表名

orderby列名1asc/desc,列名2asc/desc

首先根据列名1中的列值大小进行升序或者降序排列,如果列名1中的列值大小一致,根据列名2中的列值大小进行升序或者降序排列

案例:查询emp表中员工的姓名,职位,工资,奖金。入职时间,首先根据员工的工资进行升序排列,如果工资一致根据员工的入职时间进行降序排列

--selectename,job,sal,comm,hiredatefromemp

orderbysal,hiredatedesc

案例:查询emp表中员工的编号,姓名,职位,工资,入职时间以及所属部门的编号,根据员工所属部门

的编号进行升序排列,如果部门编号一致,根据原的编号进行降序排列

--selectempno,ename,job,sal,hiredate,deptnofromemporderbydeptno,empnodesc


3)排序永远是最后被执行的。



7.distinct:去掉重复的列值

案例:查询emp表中部门的编号

--selectdistinctdeptnofromemp

案例:查询emp表中员工的职位名称(去掉重复的职位)

--selectDISTINCTjobfromemp

8.nvl()函数的使用:

1)数字类型的数据可以进行正常的算术运算

案例:查询emp表中员工的姓名,职位,工资以及入职的时间,年薪(工资*12)

--selectename,job,sal,hiredate,sal*12年薪fromemp



知识点:

1.nvl()函数的使用

案例:查询emp表中员工的姓名,职位,工资,以及入职时间和年薪(工资*12+奖金)

1)任何空值(null)使用“+”来连接其他类型的数据,返回的结果也是空值。

2)nvl()函数:专门用来处理空值的问题

nvl(列名,数值):如果改列的列值不为null,返回改列的列值;如果改列的列值为null,返回是数值。

nvl(comm,o):如果改列的列值不为null,返回comm的列值;如果改列的列值为null,返回时0

--selectename,job,sal,comm,sal*12+nvl(comm,0)年薪fromemp


2带条件的查询语句:

格式:

select*/列名from表名

where条件

根据where条件查询对应的数据

1)关系运算符;

>,>=(大于或者等于),<,<=(小于或者等于),=,

!=(不等于),<>(不等于)

案例:查询emp表中工资高于1000的所有元的编号,姓名,职位,工资

--selectempno,ename,job,salfromemp

wheresal>1000

案例:查询emp表中姓名是King的员工的编号,姓名,职位

selectempno,ename,jobfromemp

whereename='KING'

案例:查询工资低于等于3000的所有员工的编号,姓名,职位,工资,最后根据工资进行升序排列

--selectempno,ename,job,salfromemp

wheresal<=3000

orderbysal

案例:查询emp表中职位不是‘manager’的所有元的编号,姓名,职位,工资,最后根据编号进行降序排列(两种方法)

--selectempno,ename,job,salfromemp

wherejob<>'MANAGER'(job!='MANAGER')

orderbyempnodesc

2)判断改列的列值是否为空值(null)

列名isnull:改列的列值为null

案例:查询emp表中奖金为空的员工的编号,姓名,职位以及奖金。

--selectempno,ename,job,commfromemp

wherecommisnull

案例:查询emp表中没有上级领导的员工的编号,姓名,上级领导标号以及工资

--selectempno,ename,mgr,salfromemp

wheremgrisnull

列名isnotnull:改列的列值不为null

案例:查询emp表中含有上级领导的员工所有的信息

--select*fromempwheremgrisnotnull

案例:查询emp表中含有奖金的员工的编号,姓名,职位,工资,奖金,最后根据编号进行降序排列

3)like:模糊查询

%:指代任意的0个或者多个字符。

_:指代任意的一个字符


案例:查询emp表中员工的姓名的第一个字符时‘s’的员工的姓名

分析:‘s’的后面可能有也有可能没有字符s%

--selectenamefromemp

whereenamelike'S%'

案例:查询emp表中名字中的最后一个字符是“e”的员工的姓名

--selectenamefromemp

whereenamelike'%E'

案例:查询emp表中名字中包含‘E’的所有员工的信息

分析:1)以“E”开头E%

2)以“E”结尾%E

3)包含“E”%E%

%E%包含所有的可能性

--select*fromemp

whereenamelike'%E%'

案例:查询emp表中名字的倒数第2个字符是‘k’的员工的姓名

分析:首先字符'k'DE前面可能有字符也有可能没有字符,在'k'的后面一定只有一个字符

--select*fromemp

whereenamelike'%K_'

案例:查询emp表中员工的倒数第三个字符是'i'的员工的姓名

--selectenamefromemp

whereenamelike'%I__'

notlike:

案例:查询emp表中名字不是以‘S’开头的信息

--select*fromemp

whereenamenotlike'S%'

案例:查询emp表中名字的最后一个字母不是'N'的员工的姓名

案例:查询emp表中姓名中没有字母k所有员工的编号,姓名,工资,最后根据原的编号进行升序排列

3.逻辑运算符:and,or,not

1)and:并且,连接多个条件,都必须满足

案例:查询emp表中员工的工资在1000-3000之间的每一个员工的编号,姓名,职位,工资

--selectempno,ename,job,salfromemp

wheresal>=1000andsal<=3000

案例:查询emp表中员工的职位是'MANAGER',并且在30号部门所在的所有员工的所有信息

--select*fromemp

wherejob='MANAGER'anddeptno='30'

案例:查询emp表中含有上级领导的员工,并且名字中不包含字母‘s’的所有员工的编号,姓名,职位,工资,最后根据员工的编号进行升序排列

--selectempno,ename,job,salfromemp

wheremgrisnotnullandenamenotlike'%S%'

orderbyempno

2)or:或者,连接多个或者关系的条件

案例:查询emp表中员工的工资高于1000,或者员工在20号部门的员工的所有信息

select*fromemp

wheresal>1000ordeptno=20

案例:查询emp表中名字的倒数第二个字母是‘L’或者没有上级的员工的编号,姓名,职位,工资,最后根据工资进行升序排列,如果工资一致,根据员工的编号进行降序排列

--selectempno,ename,job,salfromemp

whereenamelike'%L_'ormgrisnull

orderbysal,empnodesc

案例:查询emp表中员工不在10号部门。或者工资低于3000的所有员工的编号,姓名,职位,工资。所在部门的编号以及入职时间,最后根据入职时间进行升序排列

--selectempno,ename,job,sal,deptno,hiredatefromemp

wheredeptno!='10'orsal<3000

orderbyhiredate

3)not:否定,对整个条件的否定(取反)

案例:查询emp表中名字不是king的信息

--select*fromemp

whereename<>'KING'

select*fromemp

wherenotename='KING'

案例:查询emp表中不是30号部门的所有员工的姓名,编号

--selectempno,ename,deptnofromemp

wherenotdeptno=30

4聚合函数(分组):

count(),sun(),avg(),max(),min()

1)count(*/列名):“*”统计该表中数据的总条数;“列名”统计该列中列值不为null的数据的总条数。

案例:查询emp表中员工总人数

--selectcount(*)fromemp

案例:查询emp表中查询含有上级领导的员工的数量

--selectcount(mgr)fromemp

案例:查询emp表中含有奖金的员工的数量

--selectcount(comm)fromemp

案例:查询emp表中职位种类的个数

--selectcount(distinctjob)fromemp

2)sum(列名):统计该列的列值总和

--selectsum(sal)fromemp

案例:查询emp表中奖金的累加之和

--selectsum(comm)fromemp

3)avg(列名):统计该列的平均值

--selectavg(comm)fromemp

案例:查询emp表中工资的平均值

--selectavg(sal)fromemp

4)max(列名):统计该列的最大值

案例:查询emp表中员工的最高工资

--selectmax(sal)fromemp

案例:查询emp表中员工的编号最大值

--selectmax(empno)fromemp

5)min(列名):统计该列的最小值

案例:查询emp表中员工的最低工资和最低奖金

--selectmin(sal)最低工资,min(comm)最低奖金fromemp

案例:查询emp表中员工的人数,工资的总和,平均工资,最高工资,最低工资,对查询返回的列都起别名

--selectcount(*)总人数,SUM(sal)工资总和,avg(sal)平均工资,max(sal)最高工资,

min(sal)最低工资fromemp


5.分组:根据某一个列把表中的数据分成几组,然后经常对每一组的数据使用聚合函数(分组函数)。

1)格式:

select列名/聚合函数from表名

where条件

groupby列名

orderby别名/列名/聚合函数asc/desc

2)执行的顺序:首先执行where条件,对表中所有的数据进行过滤,然后执行groupby根据某一个列进行分组(分组以后的每一组数据使用聚合函数),最后执行orderby,对查询返回的结果进行排序。

案例:查询emp表中每一个部门的编号,人数,最低工资,最高工资,最后根据部门的编号进行升序排序

--selectdeptno,count(*),min(sal),max(sal)

fromemp

groupbydeptno

orderbydeptnoasc

案例:查询emp表中工资在1000-3000之间的员工的信息,根据部门分组,查询每个部门的编号,人数,工资总和,平均工资,最后根据平均工资,进行降序排序

--selectdeptno,count(*),sum(sal),avg(sal)平均工资

fromemp

wheresal>=1000andsal<=3000

groupbydeptno

orderbyavg(sal)平均工资desc

案例:查询emp表中含有上级领导的员工,每个职业的名称,人数,平均工资,工资总和,最后根据人数进行升序排列,如果人数一直根据工资总和进行降序排列

--selectjob,count(*),avg(sal),sum(sal)fromemp

wheremgrisnotnull

groupbyjob

orderbycount(*)asc,avg(sal)desc

案例:查询emp表中名字不是以‘s’开头,并且不在20号部门的员工,每个职业的名字,人数,最高工资和最低工资,最后根据最高工资进行降序排列

--selectjob,count(*),max(sal),min(sal)fromemp

whereempnonotlike'S%'andnotdeptno=20

groupbyjob

orderbymax(sal)desc


6.Oracle中常用字符处理函数:用来处理char,varchar,varchar2类型数据。

1)length(列名/字符串):统计当前列值/字符串中字符的个数

--selectename,length(ename)fromemp

--selectlength('helloword')fromemp

2)dual:虚拟表,Oracle中专门用来测试的表

--selectlength('hellowerld')fromdual

3)upper(列名/字符串):把当前的列值/字符串中的小写字母改为大写字母

--selectupper('helloWORLD')fromdual

4)lower(列名/字符串):把当前的列值/字符串中的大写字母改为小写字母。

--selectlower('helloWORLD')fromdual

案例:查询emp表中员工的姓名和职位把姓名和职位所有的字母都改为小写字母显示

--selectename,lower(ename),job,lower(job)fromemp

5)trim(列名/字符串):删除列名/字符串两端的空格

--selecttrim('helloworld')fromdual

6)串联字符串

a)||

--selectename||jobfromemp

--selectename||','||jobfromemp

b)concat(字符串1,字符串2)

selectconcat('努力','学习')fromdual

7)substr(参数1,参数2,参数3):用于截取字符串

参数1:要截取列名/字符串

参数2:如果为正数表示从1开始,根据正数的位置开始往后截取,如果为负数,表示从倒数第几个开始往后截取

参数3:要截取的字符个数

--selectsubstr('hello',3,2)fromdual

--selectsubstr('hello',-3,2)fromdual

案例:查询emp表中员工的姓名和姓名中倒数后两个字符

--selectename,substr(ename,-2,2)fromemp

length(ename)-1:倒数第2个字符位置

--selectename,substr(ename,

length(ename)-1,2)

fromemp

案例:查询emp表中员工姓名的倒数后3个字符

--selectename,substr(ename,-3,3)fromemp

---selectename,substr(ename,

length(ename)-2,3)

fromemp


------------码字不易,给个关注呗^_^

【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

电话+V:159999-78052

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

oracle数据库怎么插入到空表显示
发布人:wibuu9384525866 发布时间:2024-09-10