设为首页 加入收藏

TOP

oracle的学习笔记(三)
2014-11-24 02:30:43 来源: 作者: 【 】 浏览:13
Tags:oracle 学习 笔记
文章之类
date;

create table stu
(
id number(9) default 1,//设置一个默认值
name varchar2(20) not null//设置为非空,必须输入名字.

);
insert into stu(id) values(1);报错

30,transaction 事务

commit;提交事物完成 rollback回不去了;

create table grand exit之类 事务也提交一样rollback不回去;
非正常断开连接自动回滚;


31,constraint

1)非空约束
create table stu
(
id number(9) default 1,//设置一个默认值
name varchar2(20) constraint stu_name_nn not null
);
//设置为非空,必须输入名字.
使用constraint 关键字为限制取一个名字


2)唯一约束,例如学号必须唯一
create table stu
(
id number(9) unique,//设置一个默认值
name varchar2(20),
date date;
);
学号重复则报错

create table stu
(
id number(9) unique,//设置一个默认值
name varchar2(20),
date date,
email varchar2(50),
constraint stu_name_email unique(name, email)
);
组合重复约束,如果名字和邮件地址都重复才重复

3)主键约束
create table stu
(
id number(9) unique,
name varchar2(20),
sdate date,
email varchar2(50),
constraint saaa primary key (id)
);
唯一且不能为空

4)外键约束 设计到两张表或者一张表的两个字段
例如dept这张表里的deptno里面没有50这个部门,那么在emp里面插入数据就不能插入50这个部门编号

用法
create table class
(
id number(1) primary key

)
create table stu
(
id number(9) unique,
class number(1) references class(id)//class是表的名字
)

另一种写法,表限制
create table stu
(
id number(9) unique,
class number(1),
contraint sss foreign key(class) references class(id)
)

重要:被references的值必须是主键
如果另一张表有值在参考class 则不能删除class里的这条记录

5)check
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
Id_P>0咯不解释


32,
函数返回表中的记录数:

SELECT COUNT(*) FROM table_name;
select count(xxx)from tab;--返回制定列的值的数目


33,alter
修改表结构,不是很重要
增加不解释
alter table stu add(aaa varchar2(22));
删除
alter table stu drop(aaa);
修改
alter table stu modify(aaa varchar2(33));

删除添加表的约束条件
删除
alter table stu drop constraint xxx;
添加
alter table stu add constraint xxx foreign key(class) references class(id);
alter table stu add check(id>0);
之类

34,查看数据字典表

有一张默认的表 user_tables
select table_name from user_tables;
select view_name from user_views;
select constraint_name from user_constraints;
select index_name from user_indexes;
存放数据字典表的表 dictionary


35,indexs
建立索引,读数据的时候更快,修改的时候会更慢一点.一般不轻易建立索引.
create index idx_stu_email on stu (email);

36,视图
就是一个虚表,可以看做是一个子查询.可以简化查询和保护数据
create view v$_stu_info as select id, name, class from stu;SS

37,sequence序列 orcle only
创建一个独一无二自动递增的数字
create sequence seq;
select seq.nextval from dual;
会发现每次运行都产生不一样的数字,默认已经包含同步了


38,三范式
1有主键 列不可分
2当一张表里有多个主键存在时,不能依赖于单独的主键
不能部分依赖,要依赖于组合的主键.不然会存在数据的冗余
3不存在传递依赖

一般设计良好的数据库SQL语句写起来就会麻烦一些

39,PL_SQL
1-第一个简单的hello world程序
BEGIN
DBMS_OUTPUT.PUT_lINE('HELLO WORLD');
END;

要显示需要设置默认显示set serveroutput on;默认是关闭的

2-声明变量declare

declare
v_name varchar2(20);--约定的v_开头的变量名
begin
v_name := 'name';
dbms_output.put_line('name' || v_name);
end;


3-exception

declare
v_name number := 0;
begin
v_num := 2/v_num;
dbms_output.put_line(v_num);
exception
when others then--相当于catch excption了
dbms_output.put_line('error');
end;

3-变量声明
每行只能声明一个,不能与数据库或表重名
变量类型
简单变量
a number(1);
a binary_integer := 0;--主要用来计数
a number(7,2) := 4000.00;
a date := sysdate;--sysdate系统当前时间
a constant number(3,2) := 3.14;
a boolean := false;--可以取空值,不赋值默认为空.不能打印
a varchar2(20) not null := '12345';

%type属性
declare
v_empno emp.empno%type;
v_empno v_empno%type;


复合变量
table 相当于数组
declare
type type_table_emp_empno is table of emp.empno%type index by binary_integer;--相当于声明一个数组类型
v_empnos type_table_emo_empno;
begin
v_empnos(0) := 4444;
v_e

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle手工建库指南 下一篇Oracle语句重启动原理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: