Oracle 数据库初步了解(一)

目录

一、oracle简介

二、SQLPLUS简介

1.直接输入用户名和密码,中间使用/分割,如下所示

2.先输入用户名,再输入密码。这种方式输入密码的时候完全不可见。

请输入用户名:scott

三、SQL查询

1.SQL语句

2.Scott账户

3.简单的列查询

4.限定查询

4.1关系运算

4.2取值范围运算

4.3基数范围运算

4.4模糊查询

4.5空判断

4.6 逻辑运算

5.查询排序

总结



一、oracle简介

     Oracle数据库是美国甲骨文公司提供的分布式数据库产品,是目前Client/Server和Browser/Server架构通用的数据库。

二、SQLPLUS简介

       SQLPLUS是Oracle自带的数据库操作程序,界面简单,功能稳定,适合开发和学习使用。启动的方式只需要在运行窗口中输入sqlplus,回车即可。其登录方式有两种:

1.直接输入用户名和密码,中间使用/分割,如下所示

请输入用户名: scott/tiger

2.先输入用户名,再输入密码。这种方式输入密码的时候完全不可见。

请输入用户名:scott

输入口令:


三、SQL查询

1.SQL语句

主要有三种语句:

DML 数据操作语言查询(DQL)和更新(增加、删除、修改)操作。

DDL 数据定义语言定义数据库对象,例如一些数据库设计人员进行表结构的定义。

 DCL 数据控制语言控制用户操作权限,一般由DBA(数据库管理员)负责,程序员基本不用学习。

2.Scott账户

     Scott是Oracle初创时期的程序员名字,一般登录的密码是tiger。查看Scott账户中存在的表SELECT * FROM tab;scott账户中存在四张表 通过 DESC 表名 查看

3.简单的列查询

       查询的结果包含所有的行(条目、记录),依次展示每条数据,唯一能做的是控制显示的列。

其语法格式是:

SELECT [DISTINCT]* 列[别名],列[别名],...  2.控制要显示的数据列
FROM 表名称[别名]                           1.确定数据查询来源

【例子】查询每个雇员的编号、姓名和年薪(年薪=基本工资x13)

SELECT empno,ename,sal*13 FROM emp;

 也可以给列起列名。

SELECT empno 编号,ename 姓名,sal*13 年薪 FROM emp;

 但是在开发过程中注意要减少中文的使用

4.限定查询

限定查询是在简单查询的基础上,显示结果中的行数,即可以只显示一部分记录。

语法结构如下:

SELECT [DISTINCT]* 列[别名],列[别名],...  3.控制要显示的数据列
FROM 表名称[别名]                           1.确定数据查询来源
[WHERE 条件(s)];                         2,根据判断条件选择参与的运算行

限定查询主要通过WHERE子句来进行,支持6种运算:

4.1关系运算

运算符 含义
>         左边的值是否大于右边的值
<         左边的值是否小于右边的值
>=       左边的值是否大于等于右边的值
<=       左边的值是否小于等于右边的值
!=        左右两边的值是否不等于
<>       左右两边的值是否不等于
=         左右两边的值是否等于

【例子】查询所有基本工资高于2000的雇员信息。

SELECT * FROM emp WHERE sal>2000;

4.2取值范围运算

     取值范围运算使用BETWEEN...AND...,AND两边是区间(闭区间)。

【例子】查询所有在1981年雇佣的雇员信息。

SELECT * FROM emp WHERE hiredate BETWEEN '01-1月 -81' AND '31-12月-81';

4.3基数范围运算

     主要使用关键字IN、NOT IN

【例子】查询出雇员编号是7369、7566、7839、8899(不存在)的雇员信息。

此例不能使用BETWEEN...AND,需要使用IN

SELECT * FROM emp WHERE empno IN(7369,7566,7839,8899);

实际上上面的IN操作等同于下面的操作:

SELECT * FROM emp 
WHERE empno=7369 OR empno=7566 OR empno=7839 OR empno=8899;

4.4模糊查询

模糊查询使用关键字LIKE,可以只输入一部分查询的内容,其它部分使用两个符号来进行标记:

匹配任意一个字符

匹配任意多个字符(0,1,若干)

【例子】查询所有姓名以字母A开头的雇员信息。

SELECT * FROM emp WHERE ename LIKE 'A%';

4.5空判断

【例子】查询不领取佣金的雇员信息。

SELECT * FROM emp WHERE comm IS NOT NULL;
SELECT * FROM emp WHERE NOT comm IS NULL;

4.6 逻辑运算

AND与操作,所有的条件都满足,结果才满足。

OR或操作,所有的条件满足一个,结果就满足。

NOT非操作,将结果取反。

【例子】查询所有薪金高于1200的销售信息。

--查询所有薪金高于1200的销售信息。
SELECT * FROM emp WHERE sal>1200 AND job='SALESMAN';

5.查询排序

可以按照指定的列的顺序从大到小或从小到大排序。

语法格式如下: 

SELECT [DISTINCT]* 列[别名],列[别名],...     3.控制要显示的数据列
FROM 表名称[别名]                              1.确定数据查询来源
[WHERE 条件(s)];                            2,根据判断条件选择参与的运算行
[ORDER BY 字段 [ASC|DESC],字段[ASC|DESC],...] 4.数据排序

【例子】所有员工按照工资从高到低排列。

SELECT * FROM emp ORDER BY sal DESC;

【例子】按照工资从高到低排序,如果工资相同,则按照雇佣日期从晚到早排序。

SELECT * FROM emp ORDER BY sal DESC,hiredate DESC;

