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) ...
随机推荐
- redis 库相关命令
切换数据库: select 1 查看数据库大小:dbsize 清空数据库: flushdb
- (八)open函数的flag详解
3.1.4.open函数的flag详解13.1.4.1.读写权限:O_RDONLY O_WRONLY O_RDWR(1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬 ...
- 如何正确的将J2ee项目部署到Tomcat
如何正确的将J2ee项目部署到Tomcat 1.打开配置文件(我的如下:C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\serv ...
- [ubuntu14.04 amd64 ]搜狗拼音輸入法安裝
这个网址下载之后,双击下载的deb文件http://mirrors.sohu.com/deepin/pool/non-free/f/fcitx-sogoupinyin-release/ 就会在ubun ...
- 0518 Scrum 项目 5.0
燃尽图: Sprint 1看板: 成员 团队贡献分 许佳仪 22 柯晓君 21 卓宇靖 18 赖文亮 19
- C++ 高级语法学习与总结(代码实例)
C++11增加了许多的特性,auto就是一个很明显的例子. 还有就是typedid()获取数据变量的类型 看下面简短的代码: atuo: 很像java中的加强for循环..... //获取一个数据 ...
- MySQL drop、delete和truncate的区别
注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 d ...
- Windows Store App 主题动画
Windows 8系统的动画库中包含了丰富的主题动画,在开发Windows应用商店应用时,使用主题动画编写较少的代码即可实现所期望的动画效果.下面介绍一些常用的主题动画,读者可以根据每种主题动画提供的 ...
- 9patch边框黑线的含义
上面黑线或者点表示纵向可拉伸的区域 一般一个点即可 左边黑线或者点表示横向可拉伸的区域 一般一个点即可 下面表示纵向填放内容的区域 一般是一条黑线 右边表示横向填放内容的区域 一般是一条黑线
- iOS开发网络篇—发送json数据给服务器以及多值参数
iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...