善忘技术夹 Logo
善忘技术夹
技术文章 · 1683 阅读

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/change_on_install 只能管理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 nls_date_format = yyyy-mm-nn ;

alter session set nls_date_format = 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列变成小写