Oracle_01

一、背景

1、创始人:Orcle创始人拉里·埃里森

2、引入:1989年Orcle进入中国以甲骨文命名

3、Orcle数据库是一个可以永久保存数据的仓库.database简称db,是一个关系型数据库(由多张表进行存储数据)

4、Orcle中使用的语言:

  • sql语言:结构化查询语言,用于操作数据库的
  • sql文件的扩展名为.sql

5、Orcle默认的端口号:1521

Mysql端口号:3306

SQLServer端口号:1433

二、分类

  • DQL  (数据查询语言)   查询(select)
  • DML  (数据操作语言)   增删改(insert \delete\update)
  • TCL   (事务控制语言)   commit  rollback
  • DDL  (数据定义语言)    表的操作:新建表,修改表,删除表,主键,约束
  • DCL(数据控制语言) DBA某些操作

三、数据表

  • 列(字段)
  • 行(记录):一行是一条记录(记录整条数据的各种信息)
  • 列值(内容)

四、数据类型

Orcle当中有23种数据类型,常用数据类型分为:

数字型:

整数number(m)m代表位数number(11)
小数number(m,n)m代表总数,n表示小数点后面几位number(5,2)   999.99

字符型:

可变字符varchar2(m)m代表字符串长度
固定字符char(m)m代表字符串长度

日期型:data

面试题

  • varchar2和char的区别:
  • varchar2:是一个可变长度的字符类型,规定了最大字符的空间大小,但实际用多少空间就占用多大空间,不浪费空间,但是效率低。
  • char:是一个固定长度的字符类型,规定了大小后,如果存入的字符要比规定的长度小,长度不变,它浪费空间,效率高。

五、设置

1、设置关键字大写步骤:

工具 → 首选项 → 用户界面 → 编辑器 → 滚动右边滚动条 → 找到关键字大小写 → 设置成大写

2、设置字体大小步骤:

工具 → 首选项 → 用户界面 → 字体 → (编辑器)选择 → 14

六、查询语句

(1)简单查询

没有任何条件的查询,查询所有,或者指定的某一个字段来查

1、简单查询:

select * from 表名;
  • select查询     
  • from从哪个表查询数据
  • *代表所有列

2、查询指定字段数据

select 字段1,字段2,... from 表名;

3、有算数运算表达式的查询

算数运算符:+ 、- 、* 、/ 

select 字段1,字段2+100,字段3+字段4 from 表名;

注意:任何非空字段与空字段做加法运算,结果都是空,所以用到nvl函数,空值赋值0 

空值:null

空置是无效的,未指定的,未知的...

4、别名使用

select 字段 as "别名",字段2 "别名",字段3 别名 from 表名;
  •  as字段"别名"
  • 字段"别名"
  • 字段 别名

注意:双引号使用:名字中有特殊符号的适合,区分大小写的适合

5、||拼接

select 字段 ||'任意字符' || 字段2 别名 from 表名;

6、distinct 去重

注意:去重复关键字必须放在开头

select distinct 字段1,字段2 from 表名;

实例:

--简单查询
--1、查询emp表里所有的员工
select * from emp;
--2、根据指定的字段查询想要的信息
select empno, ename, job, sal 
from emp;
--3、带有算数运算表达式的查询
--每一个员工的公司上涨1000
select empno, ename, job, sal + 1000 
from emp;

--查询所有员工的用工资(工资+奖金)
--任何非空字段与空字段做加法运算,结果都是空
--所以用到nvl函数,空值赋值0
select empno,ename,job,sal+nvl(comm,0)
from emp;

--4、别名使用
--方式1:字段as“别名”
select empno as "员工编号",ename,job,sal+1000 as "工资"
from emp;
--方式2:字段“别名”
select empno "员工编号",ename,job,sal+1000 "工资"
from emp;
--方式3:字段 别名
--双引号使用:名字中有特殊符号 或 区分英文大小写的时候
select empno 员工编号,ename,jopb,sal+1000 工资
from emp;

select empno 员工编号,ename,jopb,sal+1000 "工-资"
from emp;

select empno 员工编号,ename,jopb,sal+1000 "mothsal"
from emp;

--''单引号:表示字符串

--5、字段拼接||
select empno || '的姓名是' || ename 备注,job,sal
from emp;

 (2)条件查询

1、条件查询

select * from 表名 where 条件1 and 条件2 or 条件3  !=条件4;
  • and:并且
  • or:或者
  • !=    <>: 取反
  • 执行顺序 :先from--->where条件--->再select查询字段

2、非空与空

is null:是空    is not null:非空

select * from emp where 字段 is not null(或is null);

3、比较运算的使用

①等值比较

  • 字段=数值  
  • 字段=’字符串‘ 
  • 字段=to_date(日期,'yyyy-mm-dd')

②不等值比较:> < >= <= <>

