Oracle读书笔记--基础(一)

tech2022-09-11  103

Oracle基础小知识

Oracle简介SQL语言分类解决显示中文乱码问题比较运算符基本查询条件与排序查询

Oracle简介

甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。第一份工作就是有使用到Oracle数据库,所以特意写些自己学到的知识点。

SQL语言分类

➢ DML(数据库操作语言): 其语句包括动词 INSERT,UPDATE 和 DELETE。它们分别用于添加,修改 和删除表中的行。也称为动作查询语言。 ➢ DDL(数据库定义语言): 其语句包括动词 CREATE 和 DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL 包括许多与人数据库目录中获得数据有关的保 留字。它也是动作查询的一部分。 ➢ DCL(数据库控制语言):它的语句通过 GRANT 或 REVOKE 获得许可,确定单个用户和用户 组 对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。

解决显示中文乱码问题

数据库表内容出现中文乱码问题:

查询 select userenv(‘language’) from dual; 显示内容为:AMERICAN_AMERICA.ZHS16GBK复制内容,在本地电脑配置环境变量: key: NLS_LANG value: AMERICAN_AMERICA.ZHS16GBK

比较运算符

测试用到的表关系:

基本查询

/* SQL: 结构化查询语言 DDL:数据库定义语言 DML:数据库操作语言 DQL:数据库查询语言【重点】 DCL:数据库控制语言 完整sql语法: select *|字段名... from 表名 where 条件 group by 字段名 having 条件 order by 字段名 asc|desc */ --基本查询 select * from emp; --别名: "别名一般不用中文;别名如果是纯数字或者数字开头 必须使用双引号;别名不能使用单引号" select empno 员工编号,ename as 员工姓名, job "工作", mgr as "领导编码",hiredate "8888888888" from emp; --去重 select distinct job from emp; --四则运算: 加减乘除 --空值问题: 任何数字加上空都为空,去空 --使用:单行函数: nvl(v1,p1) : 当v1等于空的时候,返回p1 -- 计算员工的年薪,年收入 select empno,ename,sal as 月薪,sal*12 as 年薪,comm 奖金,sal*12+nvl(comm,0) as 年收入 from emp; --字符串拼接: /* 1)单行函数: concat(v1,v2) : 把v1和v2拼接起来 2)使用||拼接【推荐】 */ select concat(empno,ename) as 员工编号与员工姓名 from emp; select concat(concat(empno,','),ename) as 员工编号与员工姓名 from emp; select empno||','||ename||'======='||job from emp;

条件与排序查询

=========================条件与排序查询========================= /* 完整sql语法: select *|字段名... from 表名 where 条件 order by 字段名 asc【升序由小到大,默认值】|desc【降序:由大到小】 */ --查询每月能得到奖金的雇员 --空值永远不等于空【comm != null 这样是不对】 -- 空: is null 非空:is not null select * from emp where comm is not null and comm > 0; --如果用比较运算,可以去空 select * from emp where comm > 0; --基本工资大于 1500 但是小于 3000 的全部雇员 select * from emp where sal > 1500 and sal <3000; --基本工资大于等于 1500 但是小于等于 3000 的全部雇员 select * from emp where sal >= 1500 and sal <= 3000; --使用between and : 包含边界值 select * from emp where sal between 1500 and 3000; -- 案例: 找出1981年入职的员工 -- 单行函数:to_date() select * from emp where hiredate between to_date('1981-01-01','yyyy-mm-dd') and to_date('1981-12-31','yyyy-mm-dd'); -- 模糊查询 --案例: 查询员工姓名中包含一个M 字的员工 select * from emp where ename like '%M%'; --案例: 查询员工姓名的第二个字母包含 一个 M 的员工 : oracle的值区分大小写 select * from emp where ename like '_M%'; =========================排序查询========================= --查询员工的工资,由大到小 select * from emp order by sal desc; --查询员工的奖金,对奖金排序,由大到小 -- 对空值处理: nulls last【放到最后】|first【放到最前】 select * from emp order by comm desc nulls last; =========================分页========================= 如要查询emp表中专的前5行数据,可用如下语句:属 select * from emp where rownum<=5;

转载请注明出处!!!本文为个人所学的一些笔记以及小结。

未完待续

最新回复(0)