Oracle学习之路③
今天这篇主要讲3个内容
- 认识sql
- 掌握Scott用户的数据表结构
- SQL的简单查询
一、认识sql
- Sql,结构化的查询语言。
- 如果每一套数据库都使用自己的一套操作命令,那会给我们开发者带来了非常大的难度。
- 由IBM创建了SQL操作标准,而Oracle是世界上第一个支持SQL语法的数据库。
- 所以如果你本身擅长DB2的数据库,那么你可以很轻松的上手Oracle数据库,或者sqlserver数据库,包括MySQL数据库。
- Oracle大型海量数据库(上亿),MySQL小型数据库(四五百万条数据),SqlServer(八千万条),DB2(几十亿)-> aix操作系统下。
- SQL功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词: CREATE、 ALTER、DROP、 SELECT、 INSERT、 UPDATE、 DELETE、GRANT、 REVOKE。且SQL语言语法简单,接近英语口语,因此容易学习,也容易使用。
SQL分类:
- DML(数据操作语言,开始中使用的部分):主要指的是数据库的查询和更新操作
- DDL(数据定义语言,开发前的设计):指的是数据对象的创建(可能是用户,可能是表):create,drop,alter
- DCL(数据库设计控制语言,系统人员工作):通过GRANT或REVOKE实现权限控制
二、Scott用户的表结构(重点)
Scott用户一共四个表,这四张表是我们以后讲解和学习的主要素材
- 查询一个用户下所有的数据表:select * from tab;
- 查询表结构:desc dept;
- 部门信息表:dept
NO | 列名称 | 类型 | 描述 |
---|---|---|---|
1 | DEPTNO | NUMBER(2) | 表示部门编号,最多由两位数字组成 |
2 | DNAME | VARCHAR2(14) | 表示部门名称,最多由14个字符组成,1个中文等于两个字符,但oracle比较神奇,你要想插入中文,三个字符表示一个汉字,编码比较怪,所以这里只能保存4个中文 |
3 | LOC | VARCHAR2(13) | 表示部门位置 |
查看表格内容:select * from dept; |
- 雇员信息表:emp
先查看表结构:desc emp;
NO | 列名称 | 类型 | 描述 |
---|---|---|---|
1 | EMPNO | NUMBER(4) | 雇员编号,最多由四个数字组成 |
2 | ENAME | VARCHAR2(10) | 雇员姓名 |
3 | JOB | VARCHAR2(9) | 雇员职位 |
4 | MGR | NUMBER(4) | 领导也是雇员,每个雇员对应领导的编号 |
5 | HIREDATE | DATE | 雇佣日期,包含日期和时间 |
6 | SAL | NUMBER(7,2) | Salary,(7,2),小数最多两位,整数最多占5位,99999.99 |
7 | COMM | NUMBER(7,2) | 佣金,基本工资+提成,只有销售才有佣金这一概念 |
8 | DEPTNO | NUMBER(2) | 部门编号,与上表是对应的 |
查看表格数据:Select * from emp; | |||
表格显示瘦身:col ename for a10; (col代表列,a表示长度) |
- 工资等级表:salgrade
查看表结构:Desc salgrade;
NO | 列名称 | 类型 | 描述 |
---|---|---|---|
1 | GRADE | NUMBER | 工资等级编号 |
2 | LOSAL | NUMBER | 此等级的最低工资 |
3 | HISAL | NUMBER | 此等级的最高工资 |
查看表格数据:Select * from salgrade; |
- 工资表:bonus
查看表结构:Desc bonus;
查看表格内数据:Select * from bonus;
此表无数据
三、SQL的简单查询
限定查询、函数查询、多表查询、统计查询
整个SQL结构就是由若干个关键字组成,所谓的简单查询,就是对关键字的使用
- 简单查询的基本操作
- 别名的设置
- 在简单查询中实现四则运算与字符串的连接显示
简单查询
即查询一张表中的所有数据行的内容。
以下教程使用的格式如下:
大写:关键字
小写:可变的字段
与 : &&
或: ||
句式:
SELECT [DISTINCT] *(如果你要表示或者的概念,你就加一个|) 列名称 [别名],列名称 [别名],列名称 [别名] FROM 表名称 [别名];
执行顺序:
第一个执行的是FROM,第二个才是SELECT,首先得确定数据来源,再做针对数据的筛选操作,就通过SELECT子句完成。
【范例:查询emp表中的全部记录】
简单查询是不能控制数据行的,只能通过SELECT子句控制列,如果是查询所有列,那么使用“*”通配符完成。
SELECT * FROM emp;
【范例:查询每个雇员的编号、姓名、职位、工资的信息】
SELECT empno,ename,job,sal FROM emp;
【范例:查询所有的职位信息】
SELECT job FROM emp;
【范例:清除重复数据】
SELECT DISTINCT job FROM emp;
如果查询的数据是多个列,只有在多列数据都相同的时候,才可以消除
SELECT DISTINCT job,empno FROM emp;
别名的设置
【范例:查询每个雇员的编号、姓名、年工资的信息】
除了能够进行简单的查询,也可针对不同的查询的列返回结构进行四则运算
SELECT empno,ename,sal12 FROM emp;
这个时候,为了改善显示的效果,我们可以使用别名定义
将sal12命名为income
SELECT empno,ename,sal*12 income FROM emp;
别名不建议使用中文
【范例:显示每个雇员的编号、姓名、基本年薪(每年有15个月的工资,200元的餐补,400元交通补贴,100元话费补贴,每年500的高温补贴)】
SELECT empno,ename,sal*15 + (200+400+100)*12 + 500 income FROM emp;
四则运算与字符串的连接显示
在使用SELECT子句的时候,除了可以查询列,还可以设置一些常量
- 如果常量是字符串,需要使用单引号“ ‘’ ”声明,如‘hello’
- 如果常量是数字,则直接输入,如10
- 如果常量是日期,则需要按照日期格式编写,如:17-12月-80
【范例:直接查询常量】
SELECT ‘雇员’,empno,ename FROM emp;
为什么要提常量,如果有需要也可以在SELECT子句中使用“||”连接查询结果
【范例:连接效果】
SELECT empno,ename FROM emp;
SELECT empno||ename FROM emp;
没什么意义
【范例:转换显示格式:雇员编号:7369,姓名:SMITH,收入:800】
SELECT ‘雇员编号:’|| empno || ‘姓名:’ || ename || ‘收入:’ || sal FROM emp
效果:雇员编号:xxx,姓名:xxx,收入:xxx;(大家实操一下看看效果哦)
今天简单和大家介绍了sql语言,和大家一起了解了Scott用户的表结构,还有简单查询;学习中实操非常重要,大家记得跟着实操哦
下次会讲限定查询