【例子】按照年薪排序,年薪越高的越靠前。


--先查询所有的人年薪
SELECT ename,sal*12 income FROM emp;
--增加排序(先起的别名,再用别名可以)
SELECT ename,sal*12 income FROM emp ORDER BY income DESC;

四、单行函数 

  一、字符串函数

1.1大小写转换

  • UPPER 转换为全大写
  • LOWER 转换为全小写
  • INITCAP 转换为首字母大写,其余字母小写的格式

输入参数:要处理的字符串(包括字符串列,后面不再赘述)

返回值:转换后的字符串

【例子】验证大小写转换函数。

SELECT LOWER('Hello World!') FROM dual;

【例子】查询所有雇员的姓名,要求姓名都是小写

SELECT LOWER(ename) FROM emp;

【例子】显示所有部门的名称和位置,要求首字母大写,其余字母小写。

SELECT INITCAP(dname),INITCAP(loc) FROM dept;

1.2 获取长度

函数名称:LENGTH

输入参数:字符串

返回值:字符串的长度,长度指的是字符数量,在当前环境下所有的字符都占用一个长度。

查询所有雇员的姓名以及姓名的长度,并按照姓名的长度进行倒序排列

--不用别名
SELECT ename,LENGTH(ename)
FROM emp
ORDER BY LENGTH(ename) DESC;

--使用别名
SELECT ename,LENGTH(ename) ln
FROM emp
ORDER BY ln DESC;

二、数字函数

2.1 四舍五入

函数名称:ROUND

输入参数1:要处理的数字

输入参数2:保留的小数位,如果要保留到十位百位则使用负数,例如-1、-2......

返回值:处理后的数字

【例子】验证四舍五入函数。

总结

提示:这里对文章进行总结:

--保留两位小数
SELECT ROUND(123.456,2) FROM dual;

--保留十位
SELECT ROUND(123.456,-1) FROM dual;

【例子】显示所有员工的姓名和工资,要求工资精确到百位(四舍五入)

SELECT ename,ROUND(sal,-2) FROM emp;

2.2 截取

函数名称:TRUNC

输入参数和返回值与ROUND完全一样,这两个函数唯一的区别在于保留整数和小数位的逻辑不同,TRUNC直接舍弃后面的位数。

三、日期函数

3.1 伪列

Oracle中所有的表都有以下两个伪列:

  • SYSDATE

   当前日期

  • SYSTIMESTAMP

     当前日期和时间

3.2 日期加减计算

【例子】统计出每一个雇员的雇佣天数。

SELECT ename,SYSDATE-hiredate FROM emp;

3.3 计算两个日期之间的月数

函数名称:MONTHS_BETWEEN

输入参数1:计算日期1,通常是更晚的日期

输入参数2:计算日期2,通常是更早的日期

返回值:相差的月数

【例子】统计所有雇员的姓名和工作年限(要求四舍五入到个位)。

SELECT ename,ROUND(MONTHS_BETWEEN(SYSDATE,hiredate)/12,0) FROM emp;

3.4 加月数

基于某个日期加上指定的月数,得到若干月后的日期。

函数名称:ADD_MONTHS

输入参数1:要计算的日期

输入参数2:月数,一个整数

返回值:计算后的日期

3.5 下一个周几

可以求出基于某个日期后,下一个周几的日期。

函数名称:NEXT_DAY

输入参数1:要计算的日期

输入参数2:周几,支持中文和阿拉伯数字,例如‘星期一’,1-7分别表示周日-周六

返回值:计算后的日期

【例子】下个周一是几号?

--使用中文字符串
SELECT NEXT_DAY(SYSDATE,'星期一') FROM dual;
--使用阿拉伯数字
SELECT NEXT_DAY(SYSDATE,2) FROM dual;

3.6 指定月的最后一天

求出某个日期所在的月的最后一天的日期。

函数名称:LAST_DAY

输入参数:要处理的日期

返回值:处理后的日期

【例子】这个月的最后一天是?

SELECT LAST_DAY(SYSDATE) FROM dual;

【例子】查询每个月倒数第三天雇佣的员工信息

SELECT * FROM emp
WHERE hiredate=LAST_DAY(hiredate)-2;

四、转换函数

主要以转字符串函数作为讲解的函数,其它转换函数不作为重点掌握,因为Oracle本身有数据类型自动转换的功能。

函数名称:TO_CHAR

输入参数1:要转换的数据,本次讲解主要使用的是日期

输入参数2:转换的格式,常见的格式有年(yyyy)、月(mm)、日(dd)、时(hh、 hh24)、分(mi)、秒(ss)。

返回值:固定格式的字符串

【例子】显示当前的日期,要求以符合中国人阅读的格式显示。

SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual;

【例子】拆分日期数据,单独以三列的格式显示年月日。

SELECT TO_CHAR(SYSDATE,'yyyy'),TO_CHAR(SYSDATE,'mm'),TO_CHAR(SYSDATE,'dd') FROM dual;

【例子】查询所有在上半年雇佣的雇员信息。

SELECT * FROM emp WHERE TO_CHAR(hiredate,'mm')<=6;

五、空值转换函数

函数名称:NVL

输入参数1:空值或空值列

输入参数2:要把空值转换的默认值

返回值:如果参数1为NULL,返回值是参数2;如果参数1不为NULL,返回值是原数值。

【例子】查询所有雇员的姓名和月收入(月收入=薪金+佣金)。

SELECT ename,sal+NVL(comm,0) FROM emp;

总结

感觉写一篇里太长了,分着写。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值