Oracle学习系列5
Oracle学习系列5
************************************************************************************
,掌握表的建立与删除
了解Oracle中的主要数据类型
,约束的分类和使用
,表的关联:交,并,补
,掌握ROWNUM伪列的作用
,掌握序列的使用
,掌握视图的作用
,了解同义词,用户管理,权限分配与撤销,数据库的备份
------------------------------------------------------------------
创建和管理表(重点):
常用的数据类型:
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 =) ;//仅复制表结构
ex:创建表person
create table person(
UID varchar(),
name varchar(),
age number(),
birthday date,
sex varchar() default '男'
) ;
ex:向表中增加数据:
insert into person(UID,name,age,birthday,sex)
values(,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() default '暂无地址') ;
alter table tab_name modify (col1 type default 默认值,
col2 type default 默认值,
...
coln type default 默认值
) ; //修改列
alter table person modify (name varchar2() 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()
) ;
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 ;
************************************************************************************
约束(重点):
分类:
,主键约束 -->是唯一的表示,本身不能为空,如身份证
,唯一约束 -->在一个表中只能建立一个主键约束,其他列不想出现重复值可使用唯一性约束
,非空约束 -->列的内容不能为空
,检查约束 -->检查一个列的内容是否合法
,外键约束 -->在两张表中进行的约束操作
---------------------------------------------------------------------------
,主键约束:
create table person(
UID varchar() primay key, //主键约束
name varchar(),
age number(),
birthday date,
sex varchar() 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主键约束名称
) ;
*/
---------------------------------------------------------------------------
,唯一约束 :unique
表示一个字段中的内容是唯一的,其他列不允许重复
create table person(
UID varchar()
name varchar() unique not null, //非空约束,唯一约束
age number() not null, //非空约束
birthday date,
sex varchar() default '男',
constraint person_uid_pk primary key(uid) //指定uid主键约束名称
<constraint person_name_uk unique(name) > //指定name唯一约束名称
) ;
---------------------------------------------------------------------------
,非空约束: not null
表示一个字段的内容不允许为空,即插入数据时必须插入该字段的值
create table person(
UID varchar()
name varchar() not null, //非空约束
age number() not null, //非空约束
birthday date,
sex varchar() default '男',
constraint person_uid_pk primary key(uid) //指定uid主键约束名称
<constraint person_name_nk not null(name) > //指定name非空约束名称
) ;
---------------------------------------------------------------------------
,检查约束
create table person(
UID varchar()
name varchar() not null, //非空约束
age number() not and ), //非空约束,检查约束
birthday date,
sex varchar() 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检查约束名称
) ;
---------------------------------------------------------------------------
,外键约束(foreign key):
create table person(
UID varchar()
name varchar() not null, //非空约束
age number() not and ), //非空约束,检查约束
birthday date,
sex varchar() 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(),
bprice number(,)
uid varchar()
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(,to_date('1994-04-09','yyyy-mm-dd'),'女');
insert into book (bid,bname,bprice)
values(,');
级联删除:
create table book(
bid number primary key not null,
bname varchar(),
bprice number(,)
uid varchar()
constraint person_book_uid_fk foreign key(uid) references person(uid) on delete cascade //外键约束,级联删除
);//创建book表
delete from person '; //删除一条记录,同时删除子表book中的记录
Oracle学习系列5的更多相关文章
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习系列7
Oracle学习系列7 ************************************************************************************ 关联表 ...
- Oracle学习系列6
Oracle学习系列6 ************************************************************************************ 删除约 ...
- Oracle学习系列4
Oracle学习系列4 ************************************************************************************ 数据库 ...
- Oracle学习系列3
Oracle学习系列3 ************************************************************************************ 多表查 ...
- Oracle学习系列1
两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 300 ; set pag ...
- oracle学习系列之四 (视图)
视图视图是数据库中特有的对象.视图用于存储查询,但不会存储数据(物化视图除外).这是视图和数据表的重要区别.可以利用视图进行查询,插入,更新和删除数据.Oracle有如下四种视图(关系视图,内嵌视图, ...
- oracle学习系列之三 (约束)
主键约束:外键约束:唯一性约束:检查约束:默认值约束 -——————五大约束 一. 主键约束: --创建表的主键约束 create table student (student_id number ...
- Oracle 学习系列之二(会话与事务级临时表和dual表 )
一. 会话临时表 --创建会话临时表create global temporary table tmp_user_session(user_id int, user_name varchar2(20) ...
随机推荐
- 03-第一个C语言程序的分析
本文目录 一.代码分析 二.开发和运行C程序的步骤 三.总结 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语 ...
- [部署]MVC4.0+EF5.0+ODT+ORACLE相关注意事项
摘要 项目开发工具:VS2012旗舰版(.NetFrameWork4.5.1),WIN7 64bit,Oracle 11g 服务器环境:Windows Server2008 R2 64bit,.Net ...
- timer控件、三级联动
timer控件: 实现时间日期自增长: using System; using System.Collections.Generic; using System.ComponentModel; usi ...
- C语言复杂声明
C语言复杂声明 First step int *f(); /* f:是一个函数,它返回一个指向int类型的指针*/ int (*pf)(); /* pf:是一个指向函数的指针,该函数返回一个int类型 ...
- Jquery报错:Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).apply is not a function
页面中出现了Jquery报错:Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || ...
- 最流行的JavaScript库jQuery不再支持旧版IE
直到JQuery2.0的发布,流行的jQuery JavaScript库到了一个重要里程碑.2.0版本比前任版本在大小上缩减了12%,但是更大的新闻是,jQuery 2.0不在对IE6,7,8三个版本 ...
- 基于zepto的一个日期区间选择插件
功能:类似去哪选日期的那个日历,选第二个日期关闭日历,https://github.com/zhangchen2397/calendar在这个插件基础上改哒,这个只能选一个日期,我加了选两个日期的.并 ...
- $.post 请求一直转圈圈,谷歌浏览器状态一直为canceled
最开始写的是 $.post("url",{},function(){},"json") 用火狐浏览器 测试发现请求一直在转圈圈 ,就在action输出 发现也进 ...
- 【汇编】mov [1000],bx:immediate operand not allowed
],bx;在目的操作数中编译器会忽略[],所以[1000]就成了立即数,出现“immediate operand not allowed”改: ;mov bx,[1000];而在源操作数中,就不会出现 ...
- oracle修改序列
Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多. 但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来 ...