基础
一)oracle概述
(1)了解一些关于数据库的概念
数据:在数据库领域看来,数据是存储的基本单位,包含文本,图片,视频,音频
数据库:就是数据仓库,存储数据的地方,特指计算机设备中的硬盘,以二进制压缩文本的形式存放
该文件不能直接操作,必须由各数据库公司提供的工具方可操作,该文件的格式是每个数据库公司内部
定义的,不是统一规则
数据库对象:在Oracle中,例如:表,视图,索引,函数,过程,触发器。。。
关系型数据库:简单的说,以行列结构的形式,将数据库中的信息表示出来的对象,即二维表
常见流行的关系型数据库:Oracle&MySQL/Oracle–>DB2/IBM—>SQLServer/Microsoft–>。。。
(2)了解oracle11g背景
(3)oracle数据库服务器由二部份组成
(A)实例:理解为对象,看不见的
(B)数据库:理解为类,看得见的,E:\app\Administrator\oradata\orcl*.DBF
(4)oracle服务器与orcl数据库的关系
一个oracle数据库服务器中包括多个数据库,例如:orcl,orm,oa,bbs,tax,erp等等
在E:\oracleDB\oradata\目录下,有多少个文件夹,就有多少个数据库,例如:orcl文件夹=orcl数据库
我们向数据库中存储的所有数据库,最终都会存放在对应库的*.DBF文件中,以二进制压缩形式存放
在oracle服务器中创建数据库:参见《在oracle服务器中创建数据库.JPG》
注意:我们在安装oracle时,已经创建好了一个数据库,默认名叫orcl,除非你当时改了数据库名字
(5)sqlplus和sqldeveloper,orcl实例,orcl数据库之间的关系
sqlplus是oracle11g自带的一个客户端黑屏界面工具,该工具可以连接到某个数据库的实例上,从而操作数据库
sqldeveloper是oracle11g自带的一个客户端彩屏界面工具,该工具可以连接到某个数据库的实例上,从而操作数据库
如果你觉得这二款客户端工具不喜欢,可以上网下载第三方的客户端工具
(6)以sys超级用户名,dba角色,即超级管理员身份解锁scott方案/用户,并为scott设置一个密码为tiger
解锁用户:alter user scott/hr account unlock;
设置密码:alter user scott/hr identified by tiger/lion;
普通用户scott
密码tiger
(7)使用客户端sqlplus工具进入与退出orcl数据库
------以超级管管理员角色进入
c:/>sqlplus / as sysdba
sql>exit
------以普通用户进入
c:/>sqlplus scott/tiger
sql>exit
声明:我们以普通用户的身份进入
二)Java工程师,oracleSQL和oracle的关系
(1)第四代语言:SQL【结构化查询语言,面向关系的】
第一代:机器语言
第二代:汇编
第三代:C/C++/C#/Java/VB/…
第四代:SQL
将来。。。
(2)SQL92/【99】标准的四大分类
(A)DML(数据操纵语言):select,insert,update,delete
(B)DDL(数据定义语言):create table,alter table,drop table,truncate table 。。。
(C)DCL(数据控制语言):grant 权限 to scott,revoke 权限 from scott 。。。
(D)TCL(事务控制语言):commit,rollback,rollback to savepoint 。。。
(3)oracleSQL与SQL92/99的关系
SQL92/99标准,访问任何关系型数据库的标准
oracleSQL语言,只访问Oracle数据库服务器的专用语言
(4)Java技术和oracleSQL的关系
JDBC–>使用OracleSQL语法–>Oracle服务器—>orcl数据库–>表–>记录
Hibernate–>使用OracleSQL语法–>Oracle服务器
MyBatis–>使用OracleSQL语法–>Oracle服务器
简单查询
1.使用password命令修改密码
password
2.退出sqlplus工具
exit
3.查询当前用户
show user
4.查询hr用户下的所有对象,使用tab表,tab表每个用户下都有,作用是查询该用户都有哪些表
select * from tab;
5.设置显示的列宽(字符型)
column 列名 format a16;
6.设置显示的列宽(数字型)只能用9一个9代表一位
column 列名 format 9999;
7.查看表结构
desc emp;
更改表的样式、结果
col empno for 9999;
col ename for a10;
col job for a10;
col mgr for 9999;
col hiredate for a12;
col sal for 9999;
col comm for 9999;
col deptno for 99;
set pagesize 20;
col tname for a20;
set pagesize 80;
8.查询所有内容(*代表通配,表示查询出该表中所有的字段,一般不推荐使用)
SELECT * FROM EMP;
SELECT EMPNO , ENAME , JOB, MGR, COMM FROM EMP;
查询员工的编号,姓名,月薪,年薪(月薪*12)
SELECT empno,ename,sal,sal*12 ’年薪‘ FROM EMP;
查询员工的编号,姓名,月薪,年薪,年收入(年薪+奖金)别名不能使用单引号,因为oracle认为单引号为字符类型或日期类型
select empno 员工编号,ename 名字,sal 月薪,sal*12 年薪,sal*12+comm 年收入 from emp;
解决NULL的问题,使用NVL()函数,NVL(a,b):如果a为null则用b替代,如果a不是null就直接返回a
select nvl(null,10) from dual; -- dual为哑表
使用dual哑表,使用字符串连接符号||,输出"hello world",在oracle中from是必须写的
select 'hello' || 'world' from dual;
使用sysdate显示当前时间
select sysdate from dual;
where子句:筛选
查询EMP表中20号部门的员工
select * from emp where deptno=20;
查询员工为SMITH的员工,字符串使用’’,内容大小写敏感
SELECT * FROM emp WHERE ename='SMITH';
查询在2003年6月17号入职的员工
select * from emp where hiredate = '17-12月-80';
查询工资不等于3000美金的员工【!=或者<>】
SELECT * FROM emp WHERE sal <> 3000;
查询薪水在1300到1600的员工,包含1300到1600
SELECT * FROM EMP WHERE SAL>=1300 AND SAL<=1600;
或
SELECT * FROM EMP WHERE SAL BETWEEN 1300 AND 1600;
查询入职时间在"1981-2月-20"到"1982-1月-23"之间的员工
select * from emp where hiredate between '20-2月-81' and '23-1月-82';
注意:
1)对于数值型,小数值在前,大数值在后
2)对于日期型,年长值在前,年小值在后
查询姓名以大写字母S开头的员工
SELECT * FROM EMP WHERE ename LIKE 'S%';
查询员工信息,对有佣金的员工,按佣金降序排列,当order by 和 where 同时出现时,order by 在最后
select *
from emp
where comm is not null
order by comm desc;
查询员工信息,按工资降序排列,相同工资的员工再按入职时间降序排列
select *
from emp
order by sal desc,hiredate desc;
select *
from emp
order by sal desc,hiredate asc;