4、betweeen and

select * from 表名 where 字段 between 值1 and 值2;
  •     between and :在两者之间,包含边界
  •     not  between and :不在两者之间

5、in():在...之内【等价于其中的任意一个】

select * from 表名 where 字段 in(值1,值2);

实例:

--条件查询
--1、单条件查询
--查询工资大于2000的员工信息
select * from emp;

select empno,ename,job,sal
from emp
where sal > 2000;

--2、多条件查询
--①查询工资大于等于2000 并且小于等于3000的员工
select empno,ename,job,sal
from emp
where sal >= 2000 and sal <=3000;

--②查询工资小于等于2000和大于3000的员工
select empno,ename,job,sal
from emp 
where sal <=2000 or sal > 3000; 

--③查询工资不包含3000的员工信息
select empno,ename,job,sal
from emp 
where sal <> 3000; 

select empno,ename,job,sal
from emp 
where sal != 3000; 

--④查询工资大于等于3000并且小于等于7000的或者小于1500并且不等于1000的员工
select empno,ename,job,sal
from emp 
where ( sal >=3000 and sal <= 7000 )or (sal < 1500 or sal <> 1000 );

select empno,ename,job,sal
from emp 
where  sal >=3000 and sal <= 7000 or sal < 1500 and sal <> 1000 ;

--执行顺序:from -> where -> select

--3、非空与空
--①查询有奖金的员工信息
select * from emp 
where comm is not null;

--②查询没有奖金的员工信息
select * from emp
where comm is null;

--4、条件语句:比较运算的使用
/*
      比较运算:等值比较:=
                字段=数值  
                字段=’字符串‘ 
                不等值比较:> < >= <= <>
*/
--查询工资等于3000的员工信息
select * from  emp where sal = 3000;

--查询工资岗位是clerk的员工信息
--字符串用单引号,单引号里的内容会区分大小写
select * from emp where job ='CLERK';

--查询入职日期为1980年12月17日入职的员工
-- to_date('1980-12-17','yyyy-mm-dd')或yyyy/mm/dd
--to_date():将字符串转日期格式
select * from emp
where hiredate = to_date('1980-12-17','yyyy-mm-dd');

--查询入职日期在1987年之后入职的员工
select * from emp
where hiredate >= to_date('1987-01-01','yyyy-mm-dd');

--两者之间 between and [包含边界值]
--查询工资在1000到3000之间的员工信息
select * from emp
where sal between 1000 and 3000;

--查询入职日期在1981年1月1日到1981年12月31日之间的员工
select * from emp 
where hiredate between to_date('1981-01-01','yyyy-mm-dd')
and to_date('1981-12-31','yyyy-mm-dd');

--员工工资不在2000到3000之间的员工信息
select * from emp 
where sal not between 2000 and 3000;

--in 在...之内
--查询工资是1500或是300 或者是5000的员工信息
select * from emp 
--where sal = 1500 or sal = 3000 or sal = 5000;
where sal in(1500,3000,5000);

--查询工作岗位是CLERK,Manager的员工信息
select * from emp 
where job in('CLERK','Manager');

--查询工作岗位不适合CLERK,Manager的员工信息
select * from emp 
where job not in('CLERK','Manager');

(3)模糊查询 

select * from 表名
where  字段 like '%m%';
  •  开头:where 字段 like '字符%';
  •  包含:where 字段 like '%字符%';
  • 结尾:where 字段 like '%字符';

注意:_代表一个字符,一个位置


--查询名字中带有下划线的员工信息
select * from emp
where ename like '%/_%' escape '/';
--''里的下划线表示一个位置,用escape赋予/转义含义

 '_'(下划线):需要先转义,但是/没有转义的功能,必须通过escape关键字将/变为带有转义功能的斜线

(4)排序查询

select * from 表名
order by 字段 desc/asc

 执行顺序 :from-->where-->select-->order by  
 order by 永远放在代码块的最后一行,是最后执行

  • order by:排序
  • desc:降序
  • asc:升序(可以省略)

实例:

--排序查询
--【单条件排序】
--将工资表按照工资的降序排序
--desc降序排序
select * from emp
order by sal desc;

--将工资表按照工资的升序排序
select * from emp
order by sal asc;--默认是升序,asc可省略

--根据员工的姓名排序
select * from emp
order by ename desc;

--【多条件排序】
--根据工资降序排序,如果工资相同按照入职日期升序排序,如果日期一样,按照姓名升序排序
select * from emp
order by sal desc,hiredate asc,
ename asc;

--查询员工工资大于1000并且名字中含有字母A的员工信息,将工资按照降序排序
select * from emp 
where sal > 1000 and ename like '%A%'
order by sal desc;

--执行顺序 from-->where-->select-->order by  
--order by 永远放在代码块的最后一行,是最后执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值