一、新建表空间
1、创建表空间
--表空间名称、序列化的文件名、表空间初始化大小
create tablespace wubm_tablespace
datafile 'D:\software\Oracle\table_space\wybm.dbf'
size 5M
2、为表空间创建用户 pg
create user pg identified by root
default tablespace wubm_tablespace
3、为用户分配权限
grant connect,resource,dba to pg;
4、撤销权限
revoke dba from liugang;
二、对新建表空间进行操作
1、为表空间创建表 bm
create table bm(bmid number(8,0) primary key,bmname varchar2(30) not null,worktime date not null,age number(2,0) not null,descr varchar(100) null --可以为null
)
2、表中添加数据
--(1)sysdate为系统时间
insert into bm (bmid,bmname,worktime,age,descr) values (1,'赵四',sysdate,18,'中国第一男保姆');
--(2)默认添加日期格式 29-10月-2020 ,汉字月必须有
insert into bm (bmid,bmname,worktime,age,descr) values (2,'刘能','29-10月-2020',22,'中国第二男保姆');
3、查看表中所有数据
select * from bm;
select * from bm for update;
4、为表添加检查约束
alter table bm
add constraints CK_AGE check (age between 18 and 50);
三、Oracle对象之序列
因为Oracle数据库中主键不是自增的,所以要单独创建一个序列,作为唯一标识。
1、创建序列 seq_bm
create sequence seq_bm
start with 15 --从1开始
increment by 1 --递增 1
nomaxvalue
nocycle
cache 10 --缓存10个方便使用
2、查看序列
select * from user_sequences;
3、使用序列
insert into bm (bmid,bmname,worktime,age,descr) values (seq_bm.nextval,'广坤','29-10月-2020',22,'中国第四男保姆');
4、查看序列的当前值
select seq_bm.currval from dual;
5、删除序列
drop sequence seq_bm;
四、索引
1、创建普通索引
-- 索引名 表名 列名
create index index_bmname on bm(bmname);
2、创建联合索引
列名,列名
create index index_workandage on bm (worktime,age);
五、分页
--当前页 n 每页条数 3
--当前页起始条数:当前页 (n-1)*3 结束条数 3n
select * from
( select rownum rn ,e.* from (select * from bm) e where rownum <=6 )
where rn >3
六、PL/SQL编程
1、声明、赋值、输出
declarev_name varchar2(20):='科比'; --声明属性并赋值科比v_addr varchar2(40); --声明属性v_age bm.age%type; --声明属性,该属性与bm表里的age属性一致
beginv_addr:='辽宁省大连市'; --赋值select age into v_age from bm where bmid=10; --查询id为10的age并赋值给v_agedbms_output.put_line('名字:'||v_name||',地址:'||v_addr||',年龄:'||v_age);
end;
2、声明属性、聚合函数计算值
--如果是NULL的话相加为0 ,所以 sal+nvl(comm,0) 当comm列为NULL的话赋值0
declarev_totalage bm.age%type;v_name bm.bmname%type:='科比';
beginselect sum(age) into v_totalage from bm where bmname=v_name;dbms_output.put_line(v_name||'的总年龄是'||v_totalage);
end;
3、if else
declarescore number(3,0) :=30;detail varchar2(10);
beginif score >=60 thendetail:='及格了';elsedetail:='没及格';end if;dbms_output.put_line('考试结果:'||detail);
end;
4、case
declarescore number(3,0):=99;det varchar2(20);
begincasewhen score >0 and score<60 then det:='不及格';when score >=60 and score<70 then det:='一般';when score >=70 and score<80 then det:='较好';when score >=80 and score <90 then det:='良好';else det:='优秀';end case;dbms_output.put_line('考试结果:'||det);
end;
5、select语句使用case
select bmid,bmname,age,
case age when 18 then '成年了'when 22 then '长大了'end 经验
from bm;
6、loop循环
declarescore number(3,0):=30;
beginloopif score>=60 then exit;end if; score:=score+5;dbms_output.put_line('值:'||score);end loop;
end;
7、while循环
declarescore number(3,0):=30;
beginwhile score<60loopscore:=score+5;dbms_output.put_line('值:'||score);end loop;
end;
8、for循环
beginfor i in 1..10 loopdbms_output.put_line('值:'||i);end loop;
end;