ORACLE学习笔记
数据库全名是: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;
十一:取2-5之间的记录
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');说明:年龄在20到23之间的记录不包含20和23
select * from student where age between 20 and 23; 年龄在20到23之间的记录
select * from student where age not between 20 and 23; 年龄不在20到23之间的记录
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