一、卸载安装(来自百度经验)
完全卸载:
1. 停止相关服务
2. 运行Universal Installer,卸载产品
3. 清理注册表
4. 重启电脑,删除目录(Oracle文件夹和app文件夹)
安装:
1. 运行setup.exe
2.取消勾选“接收安全更新”选项
3. 选择创建和配置数据库
4. 桌面类
5. 企业版
6. 使用utf-8字符集
7. 口令管理,将Scott解锁,设置密码tiger
打开sql plus用设置好的账户登录测试一下
二、配置
1. 确保服务(service和listener)开启
2. 打开Net Manager配置listener和Oracle主目录
3. 打开net configuration assistant配置监听程序和本地网络服务名配置
三、配置PLSQL
1. tools-->preferences Oracle Home:Oracle主目录
2. 查看主目录/network/admin/下是否有tnsnames.ora文件和listener.ora
问题汇总:TNS无法解析制定的连接符标识https://www.cnblogs.com/justlove/p/8252779.html
                  可以试着把主机名改为本计算机名
四、SQL数据库用户操作语句
新建用户:create user [username] identified by [password]
分配表空间:alter user [username] default tablespace users temporary tablespace temp profile default
新建用户同时分配表空间:create user zhangsan identified by 123456 default tablespace users temporary tablespace temp profile default
赋予权限:grant connect to zhangsan; grant resource to zhangsan; 给查询权限:grant select on emp to zhangsan;
一次赋予多种权限用逗号隔开,如: grant connect,resource to zhangsan
删除用户:drop user zhangsan
去除权限:revoke connect from zhangsan
修改用户密码:alter user zhangsan identified by newpassword
锁定用户:alter user zhangsan account lock
五、Oracle中的数据类型
number(10)表示数字类型,长度为10
number(5,2)表示总长度为5,小数位占其中的2位
char(10)字符型,最多放2000个字符
varchar()或者varchar2()可变长度字符,最多放4000个字符
date日期类型,系统默认日期格式:2-3月-2019
timestamp日期精确到毫秒
blob大数据,存储二进制数据,最大4G
六、SQL表操作语句
创建表:
create table student(
  sid number(10),
  sname varchar(20),
  cid number(10),
  ......
)
修改表:
追加列:alter table student add(sex varchar(5))
修改列:alter table student modify(sname varchar(15))
删除列:alter table student drop column sex
修改列名:alter table student rename column sex to gender
修改表名:rename student to students
删除表:drop table student
约束 分为列级约束和表级约束
种类:主键primary key、唯一unique、非空not null、外键foreign key references、检查check
添加列级约束:
create table student(
  sid number(10) primary key,
  sname varchar(20) not null,
  cid number(10) references class,
  ......
)
添加表级约束:
create table student(
  sid number(10) ,
  sname varchar(20) ,
  cid number(10) ,
  ......
  constraint student_sid_pk primary key(sid),
  constraint student_cid_fk foreign key(cid) references class(cid),
  ......
)
或者alter table add constraint ...
七、数据处理
Crete table  表名
As
Select * from 表名
创建一个表,并将查询出来的数据插入到新的表中
去掉数据复制表结构
Create table 表名
As
Select * from 表名
Where 添加一个没有结果的条件  empno=null
八、查询语句
||连接查询结果
在sql中,所有的空值运算之后都为空
Nvl(comm,0)空值处理
Nvl处理空值   第一个参数为列,第二参数表示为如果列中的值为空,用0来代替
去掉重复 关键字:distinct
在sql语句中,字符、日期都必须用单引号引起来
数值的比较,字符串的比较,日期的比较,between…and….(在两者之间,包含两个边界),like(_,%)(模糊查询,关键字查询),in(匹配查询)
Is null表示空   is not null 表示非空
Between。。and。。格式: select * from 表明 where 列明 between  XX and  XX
比较符:> < >= <= !=或<> =   sql中的赋值符号:    :=  赋值符号
逻辑运算符: and 与     or或    not非
排序关键字:order by      asc 升序 为默认排序可以省略       desc 降序
九、函数
单行函数:只对一行数据影响的函数叫单行函数
单行函数:字符、数值、日期、转换、通用
字符函数:lower  将字符转换为小写;upper 将字符转换为大写
instr(列,str1)  查询字符   str1在列中的字符
--concat  连接   将两个字符连接    类似于||
select concat(ename,job) from emp
--length 返回字符串的长度  
select length(ename) from emp
数值函数:
--dual 这个表没有具体的数据,只是在查询的时候,我们查询的格式为 select 列 from 表名,当不需要用到表而用到查询结构的时候用dual占位
Turnc() 数字截断
round()四舍五入
mod()   求余
日期函数:  sysdate   分为日期和时间
Months_between  获得两者之间的月份数
--获得1987/4/19到1981/2/20这个日期间的月份差
select months_between('19-4月-1987','19-4月-1981') from dual
add_months   向指定的日期中添加若干月份
last_day 获得本月的最后一天
round (日期,年/月/日)   日期同样有四舍五入
trunc     日期的截断
转换函数:  分为两种形式:隐式转换   显示转换
隐式转换:自动类型转换
显示转换:对数据用方法进行转换
To_char 转换为字符
To_number 转换为数字
To_date 转换为日期
To_char(date\number,’字符格式’)
将日期转换为字符串  to_char(sysdate,’yyyy-mm-dd’);
将数字转换为字符串  to_char(sal,’00000.00或者9999.99’);
格式中的9的位数,一定要大于等于要转换的数字的位数
如果是货币可以在前面加上$或者L(本地货币)为字符串
To_date(‘字符’,‘日期格式’)
yyyy  代表年   mm代表月  dd代表日  hh时  mi分 ss秒
--插入一条数据到数据库表emp   将日期转换为指定格式
insert into emp values(7856,'lisi','SALESMAN',7698,to_date('1982-12-12','yyyy-mm-dd'),6000,200,10)
To_number(‘字符’,’数字格式’)
--将¥1234.55转换为数字
select to_number('¥1234.55','L999999999.000') from dual
如果字符含有货币符号,那么格式中也必须有货币符号
通用函数:
Nvl(参数1,参数2)处理空值
Nvl2(参数1,参数2,参数3)  参数1列中的数据,如果不为空执行参数2,如果为空执行参数3
Case  参数  when 列值 then 返回数据
[when  列值2  then 返回数据2
。。。。。]
Else 返回数据
End [别名]
通过每一列查出的值作为参数匹配when后面的值,入果匹配上了则返回then后面的值,如果都没匹配上 则返回else中的值,整个函数只是一列
Decode(参数,列值1,返回值1,列值2,返回值2,列值3,返回值3,返回值)