1.安装oracle 环境
注意 不要有中文路径 关闭杀毒软件
安装完毕之后 使用 终端 验证
sqlplus system/123456
只要看到
SQL>
2.验证语言环境
select userenv('lang') from dual;
配置环境变量
NLS_LANG
AMERICAN_AMERICA.UTF8
3.执行初始化脚本
SQL>@路径/脚本名
4.java中数据的存储问题
内存中 易失 容量小 贵 ----- 快
File 空间大 不易失 偏移 ---- 慢 数据量大了 不利用维护 和 数据的管理
DB(data base ) ---- DBMS(database manager system)
5.主流的dbms
都是 RDBMS (relation database manager system) 关系型数据库管理系统
基于二维表的数据库管理系统
表头 table header
行 row
列 column
字段名 field name
字段值 field value
6.主流的关系型数据库管理系统
Oracle 甲骨文 oracle9i oracle10g oracle11g
db2 IBM db2
sqlserver 微软 sqlserver2008
非商业级 mysql sun ----- oracle
7.操作数据库的语言 SQL(struct query language 结构化查询语言) 10*10*10
dql (data query language) 数据查询语言
select
DDL (data define language) 数据定义语言
create table 建表
drop table 删表
alter table 修改表
DML(data manipulation language) 数据操作语言
insert 插入数据
delete 删除数据
update 修改数据
TCL(transaction control language) 事务控制语句
commit 提交数据
rollback 回滚数据
savepoint 保存点
DCL(data control language) 数据控制语言
grant 授权
revoke 回收权限
8.from 子句 (select语句)
8.0 查看表结构
desc 表名;
8.1 如何从表中查询一个字段对应的内容?
select 字段名 from 表名;
查询 s_emp 表中 所有的salary
select salary from s_emp;
查看一下 s_dept 表 然后 查询 s_emp 表中的所有的name
desc s_dept;
describe s_dept;
SQL> desc s_dept;
Name Null? Type
----------------------------------------- -------- --------------
ID NOT NULL NUMBER(7)
NAME NOT NULL VARCHAR2(25)
REGION_ID NUMBER(7)
select name from s_dept;
8.2 如何查询多个字段对应的内容?
select 字段名1,字段名2,字段名3 from 表名;
查询s_emp 表中的 id first_name salary
select id,first_name,salary from s_emp;
col 字段名 for an; 对字段名 设置 一行最多n 个字符
col first_name for a21;
注意不能对数字类型的字段 设置宽度
练习:
查询 s_emp 表中 id manager_id salary
select id,manager_id,salary from s_emp;
8.3 查询 s_dept 表中 所有的字段对应值
SELECT ID,NAME,REGION_ID FROM S_DEPT;
查询 s_emp 表中 所有的字段对应值
select ID,
LAST_NAME,
FIRST_NAME,
USERID,
START_DATE,
COMMENTS,
MANAGER_ID,
TITLE,
DEPT_ID,
SALARY,
COMMISSION_PCT from s_emp;
* 号可以代表 所有的字段
select * from s_emp;
8.4 sql中的数学运算
+ - * /
显示s_emp 表中的 salary 并且 加上 1000 进行显示
select salary,salary+1000 from s_emp;
显示s_emp 表中的 salary 并且 显示每天的平均工资
select salary,salary/22 from s_emp;
显示s_emp 表中的 salary 并且 显示年薪 (13 薪)
select salary,salary*13 from s_emp;
8.5 别名问题
给一个字段 或者 表达式 起一个别名 方便以后程序 通过名字获取数据
select salary sal,salary*13 yearsal from s_emp;
可以通过 双引号 来让别名原样显示
select salary sal,salary*13 "yearsal" from s_emp;
注意别名 只能有一个
select salary sal,salary*13 "year sal" from s_emp;
8.6 sql 中字符串的表达
使用 单引号 引起一串字符
'' ' ' 'a' 'hello world'
8.7 字符串的连接
ORACLE 中字符的连接 使用 ||(字符串拼接符)
把 s_emp 表中的first_name 和 last_name 拼接起来
select first_name , last_name from s_emp;
select first_name last_name from s_emp;
上面的都无法达到要求
select first_name || last_name from s_emp;
要求在 first_name 和 last_name 之间拼接一个下划线字符串
select first_name ||'_'||last_name from s_emp;
要求在 first_name 和 last_name 之间拼接一个单引号字符串
/* 两个单引号 转义之后 翻译成一个单引号 */
select first_name ||''''||last_name from s_emp;
8.8 NULL值的处理
为什么要处理NULL 值
NULL值和任何值做运算结果都是NULL
重新计算年薪 年薪的计算 是 月薪乘以 12 加上 月薪乘以 12 乘以 提成/100
select salary*12,salary*12 + salary*12*commission_pct/100 yearsal
from s_emp;
oracle 公司为了处理null值 引入一个函数 叫
nvl(par1,par2) 当par1 为NULL时 则返回par2的值
当par1 不为NULL时 则返回par1 本身。
select salary*12,nvl(salary*12 + salary*12*commission_pct/100,0) yearsal
from s_emp;
NULL 要尽早处理 不要等NULL值运算之后再处理
select salary*12,salary*12 + salary*12*nvl(commission_pct,100)/100 yearsal
from s_emp;
第二天重启时 如果连接不上数据库 就重新开启 服务中的XE 和 监听两个服务
再连接数据库