0


orcale-简单语法

–oracle 基本 DDL DML TCL DCL 语法和mysql 一致
按照SQL命令作用的不同
DDL 数据库定义语言 create alter drop
DML 数据操纵语言 insert update delete select
TCL 事务控制语言 commit rollback savepoint
DCL 数据控制语言 grant revoke
–个人一些浅薄的理解:
–目前发现有区别的地方:
– 没有主键自增 有的是序列替代
– 表空间和 存储的方式不一样 具体 还要 深入了解
– varchar 类型 不一致

– 创建 表
create table stu(
stuid number primary key,
sname varchar2(20),
birthday date
)

– 查询表 是否创建成功
select * from stu ;

– 添加字段
alter table stu add cid number;

alter table stu add idcard varchar2(18);

select * from stu ; --查询是否添加字段成功

– 删除一个字段
alter table stu drop column idcard;

select * from stu ; --查询是否删除字段成功

drop table sku; --删除 表

– 创建一个同义词(为逻辑对象起的别名)
create synonym dd for dept;
–同义词是什么?
–逻辑对象是什么?
– 在这里只是简单熟练 一些 oracle 基本的命令和使用
– 没有过多了解 望大佬看到给予支持

– 为 dept创建一个共有的同义词
– 这个共有的 应该是 分区 的原因(不了解,猜测)
create pulic synonym dd for dept;

– 删除同义词
drop public synonym dd;
drop synonym dd;

– 数据库操作语言
insert update delete select

–赋值emp 表名 起名叫 stu
create table stu as select * from emp;

– 删除表信息
delete from stu;

– 插入表信息
insert into stu select * from emp ;

insert into stu(id,name) select 3,‘王wei的相死’ from emp where id =1;

关于oracle 数据库的伪列 伪表
伪列:在数据库看不到,真实存在
orcale数据库在定义表是会默认给表添加两个字段
rowid :用于表示 数据唯一的 一个物理存储地址
rownum :用于返回表数据在当前结果集中的排序号

select rowid ,rownum,a.* from dept a;

select rownum,a.* from emp a;
– 通常情况 我们使用 rownum 会用于数据库分页查询
– 查询 emp 3 -5
因为 rm 只能写 < 所以 要把 这个 查询到内存中 创建一个临时表 才可以 进行 判断
select * from (
select rownum rm,a.* from emp a
)aa
where aa.rm>=3 and aa.rm <=5

-- 分页查询写法二 
select * from(
  select rownum rm,a.* from emp a
  where rownum<=5
 )aa where rm>=3 ;

– oracle 数据库伪表 dual 表
select * from dual;
select abs(-12.3) from dual;

索引、序列、表空间

序列:(sequence 生成有序数字的队列)
create table classes (
cid number primary key ,
cname varchar2(29)
);

create sequence xlmc1
start with 1 – 序列从1值开始
increment by 1 – 每次增长1个值
minvalue 1 – 最小值
maxvalue 100 – 最大值
cycle --cycle|nocycle 是否是循环序列 加是代表是循环序列,不加该关键是代表不是 寻循环序列
cache 2 --cache 2 |nocache 是否启用序列缓存池

– 使用序列 :
nextval : 获取序列的下一个值
currval : 获取序列的当前值
注意:currval 仅在nextval执行过一次以后才能使用 因为 不执行当前没值 类似于java 空指针

select seq_test.nextval from dual;

select seq_test.currval from dual;

– 创建一个最简洁的序列
drop sequence seq_aa;
create sequence seq_aa;
select seq_aa.nextval from dual;
– 向classes表插入数据
insert into classes
values(seq_aa.nextval,‘ST2001’);
insert into classes
values(seq_aa.nextval,‘ST2002’);
insert into classes
values(seq_aa.nextval,‘ST2005’);


索引(index): 索引引导

declare – 声明
vv number :=0; --声明 创建遍历 vv number := 赋值 0
begin – (

for aa in 1…10000000 loop
insert into classes values(seq_aa.nextval,‘Test’||aa);
select seq_aa.currval into vv from dual;
– 如果 vv mod 10 =0? 10次一提交
if vv mod 10 = 0 then
commit;
end if;
end loop;

end; --)

– declare bengin end = function (){ }

select cid from classes;

select * from stu;
alter table stu add cid number;

select a.*,b.cname from stu a,classes b
where a.cid = b.cid
– 位图索引 bit 适用于 数据重复低数据量大的字段
– BTree 索引 对数据结构要求比较严格的时候
– unique 唯一索引

– 创建索引的基本语法:

create[bit|unique] index 索引名
on 表名(字段1…字段n) pctfree n1;

– 为classes表 cname 创建一个索引
create index ind_cname on classes(cname);
select cname from classes;

– 唯一索引
select * from stu;
truncate table stu;
–为stu表添加一个主键
alter table STU
add constraint fk_stu primary key (STUID);
insert into stu
values(2,‘张三’,‘男’,18,sysdate,1314);

– 要求: 学生姓名和班级id不允许同时重复
– 解决方法:在stu表为班级id 和学生姓名创建一个联合唯一索引
create unique index ind_cidname on stu(stuname,cid);

select * from stu;

insert into stu
values(2,‘张三’,‘男’,18,sysdate,1314);

insert into stu
values(1,‘张三2’,‘男’,18,sysdate,1314);

insert into stu

values(3,‘张三’,‘男’,18,sysdate,1315);

主键 primary key :

索引优缺点:
优点: 加快数据查询的速度,确定数据的唯一性。
缺点:需要占用一定的物理存储空间
数据会降低表数据插入、修改的效率。

标签: oracle

本文转载自: https://blog.csdn.net/weixin_45429019/article/details/123680128
版权归原作者 weixin_45429019 所有, 如有侵权,请联系我们删除。

“orcale-简单语法”的评论:

还没有评论