************************************************************************************
1,掌握表的建立与删除
了解Oracle中的主要数据类型
2,约束的分类和使用
3,表的关联:交,并,补
4,掌握ROWNUM伪列的作用
5,掌握序列的使用
6,掌握视图的作用
7,了解同义词,用户管理,权限分配与撤销,数据库的备份
------------------------------------------------------------------
创建和管理表(重点):
常用的数据类型:
number[int ,
float], varchar ,date ,clob, blob,
表的建立:
create table tab_name(
col1 type [defalut 默认值],
col2 type [default 默认值],
...
coln type [default 默认值]
) ;
create table tab_name as (子查询) ;
//赋值表
create table tab_name
as (select * from emp
where 1=
2) ;
//仅复制表结构
ex:创建表person
create table person(
UID varchar(18),
name varchar(200),
age number(3),
birthday date,
sex varchar(2)
default ‘男‘
) ;
ex:向表中增加数据:
insert into person(UID,name,age,birthday,sex)
values(‘111111111111111111‘,
‘keivn‘,
30,to_date(
‘1994-04-09‘,
‘yyyy-mm-dd‘),
‘女‘);
ex:表的删除:
drop table tab_name ;
eg:drop table person;
ex:修改表结构:增加列,修改列
alter table tab_name add (col1 type default 默认值,
col2 type default 默认值,
...
coln type default 默认值
) ; //增加列
alter table person add (address varchar(200)
default ‘暂无地址‘) ;
alter table tab_name modify (col1 type default 默认值,
col2 type default 默认值,
...
coln type default 默认值
) ; //修改列
alter table person modify (name varchar2(20)
default ‘无名氏‘);
/**
若数据库中对应字段里有一个很长的数据,则无法将表长度缩小
*/
ex:为表重命名
在oracle中提供了rename命令,对表进行重新命名。
rename tab_name_old to tab_name_new ;
ex:
rename person to tperson ;
ex:截断表
若要清空一张表的数据,同时不需要回滚,可以立即释放资源就要使用
截断表的语法:
truncate table tab_name ;
ex: truncate table tperson ; //清空表数据
rollback ;
//使用rollback无效
************************************************************************************
思考题:
现有一张国家表,里面有字段:中国,美国,巴西,荷兰,
现要求通过查询实现对战功能:
中国 ---->
美国
中国 ---->
巴西
中国 ---->
荷兰
美国 ---->
中国
美国 ---->
巴西
美国 ---->
荷兰
问:此程序该如何实现?
分析:使用笛卡尔积完成
create table national(
name varchar(30)
) ;
insert into national(name)
values(‘中国‘) ;
insert into national(name)
values(‘美国‘) ;
insert into national(name)
values(‘巴西‘) ;
insert into national(name)
values(‘荷兰‘) ;
select t1.name ,t2.name
from national t1, national t2
where t1.name <>
t2.name ;
************************************************************************************
约束(重点):
分类:
1,主键约束 -->
是唯一的表示,本身不能为空,如身份证
2,唯一约束 -->
在一个表中只能建立一个主键约束,其他列不想出现重复值可使用唯一性约束
3,非空约束 -->
列的内容不能为空
4,检查约束 -->
检查一个列的内容是否合法
5,外键约束 -->
在两张表中进行的约束操作
---------------------------------------------------------------------------
1,主键约束:
create table person(
UID varchar(18) primay key,
//主键约束
name varchar(
200),
age number(3),
birthday date,
sex varchar(2)
default ‘男‘
) ;
/**
create table person(
UID varchar(18)
name varchar(200),
age number(3),
birthday date,
sex varchar(2) default ‘男‘,
constraint person_uid_pk primary key(uid) //指定uid主键约束名称
) ;
*/
---------------------------------------------------------------------------
2,唯一约束 :unique
表示一个字段中的内容是唯一的,其他列不允许重复
create table person(
UID varchar(18)
name varchar(200) unique not
null,
//非空约束,唯一约束
age number(
3) not
null,
//非空约束
birthday date,
sex varchar(2)
default ‘男‘,
constraint person_uid_pk primary key(uid) //指定uid主键约束名称
<constraint person_name_uk unique(name) >
//指定name唯一约束名称
) ;
---------------------------------------------------------------------------
3,非空约束: not
null
表示一个字段的内容不允许为空,即插入数据时必须插入该字段的值
create table person(
UID varchar(18)
name varchar(200) not
null,
//非空约束
age number(
3) not
null,
//非空约束
birthday date,
sex varchar(2)
default ‘男‘,
constraint person_uid_pk primary key(uid) //指定uid主键约束名称
<constraint person_name_nk not
null(name) >
//指定name非空约束名称
) ;
---------------------------------------------------------------------------
4,检查约束
create table person(
UID varchar(18)
name varchar(200) not
null,
//非空约束
age number(
3) not
null check( age between
0 and
150),
//非空约束,检查约束
birthday date,
sex varchar(2)
default ‘男‘ check(sex
in(
‘男‘,
‘女‘,‘中’)),
//检查约束
constraint person_uid_pk primary key(uid)
//指定uid主键约束名称
<constraint person_name_ck check(name) >
//指定name检查约束名称
<constraint person_sex_ck check(sex) >
//指定sex检查约束名称
) ;
---------------------------------------------------------------------------
5,外键约束(foreign key):
create table person(
UID varchar(18)
name varchar(200) not
null,
//非空约束
age number(
3) not
null check( age between
0 and
150),
//非空约束,检查约束
birthday date,
sex varchar(2)
default ‘男‘ check(sex
in(
‘男‘,
‘女‘,‘中’)),
//检查约束
constraint person_uid_pk primary key(uid)
//指定uid主键约束名称
<constraint person_name_ck check(name) >
//指定name检查约束名称
<constraint person_sex_ck check(sex) >
//指定sex检查约束名称
) ;//创建person表
create table book(
bid number primary key not null,
bname varchar(30),
bprice number(5,
2)
uid varchar(18)
constraint person_book_uid_fk foreign key(uid) references person(uid) //外键约束
);//创建book表
/**
1,在子表book中设置的外键在父表person中必须是主键
2,删除时,先删除子表book,再删除父表person:
drop table book;
drop table person ;
*/
ex:插入测试数据:
insert into person(UID,name,age,birthday,sex)
values(‘111111111111111111‘,
‘keivn‘,
30,to_date(
‘1994-04-09‘,
‘yyyy-mm-dd‘),
‘女‘);
insert into book (bid,bname,bprice)
values(1,
‘java‘,
89.8,
‘1111111111111111111‘);
级联删除:
create table book(
bid number primary key not null,
bname varchar(30),
bprice number(5,2)
uid varchar(18)
constraint person_book_uid_fk foreign key(uid) references person(uid) on delete cascade //外键约束,级联删除
);//创建book表
delete from person where pid =‘1111111111111‘; //删除一条记录,同时删除子表book中的记录
Oracle学习系列5
标签: