oracle数据源配置 oracle创建数据库

Oracle 数据库1. Oracle数据库:Oracle公司成立于1977年,最早开发数据库的厂商,经过近40年的发展,oracle公司目前已经是世界数据库以及相关领域领导者。Oracle数据库系统是由Oracle公司(甲骨文)提供的一款关系数据库管理系统。目前主流的版本是Oracle9i,Oracle10g,Orac...

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-23 23-12月-11

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

SQL语句的分类:

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

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

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

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

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

commit rollback

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

select

5.创建表:

create table person1(

id number(4) pri***ry key,

name varchar2(12),

age number(3)

);

create table person2(

id number(4) pri***ry key,

name varchar2(12)

);

create table person3(

id number(4) pri***ry key,

name varchar2(12),

job varchar2(12)

);

create table person4(

id number(4) pri***ry key,

name varchar2(12),

address varchar2(12),

age number(3)

);

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

编号 主键,cname varchar2(12)姓名,

*** char(3)性别,address varchar2(12)地址,phone varchar2(11),e***il varchar2(50)

create table customer(

cid number(4) pri***ry key,

cname varchar2(12),

*** char(3),

address varchar2(12),

phone varchar2(11),

e***il varchar2(50)

);

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

编号 主键,bname varchar2(50)书名,pub varchar2(50) 出版社, author varchar2(50)作者,type varchar2(50)类型,numinput number(10)进货量,numstore number(10)库存量

create table book1(

bid number(4) pri***ry key,

bname varchar2(50),

pub varchar2(50),

author varchar2(50),

type varchar2(50),

numinput number(10),

numstore number(10)

);

2) desc 表名:查询表结构

案例:desc person1;desc person2;

6插入操作(insert):

1)向所有列都插入列值

格式:

insert into 表名

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

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

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

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

insert into person1

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

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

insert into person1

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

insert into person1

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

insert into person1

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

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

select * from 表名;

insert into person2 values(1,’刘备’);

2)向指定列插入列值

格式:

insert into 表名(列名1,列名2,列名3…)

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

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

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

insert into person4(id) values(1);

insert into person4(id,name) values(2,’曹操’);

7.修改语句(update)

1)格式:

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

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

where 条件:

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

person2;

ID NAME

—– —————–

1 刘备

2 关羽

3 张飞

4 诸葛亮

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

update person2 set name=’马超’

where id=2;

where条件

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

案例:练习修改

2删除语句

1)使用delete删除

delete from 表名 where 条件

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

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

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

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

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

格式:truncate table=表名

truncate table person4;

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

3)删除表

格式:drop table 表名;

drop table person1;

案例:删除person2,person3,person4

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

1)查询表中所有的数据

格式:

select * from 表名(emp/dept)

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

格式:

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

select empno,ename,job from emp

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

select empno,ename,job,sal,hiredate from emp

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

select empno,ename,mgr,hiredate from emp

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

select ename,sal,comm,deptno from emp

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

select dname,loc from dept

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

select losal,hisal from salgrade

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

1)给列起别名

a)使用as

格式:

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

–select empno as 员工的编号, enamel as 姓名,job as 职位 from emp

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

select ename as 姓名,job as 职位,mgr as 上级领导的编号,hiredateas 入职时间,sal as 工资 from emp

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

–select deptno as 部门编号,dname as 部门名称,loc as 部门地址 from dept

b)使用空格起别名

格式:

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

select deptno 部门编号,dname 部门名称 from dept

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

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

from emp

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

格式:

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

from 表名 别名

select e.aname ,e.job,e.sal,e.hiredate

from emp e

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

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

格式:

select */列名 from 表名

order by 列名 asc/desc

asc:升序,默认值

desc:降序

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

–select empno,ename,job from emp

order by empno desc

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

–select ename,job,sal,hiredate,comm from emp

order by sal asc

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

— select empno,ename,hiredate,mgr from emp

order by hiredate asc

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

–select empno,ename,job,deptno from emp

order by deptno desc

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

格式:

select */列名 from 表名

order by 列名1 asc/desc,列名2 asc/desc

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

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

— select ename,job,sal,comm,hiredate from emp

order by sal ,hiredate desc

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

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

— select empno,ename,job,sal,hiredate,deptno from emp order by deptno,empno desc

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

7.distinct:去掉重复的列值

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

–select distinct deptno from emp

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

–select DISTINCT job from emp

8.nvl()函数的使用:

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

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

— select ename,job,sal,hiredate,sal*12 年薪 from emp

知识点:

1. nvl()函数的使用

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

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

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

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

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

–select ename,job,sal,comm,sal*12+nvl(comm,0)年薪 from emp

2带条件的查询语句:

格式:

select */列名 from 表名

where 条件

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

1)关系运算符;

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

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

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

–select empno,ename,job,sal from emp

where sal > 1000

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

select empno,ename,job from emp

where ename=’KING’

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

— select empno,ename,job,sal from emp

where sal<=3000

order by sal

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

— select empno,ename,job,sal from emp

where job <> ‘MANAGER’(job!=’MANAGER’)

order by empno desc

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

列名 is null:改列的列值为null

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

–select empno,ename,job,comm from emp

where comm is null

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

–select empno,ename,mgr,sal from emp

where mgr is null

列名 is not null:改列的列值不为null

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

–select* from emp where mgr is not null

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

3)like:模糊查询

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

_:指代任意的一个字符

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

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

–select ename from emp

where ename like ‘S%’

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

–select ename from emp

where ename like ‘%E’

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

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

2)以“E”结尾 %E

3)包含“E”%E%

%E%包含所有的可能性

–select * from emp

where ename like ‘%E%’

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

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

–select * from emp

where ename like ‘%K_’

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

–select ename from emp

where ename like ‘%I_ _’

not like:

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

–select *from emp

where ename not like ‘S%’

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

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

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

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

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

–select empno,ename,job,sal from emp

where sal >=1000 and sal <=3000

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

— select * from emp

where job=’MANAGER’ and deptno=’30’

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

— select empno,ename,job,sal from emp

where mgr is not null and ename not like ‘%S%’

order by empno

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

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

select * from emp

where sal > 1000 or deptno = 20

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

–select empno,ename,job,sal from emp

where ename like ‘%L_’ or mgr is null

order by sal, empno desc

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

— select empno,ename,job,sal,deptno,hiredate from emp

where deptno != ’10’ or sal < 3000

order by hiredate

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

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

–select * from emp

where ename <> ‘KING’

select * from emp

where not ename =’KING’

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

–select empno,ename, deptno from emp

where not deptno=30

4 聚合函数(分组):

count(),sun(),avg(),***x(),min()

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

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

–select count(*) from emp

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

— select count(mgr) from emp

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

— select count(comm) from emp

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

— select count(distinct job)from emp

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

–select sum (sal) from emp

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

–select sum(comm) from emp

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

–select avg(comm) from emp

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

– -select avg(sal) from emp

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

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

— select ***x(sal) from emp

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

— select ***x(empno) from emp

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

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

–select min(sal) 最低工资, min(comm) 最低奖金 from emp

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

— select count(*) 总人数,SUM(sal) 工资总和,avg(sal) 平均工资,***x(sal) 最高工资,

min(sal) 最低工资 from emp

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

1)格式:

select 列名/聚合函数 from 表名

where 条件

group by 列名

order by 别名/列名/聚合函数 asc/desc

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

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

–select deptno,count(*),min(sal),***x(sal)

from emp

group by deptno

order by deptno asc

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

–select deptno,count(*),sum(sal),avg(sal) 平均工资

from emp

where sal>=1000 and sal<=3000

group by deptno

order by avg(sal) 平均工资desc

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

— select job,count(*),avg(sal),sum(sal) from emp

where mgr is not null

group by job

order by count(*) asc,avg(sal) desc

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

— select job,count(*),***x(sal),min(sal) from emp

where empno not like ‘S%’ and not deptno=20

group by job

order by ***x(sal) desc

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

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

–select ename,length(ename) from emp

–select length(‘hello word’) from emp

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

–select length(‘hello werld’) from dual

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

–select upper(‘hello WORLD’) from dual

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

–select lower(‘hello WORLD’) from dual

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

— select ename,lower(ename), job,lower(job) from emp

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

–select trim (‘ hello world ‘) from dual

6)串联字符串

a)

–select ename || job from emp

–select ename ||’,’|| job from emp

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

select concat(‘努力’,’学习’) from dual

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

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

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

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

–select substr(‘hello’,3,2) from dual

–select substr(‘hello’,-3,2) from dual

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

— select ename,substr(ename,-2,2) from emp

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

–select ename,substr(ename,

length(ename)-1,2)

from emp

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

–select ename,substr(ename,-3,3) from emp

—select ename,substr(ename,

length(ename)-2,3)

from emp

本文来自吃鸡只用平底锅投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/642861.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-20
下一篇 07-20

相关推荐

  • oracle数据源配置 oracle创建数据库

    Oracle 数据库1. Oracle数据库:Oracle公司成立于1977年,最早开发数据库的厂商,经过近40年的发展,oracle公司目前已经是世界数据库以及相关领域领导者。Oracle数据库系统是由Oracle公司(甲骨文)提供的一款关系数据库管理系统。目前主流的版本是Oracle9i,Oracle10g,Orac

    2023-07-20 23:23:01
    962 0
  • excel数据源怎么设置 excel数据源设置方法

    大家好,我是帮手。今天给大家分享一下EXCEL动态图表的设置技巧,可以自动增减数据源。很简单,很容易比较和展示。有好消息!为了方便大家更快掌握技能,寻找捷径。请点击文末“了解更多”,在里面找到并关注我,有大量模板资料可供免费下载,我等着你

    2023-05-22 08:14:01
    494 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信