Oracle学习系列6
Oracle学习系列6
************************************************************************************
删除约束(重点):
格式:
alter table person drop constraint constraint_name ;
创建person表:
create table person(
UID varchar()
name varchar() not null, //非空约束
age number() not null, //非空约束
birthday date,
sex varchar() default '男',
) ;
/**
主键约束:主键字段_PK
唯一约束:字段_UK
检查约束:字段_CK
外键约束:父字段_子字段_FK
*/
ex:为表添加若干个约束,
格式:
alter table tab_name add constraint constraint_name constraint_type(constrain_colx) ;
ex:添加约束
alter table person add constraint person_uid_PK primary key(uid);//增加主键约束
alter talbe person add constraint person_name_UK unique(uid); //增加唯一约束
alter table person add constraint person_age_CK checke(age between and ) ;
alter table person add constraint person_sex_CK check(sex in ('男','女','中')) ;
ex:删除约束
alter table person drop constraint person_uid_PK ;//删除主键约束
alter talbe person drop constraint person_name_UK ; //删除唯一约束
alter table person drop constraint person_age_CK ; //删除检查约束
alter table person drop constraint person_sex_CK ; //删除检查约束
************************************************************************************
rownum(重点):
rownum: 表示行号,实际上是一个伪列,可在每张表中出现
select rownum, empno, ename ,job,sal,hiredate
from emp ; // ROWNUM 采用自动编号的方式呈现
ex:
select rownum, empno, ename, job, sal hiredate
from emp
;
************************************************************************************
建表、约束、查询综合练习:
题目背景:
有某个学生运动会比赛信息的数据库,保存了如下的表:
运动员sporter(运动员编号sporterid, 运动员姓名name, 运动员性别sex, 所属系好department)
项目item (项目编号itemid, 项目名称itemname, 项目比赛地点location)
成绩grade(运动员编号sportid,项目编号itemid, 积分mark)
1建表要求:
a,定义各个表的主键外码约束
b,运动员的姓名和所属系别不能为空值
c,积分要么为null,要么为6,,,,分别代表第一二三和其他名词的积分
create table sporter(
sporterid nummber() primary key not null,
name varchar2() not null,
sex varchar2() not null,
department varchar2() not null,
constraint sporter_sex_CK check(sex in('男','女'))
);
create table item(
itemid varchar2() primary key not null,
itemname varchar2() not null,
location varchar2() not null
);
create table grade(
sporterid number(),
itemid varchar2(),
mark number(),
constraint sporter_grade_sporterid_FK foreign key(sporterid)
references sporter(sporterid) on delete cascade
constraint item_grade_itemid_FK foreign key(itemid)
references item(itemid) on delete cascade
constraint grade_mark_CK check(mark ,,,))
);
测试数据:
insert into sporter(sportid, name, sex, department )
values(,'黎明','男','计算机系');
insert into sporter(sportid, name, sex, department )
values(,'张三','男','数学系系');
insert into sporter(sportid, name, sex, department )
values(,'李四','男','计算机系');
insert into sporter(sportid, name, sex, department )
values(,'王五','男','物理系');
insert into sporter(sportid, name, sex, department )
values(,'李楠','女','心理系');
insert into sporter(sportid, name, sex, department )
values(,'孙俪','女','艺术系');
---------------------------------------------------------
insert into item(itemid ,itemname, location)
values('x001','男子五千米','一操场') ;
insert into item(itemid ,itemname, location)
values('x002','男子标枪','一操场') ;
insert into item(itemid ,itemname, location)
values('x003','男子跳远','二操场') ;
insert into item(itemid ,itemname, location)
values('x004','女子跳高','二操场') ;
insert into item(itemid ,itemname, location)
values('x005','女子三千米','三操场') ;
---------------------------------------------------------
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
insert into grade(sporterid, itemid,mark)
values(,);
要求:
求出目前总积分最高的系名,及其积分:
select * from (
select s.department , sum(g.mark) sum
from sporter s, grade g
where s.sporterid=g.sporterid
group by s.department
order by sum desc
)
找出在一操场进行比赛的各项目名称及其冠军的姓名:
select i.itemname, s.name, g.mark
from item i, grade g,sporter s
where i.location='一操场'
and i.itemid=g.itemid
and s.sporterid=g.sporterid
and g.mark= ;
找出参加了张三所参加过的项目的其他同学的姓名:
select distinct s.name
from sporter s, grade g
where s.sporterid=g.sporterid and s.name <>'张三'
and g.itemid IN (
select g.itemid from sporter s ,grade g
where s.sporterid=g.sporterid
and s.name='张三'
) ;
经查张三使用了违禁药品,其成绩都记0分,请在数据库中做出相依修改:
update grade
where sporterid =(
select sportid from sporter where name ='张三'
) ;
经组委会协商,需要删除女子跳高比赛项目:
delete from item
where itemname='女子跳高' ;
------------------------------------------------------------
删除顺序: //先删子表,再删主表
drop table grade;
drop table sporter;
drop table item ;
************************************************************************************
集合操作:
分类:
并(UNION) :将多个查询的结果组合到一个查询结果中,无重复值 //UNIONALL:包含重复值
交(INTERSECT):返回多个查询结果相同的部分
差(MINUS) :返回两个结果的差集
复制emp表,将部门20的雇员信息取出来:
create table emp20
as select * from emp
;
验证UNION:
select * from emp
union
select * from emp20 ;
验证UNIONALL:
select * from emp
unionall
select * from emp20 ;
验证INTERSECT:
select * from emp
INTERSECT
select * from emp20 ;
验证MINUS:
select * from emp
minus
select * from emp20 ;
----------------------------------------------------------------------------------
SQL查询最终格式:
////////////////////////////////////////////////////////////////////////////////////////////
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 ,
(
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
{where 条件s }
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
)别名x tab3 别名3 ,...
{where 条件s
(
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
{where 条件s }
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
)
}
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
{UNION | INTERSECT |MINUS}
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 ,
(
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
{where 条件s }
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
)别名x tab3 别名3 ,...
{where 条件s
(
select { distinct } * | col1 别名1 col2 别名2 ...
from tab1 别名1 , tab2 别名2 , tab3 别名3 ,...
{where 条件s }
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
)
}
{group by 分组条件 { having 分组条件 } }
{ order by col1 ASC | DESC , col2 ASC | DESC, ...} ;
////////////////////////////////////////////////////////////////////////////////////////////
Oracle学习系列6的更多相关文章
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习系列7
Oracle学习系列7 ************************************************************************************ 关联表 ...
- Oracle学习系列5
Oracle学习系列5 ************************************************************************************ ,掌握 ...
- 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) ...
随机推荐
- LTE Module User Documentation(翻译14)——Uplink Power Control(上行功率控制)
LTE用户文档 (如有不当的地方,欢迎指正!) 20 Uplink Power Control(上行功率控制) 上行功率控制功能默认是开启的.用户可以通过设置布尔属性 ns3::LteUePhy: ...
- LTE Module User Documentation(翻译8)——核心网(EPC)
LTE用户文档 (如有不当的地方,欢迎指正!) 14 Evolved Packet Core (EPC) 我们现在讲解如何编写一个仿真程序——除了 LTE 无线接入网外,还允许仿真 EPC. EP ...
- (原创)Windows和Linux间共享文件
方法一: Windows创建目录sharedir,修改共享属性,对everyone开放读写权限. Linux下运行命令:# mount -t cifs //192.168.8.55/sharedir ...
- 安装 SciPy 和 scikit-learn 升级pip 及pip基本命令表
安装Scipy和scikit-learn出错,出错记录及当时最终解决办法 问题: 一.使用pip直接安装 直接pip install scipy C:\Users\Plain>pip insta ...
- 利用反射和ResultSetMetaData实现DBUtils的基本功能
DBUtils大大简化了JDBC的书写,极大的提高了开发效率,和数据库连接池一起,简化了JDBC开发的流程.简易的自定义数据库连接池可以通过装饰者设计模式和动态代理模式得到很简单的实现,那么DBUti ...
- static(静态、修饰符)
static(静态.修饰符) static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式: 方式一: 使用对象进行访问. 对象.属性名 方 ...
- unindent does not match any outer indentation level
报错原因: 空格与tab键混用,一般粘贴代码时会出现 解决方法: 把所有缩进取消,然后用tab键来缩进
- PDF 补丁丁 0.4.3.1518 测试版发布:书签编辑器新增升级书签功能、优化PDF文档阅览器
新的 PDF 补丁丁测试版上线啦! 新版本增加了升级书签的功能(见工具栏的“←”按钮),可以方便地将下级书签升级为上级书签. 另外,新版本还增强了书签编辑器功能中的 PDF阅读器,从之前的单页阅读模式 ...
- 介绍开源的.net通信框架NetworkComms框架之八 UDP通信
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- iOS开发多线程篇—NSOperation基本操作
iOS开发多线程篇—NSOperation基本操作 一.并发数 (1)并发数:同时执⾏行的任务数.比如,同时开3个线程执行3个任务,并发数就是3 (2)最大并发数:同一时间最多只能执行的任务的个数. ...