1.表的创建
(1)首先创建数据库表时
create table 表名(
列名 类型 constraint book_PK primary key,–主键约束
列名 类型 unique,–唯一性约束
列名 类型 not null,–非空约束
列名 类型 check (age>0 and age<100),–检查约束
列名 类型 constraint fk_stu_class_cno references t_class(cno)–外建约束
);
在创建表的时候结束一条语句的时候一定要加逗号(,),最后一句不加,不然的话就会出错。
(2)增加和删除字段:
alter table 表名 add(列名 类型);–增加列
alter table 表名 drop column 列名;–删除列
alter table 表名 drop column (列名1,列名2);–删除多列
(3)修改字段:
alter table 表名 modify 列名 列名属性
也可以在创建了一个表之后在给表中的列添加约束
(4)重命名表:
alter table 旧表名 rename to 新表名 ;
(5)删除表:
drop table 表名 --删除表
drop table 表名 cascade constrains --不仅删除表,而且删除引用这个表的视图,约束和触发器等。
如果想要恢复被删除的表的话可以使用 flashback table 表名 before drop;
(6)修改表的状态
alter table 表名 read only;–把表改为只读模式
alter table 表名 move tablespace 表空间名;–把表移动到别的表空间去
alter table 表名 read write;–把表改成课读写模式
2.多表的关联查询,一定要保持一个良好的习惯,每条语句写完了之后就要用分号(;)来结束。
内连接:
select 列名 from 表名1 join 表名2 join 链接条件;
例如:select e.empno as “员工编号”,e.ename as “员工名称”,d.dname as “部门” from emp e join dept d on e.deptno=d.deptno;
外连接:
(1)左外连接
select 列名 from 表名1 left join 表名2 on 连接条件;
(2)右外连接
select 列名 from 表名1 right join 表名2 on 连接条件;
(3)满外连接
select 列名 from 表名1 full join 表名2 on 连接条件;
(4)在查询语句
有时候一个查询语句的过滤条件也许会用到另一个查询语句的结果:
select * from 表名 where sal >(select sal from 表名 where ename=“SCOTT”);
3.pl/sql编程
declare
–声明部分,可选;
begin
–执行部分,必须;
(可以写自定义的属性,也可以写sql语句);
select 列名1,列名2 into 自定义列名1,自定义列名2 from 表名 where子句;
exception
–异常处理部分,可选;
end;(一定以记住这里的分号,千万不要省略,不然会出错)
特殊数据类型:%type, %rowtype;
4pl/sql游标
declare
cursor 游标名 (参数)is select 列名1,列名2 from 表名 where 子句;–定义游标
begin
open 游标名–打开游标;
fetch 游标名 into 变量
//循环获取游标中的每一条数据并赋值给变量
loop
fetch 游标名 into 变量
exit when 游标名%notfound;
end loop;
close 游标名–关闭游标;
显式游标对应一个返回结果为多行多列的SELECT语句。 游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。
游标的重点是从数据库中抽取的是多行多列的数据,如果要求显示单个数据的话就要分开处理;
5.视图
create or replace view 视图名 as select 子查询语句【with read only】;
(1)管理视图
desc 视图名–查看视图的数据字典结构
(2)删除视图
drop view 视图名;
6序列
序列是用来生成唯一的不用的数字的一种数据对象,主要作用是用来生成主键列的标识。
(1)创建序列–没有or replace 可选项。
create sequence 序列名
[start with a—从a开始
increment by n—每次增加n
maxvalue m----最大值为m
minvalue k—最小值为k
cycle|nocycle
cache b—缓存为b]
在创建序列的时候要注意只有在最后的语句才添加分号(;)前面的语句都不能添加,否则会报错。
(2)管理序列
使用alter对序列进行修改的时候不能够修改序列的其实质start with;
(3)删除序列
drop sequence 序列名;