ORACLE安装和删除
ORACLE9i 9.0.1 空间1.76G
ORACLE9i 9.0.2 空间2.86G
事务处理 -- 增 删除 修改频繁
数据仓库 -- 查询 频繁
GBK --多200个字左右(偏僻字)
GB2312
SETUP.exe 双击
启动ORACLE数据库 OracleServiceSID 服务 多启动几次
OracleOraHome90TNSListener 服务
如果启动不了Listener(监听器)
<1>改注册表
ImagePath D:/oracle/ora90/BIN/TNSLSNR
<2>用命令行启动
cmd -> tnslsnr 最小化
tNSlsnter 监听器 如果无法启动
运行cmd 切换到DOS界面 敲tnslsnr 窗口不要关闭
<3>D:/oracle/ora90/network/ADMIN
listener.ora 文本文件
HOST=localhost或机器名
存盘
用工具 ORACLE SQL*PLUS验证数据库是否启动
用户名system 密码manager
出现 连接到 和 SQL>符号 说明数据库已经可用了
默认用户:
超级用户: 用户名system/密码manager
用户名sys/密码change_on_install
普通的用户: 用户名scott/密码tiger
注意的问题:安装的源程序放在什么目录下??
<1>目录中不要出现中文名字的目录
<2>数据库的名字不要是中文,8个字符以内
<3>字符集用默认的ZHS16GBK
删除:
在硬盘上的一个隐含安装的目录Programm Files下的ORACLE
操作ORACLE数据库的工具
ORACLE SQL*PLUS 字符界面 ORACLE自带
sqlplusw.exe windows窗口下的sqlplus
sqlplus.exe DOS下的sqlplus
用户名scott 密码tiger 普通用户
system manager 超级用户
sys change_on_install 超级用户 比system权限还要大
SQLPLUS下的常用命令
show user 察看用户
connect 用户名/密码 连接到指定用户
connect scott/tiger
select * from tab where tabtype='TABLE'; 察看当前用户下的表
select count(*) from dept; 查询表dept中记录的行数
desc dept 察看表dept的结构
quit/exit 退出
clear screen 清除屏幕
set linesize 200 设置一行显示200个字符
set pagesize 20 设置每页显示20行
spool 文件名 (spool c:/abc.txt) 作日志文件命令
spool off
修改D:/oracle/ora90/sqlplus/admin/glogin.sql文件
可以设置SQLPLUS的环境
set linesize 200
set pagesize 20
ORACLE 企业管理器 (OEM) 图形界面
PL/SQL Developer 第三方软件 ORACLE不带的
SQLPLUS /nolog nolog是不登陆
浏览器使用oracle (isqlplus)
http://127.0.0.1:7778/isqlplus
ORACLE中字段的数据类型
字符型 char 范围 最大2000个字节 定长
char(10) '张三' 后添空格6个把10个字节补满 '张三 '
性别 char(2) '男'
varchar2 范围 最大4000个字节 变长
varchar2(10) '张三' 在数据库中'张三'
大对象 字符型大对象 >4000字节 最大4G
CLOB (Character Large OBject)
数字 number 范围 10的-38次方 到10的38次方
可以表示小数 也可以表示整数
number(4) 最大表示4位整数 -9999 到 9999
number(5,2) 表示5位有效数字 2位小数的 一个小数 -999.99 到 999.99
日期 date 包含年月日和时分秒 7个字节
图片 blob 二进制大对象 图像/声音 4G
如何建表
学生表student
create table student( --学生表
xh number(4), --学号
xm varchar2(10), --姓名
sex char(2), --性别
birthday date, --日期
sal number(7,2) --奖学金
);
班级class
create table class( --班级表
classid number(2), --班级编号
cname varchar2(20) --班级名字
);
添加字段(学生所在班级classid)
alter table student add (classid number(2));
修改字段的长度
alter table student modify (xm varchar2(12)) ;
修改字段的类型(不能有记录的)
alter table student modify (xh varchar2(5));
删除一个字段
alter table student drop column sal;
删除表
drop table student;
表的名字修改
rename student to stu;
字段如何改名字
--先删除
a)alter table student drop column sal;
--再添加
b)alter table student add (salary number(7,2));
如何插入数据
插入数据 insert语句
所有字段都插入
insert into student values ('A001','张三','男','01-5月-05',10);
ORACLE中默认的日期格式'DD-MON-YY' dd 日子(天) mon 月份 yy 2位的年
'09-6月-99' 1999年6月9号
改日期的默认格式
alter session set nls_date_format = 'yyyy-mm-dd';
insert into student values ('A002','MIKE','男','1905-05-06',10);
恢复ORACLE默认格式
alter session set nls_date_format = 'dd-mon-yy';
察看日期的格式
set linesize 1000
select * from nls_session_parameters
where parameter='NLS_DATE_FORMAT';
永久设置日期格式
改注册表oracle/HOME0 加字符串NLS_DATE_FORMAT 值yyyy-mm-dd
部分字段插入
insert into student(xh,xm,sex) values ('A003','JOHN','女');
插入空值
insert into student(xh,xm,sex,birthday) values ('A004','MARTIN','男',null);
修改 update
改一个字段
update student set sex='女' where xh='A001';
改多个字段
update student set sex='男',
birthday='1980-04-01'
where xh='A001';
改为空值 (修改为空时=null)
update student set birthday=null where xh='A001';
把生日为空的人的班级编号改为20(条件中的空是is null / is not null)
update student set classid=20 where birthday is null;
错误的没有达到要求
update student set classid=20
where birthday=null;
不表示空值 表示xm是null的字符串
update student set classid=20 where xm='null';
删除 delete
delete from student; 删除所有记录,表结构还在,写日志,可以恢复的,速度慢
drop table student; 删除表的结构和数据
delete from student where xh='A001'; 删除一条记录
truncate table student; 删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快
查询 select
select * from student;
select xh,xm,sex from student;
select * from student where xh like 'A%1'; %任意多个字符
select * from student where xh like 'A__1'; _1个字符
select * from student where xh like '%A%'; select * from student where xh like 'A%';
select * from student where xh like '%A';
select * from student where xh = 'A%';
select * from student
order by birthday ; 升序 (order by birthday asc;)
select * from student
order by birthday desc; --降序
select * from student
order by birthday desc,xh asc; --按birthday 降序 按xh升序(asc/默认)
select * from student
where sex='女' or birthday='1999-02-01';
select * from student
where sex='女' and birthday='1999-02-01';
select * from student
where salary > 20 and xh <> 'B002'; (!=)