–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 :
索引优缺点:
优点: 加快数据查询的速度,确定数据的唯一性。
缺点:需要占用一定的物理存储空间
数据会降低表数据插入、修改的效率。
版权归原作者 weixin_45429019 所有, 如有侵权,请联系我们删除。