Oracle学习笔记
一、安装时将,杀毒,安全等软件退出
二、备份注册表:regedit
三、安装时,服务设置成手动启动
四、安装完成,需要启动OracleServiceWY、OracleOraHome90TNSListener服务(其中WY为安装过程取的名字)
五、打开编辑界面的方法:
1、启动安装程序下的sqlplus程序,打开编辑界面
2、运行:cmd——-sqlpus(dos界面)
3、运行:sqlpus(dos界面)
4、运行:sqlpusw(实际打开的也是sqlpus程序界面)
5、启动OracleOraHome90HTTPServer服务,IE输入:http://127.0.0.1:8080显示正常说明Oracle没有问题
然后IE输入:http://127.0.0.1/isqlplus
六、用户名/密码:
1、sys/changeoninstall 只能管理system帐号,相当于董事长
2、system/manager 只能管理scott帐号,相当于经理(高级管理员)
3、scott/tiger 普遍用户帐号,相当于员工,一般用此用户登录
七、语句:
1、登录scott帐号
scott/tiger
1、select * from tab ; 查scott下有多少表
2、select * from emp ; 查scott下的emp表
3、desc emp ; 查询emp下的所有字段
3、show user 查当前用户 clear screen 清屏
4、set LineSize 100 ; 设置查询时按100列显示
5、set PageSize 5 ; 设置查询时每5行显示2行数据,总共有14/3+1=5个数据段 ,这里有5-3=2,即一行空格,一行字段,一行短横线,剩下的就是每行的记录,加起来满5行一个PageSize。
6、创建用户,要去system用户下创建,和授权
connect syetem/manager ;
create user yangyong identified by “123” ; 用户名yangyong密码:123
7、修改密码:可以在当前用户和system用户下修改
connect yangyong/123
alter user yangyong identified by yy ; 改为yy
connect system/manager
alter user yangyong identified by “123” ; 又改回123
8、在system中赋相应权限:connect(连接用户)、resource(查询、新建、删除、修改(alter)表)
connect system/manager
grant connect to yangyong ;
grant resource to yangyong ; 或是:grant connect,resource to yangyong ;
9、某用户给某用户某张表的某些权限:如:scott给yangyong查询emp的权限
connect scott/tiger
grant select on emp to yangyong ;
grant alter on emp to yangyong;
某用户给某用户某张表的所有权限:
connect scott/tiger
grant all on emp to yangyong ; 将scott中emp表的所有权限给yangyong
撤销所有权限:revoke
revoke all on emp from yangyong ; 从yangyong那撤销scott中emp表的所有权限
revoke all on emp from yangyong ;
10、复制某用户下的某张表,需要此用户给他select权限,如:yangyong要复制scott下的emp表
connect scott/tiger
grant select on emp to yangyong ; 给yangyong权限查询scott.emp的权限
connect yangyong/123
create table emp as select * from scott.emp ; 然后在yangyong下创建emp表
11、在system下删除用户yangyong:(cascade强制删除)
connect system/manager
drop user yangyong cascade ;
八、表
1、创建表
create table student (
xh number(4) ,
xm varchar2(10) , –Oracle中都是varchar2,varchar会自动转换成varchar2
sex char(2) ,
birthday date ,
money number(5 , 2) –表示小数前三位,小数后两位
)
create table class(
id number(4) primary key ,
cname varchar2(10) not null
);
create table student (
xh number(4) primary key ,
xm varchar2(10) not null , –Oracle中都是varchar2,varchar会自动转换成varchar2
age number(2) check(age between 10 and 90 ) ,
sex char(2) check(sex in (‘男’ , ‘女’)) ,
shengfenzheng number(18) unique ,
classid number(4) references class(id) ,
money number(5 , 2)
) ;
2、添加数据和SQL2000一样如:insert into student values(002 , ‘李四’ , ‘女’ , ‘01-6月-08’ , 100) ;
Oracle中时间date类型为:月-日-年:mm-nn-yyyy
修改时间date类型为:年-月-日:yyyy-mm-nn
alter session set nlsdateformat = yyyy-mm-nn ;
alter session set nlsdateformat = mm-nn-yyyy ;
3、修改表
给表重命名:rename student to stu ;
增加字段:alter table student add(classid number(4)) ;
修改字段长度(同一类型):alter table student modify(xm varchar2(12)) ;
修改字段类型:先要删除这个字段中的所有值(保证这个字段为空,字段还在),再修改类型。
删除一列的值:delete table student ?
删除一列:alter table student drop column money ; (此列字段和值都没了)
删除一行:delete from student where xh = 5 ;
删除所有行:truncate table student ;(在日志文件中不会记录,对于大表速度快,表的字段还在。而delete会记录在日志中)
九、函数:
concat|| :连接字符
select deptno,dname||‘—-’||loc from dept ; 用—–连接dname和loc字段
select concat(deptno,dname) as abc from dept ; 将deptno,dname连接以abc命名,否则以concat(deptno,dname)命名
–注意:||null||连接符相当于sqlserver中的+连接符
initcap:首字母大写
select ename,initcap(ename) from emp ;
lower:将字符串转换成小写
select ename,lower(ename) from emp ;
upper:将字符串转换成大写
select ename,upper(ename) from emp ;
lpad:对齐右边,将左边空格填充为指定的符号
select deptno,lpad(dname,10,‘*’),loc from dept ;
rpad:对齐左边,将右边空格填充为指定的符号
select deptno,rpad(dname,10,''),loc from dept ;
ltrim:去掉左边的空格
select LTRIM(’ ccc ’) from dual ; –dual哑元表:临时的存在内存中
rtrim:去掉右边的空格
select LTRIM(’ ccc ’) from dual ;
trim:去掉两边的空格
select LTRIM(’ ccc ’) from dual ;
replace:转换
select ename,replace(ename,‘S’,‘s’) from emp ;
translate:替换
select ename,translate(ename,‘S’,‘a’) from emp ;
ascii:
select ascii(‘A’) from dual ;
chr:
select chr(97) from dual ;
select ‘Hello’||chr(9)||‘World’ from dual ; –chr(9)表示空格
substr:
select ename,substr(ename,1,3) from emp ;–取前3个字符
select ename,substr(ename,4) from emp ;–取第4以后的字符
instr:
select ename,instr(ename,‘S’) from emp ; –查S字符有多少个
select ename,instr(ename,‘T’,1,2) from emp ; –查第一个T后有多少个T
length:字符长度
select ename ,length(ename) from emp ;
十、修改表
update
update dept set loc=lower(loc) ; –将loc列变成小写