ORACLE学习笔记

14年前

数据库全名是:ORACLEDB Net本地服务名:ORACLEDB01;用户名:haha;密码haha

在数据库里有一个测试用的表:student

一:查询语句

select * from student;

select name,age from student;

select name as "姓名" from student;

select name as 姓名 from student;

select name 姓名 from student;

select * from student where age>23;

 

二:插入数据

insert into student(id,name,age) values ('7','张三','34');

insert into student(id,name,age,adddate) values ('7','zhangsan','55',TO_DATE('2002-2-2','yyyy-mm-dd'));

三:更新数据

update student set name = '王五' where id = '7';

四:删除数据

delete student where id = '7';

五:看一个表的详细结构

desc student;

六:连接到某个数据库

Connect haha/haha@oracledb01

七:从一张表来创建另一张表并复制其全部数据

create table student01

as

select * from student;

八:从一张表来创建另一张表并指明用那些字段

create table student02

as

select id,name from student;

九:清空表中所有的数据

truncate table student02;

十:返回数据库中前五条记录

select * from student where rownum<6;

select * from student where rownum!=7;

十一:取25之间的记录

select * from (

select rownum r,id,name,age,adddate from student

where rownum <=5 order by name

)

where r>2;

十二:(事务控制)设置事务标记点,可以回滚到你设置的标记点

update student set age = '88' where id = '2';

savepoint mark01;

delete from student where id = '2';

savepoint mark02;

rollback to mark01;

commit;

十三:提交

Commit;

十四:设置标记点:

Savepoint 标记点名称;

十五:回滚到你设置的标记点

rollback to标记点名称;

十六:查询一定范围的记录

select * from student where age in('20','23');说明:年龄在2023之间的记录不包含2023

select * from student where age between 20 and 23; 年龄在2023之间的记录

select * from student where age not between 20 and 23; 年龄不在2023之间的记录

select * from student where age>20 and age<40;

select * from student where age>20 or age<40;

select * from student where not age>22

十七:模糊查询

select * from student where age like '%2_%'

十八:intersect操作符返回两个表公共的记录

select * from student01

intersect

select * from student;

十九:MINUS 操作符返回从第一个查询结果中排除第二个查询中出现的行

select * from student

minus

select * from student01;

二十:集合操作符

select * from student

union

select * from student01;

二十一:集合操作符

select * from student

union all

select * from student01;

二十二:字符函数:把小写转化成大写

select upper('sun') from dual;

二十三:数学函数:取绝对值

select abs(-30) from dual;

二十四:取出数据库总记录

select count(*) from student;

二十五:取平均数

select avg(age) from student;

二十六:取某个字段中最大值

select max(age) from student;

二十六:取某个字段中最小值

select min(age) from student;

二十七:取某个字段中所有数据的和

select sum(age) from student;

二十八: ROWID的操作

select rowid from student;

 

declare

num varchar(30);

test student%rowtype;

begin

     select rowid into num from student where id = '1';

     dbms_output.put_line(num);

end;

 

二十九:查看用户详细信息

select * from dba_users where username = 'haha';

三十:连接数据库

connect haha/haha@oracledb01

connect 用户名/密码@本地net服务名

三十一:创建表

create table student01(

  stu_id number,

  stu_name varchar(50),

  stu_age number

)

三十二:增加表字段

格式:Alter table 表名 Add 字段名 字段类型

实例:alter table student01 add adddate date

三十三:修改表字段(未调试通)

alter table student01 alter  column adddate varchar(50)

三十四:删除表中的字段

alter table student01 drop column adddate

三十五:删除表

drop table student01

三十六:创建表并加上主键或者某字段不为空

create table student01(

  stu_id int primary key,

  stu_name varchar(50) not null,

  stu_age number

)

 

 

三十七:对数据库的备份,即:导出和导入

导出:

exp username/userpwd@oracledb file=d:\xx.dmp

导入:

imp username/userpwd@soracledb file=d:\xx.dmp full=y

 

三十八:创建自动增长数据无重复的列

比如说:一个表主键id每次新增记录时id号自动加一并且不会和现有记录发生冲突

先看例子:

先创建一个表(worker)

create table worker(
       work_id number primary key not null,
       work_name varchar2(
100) not null,
       work_age number,
       work_sex char(
10)
)

在这张表里主键是work_id我们想每次增加一个记录时主键自动填充并是唯一的一个数

这就需要创建一个序列:

再创建一个序列(workerId):

create sequence workerId;

实现自动填充唯一记录主要是让序列自动填充的

现再可以测试是否是正确的了,我们新增记录看看:

insert into worker values (workerId.Nextval,'张三','23','');
commit;

^_^好像是对了。

 

 

三十九:使用客户端连接远程oralce数据库服务器

Connect  用户名/密码@219.233.196.26

 

sqlplus   用户名/密码@//IP地址:端口/SID

 

四十:显示数据库中所有表

 

Select  * from tab

 

四十一:删除用户命令

Drop   user   lyz cascade;

 四十二:插入数据库记录时字段为日期类型

to_date('2008-4-4 12:2:2','YYYY-MM-dd hh24:mi:ss')

 

insert into " table" values (1,'test',12,to_date('2008-3-3 12:2:2','YYYY-MM-dd hh24:mi:ss'));

 

四十三:查询oralce数据库时间字段,显示时分秒

select   to_char(UpdTime,'HH24:MI:SS')   from   RunCur_Video

 

 

四十四:怎么察看oracle有多少个连接

select * from v$license; 可以查看你是否设了连接限制等,同时也能很清楚的显示有多少session