并∪交∩差 - 或&& 与|| 非!
选择关系运算符
1.行
查询植保学院全体学生
college='植保'(student)
2.列
查询所有女同学的学号和姓名
πsno,sname(ssex='女'(student))
3、连接
连接 -- 笛卡尔积 上面加条件
1、连接 C<E.....
2、等值连接 特殊的连接
3、自然连接 特殊的等值连接
4、外连接 笛卡尔积有null 左边空为左外连接
数据定义 create(创建) drop(删除) alter(修改) 基本表
table(表) index(索引) view(视图)
数据查询 select
数据操纵 insert (插入) delete(删除) update(修改)
数据控制 grant revoke
创建表所需要的条件:
char 2000 varchar2 4000 number(p38,s小数点) date日期
完整性约束:
实体完整性约束:primary key
参照完整性约束:foreign key (sno) references s(sno),
用户自定义完整性约束:
check约束 constraint -约束
唯一性约束:unique
非空值约束: not null
索引
增 create index <索引名> on 表名(属性);
改 alter index <旧索引名> rename to <新索引名>;
删 drop index <表名>;
查
1、单表查询
a、 (distinct)消除取值重复的行
select distinct college from s;
b、(where)满足条件查询
查询课程成绩在60到100之间的选课记录。
select * from sc where grade between 60 and 100;
c、字符匹配
查询课程名以"DB_"开头,且倒数第三个字符为i的课程的详细情况。
select * from c where cname like 'DB\_%i_ _'escape'\';
escape转义字符 _
d、order by 列名 1、asc升序 2、desc降序;
e、计数count 总和sum 平均值avg 最大值max 最小值min
f、group by 对查询结果分组 having count 对查询结果添加条件分组(作用于组)
select sno,count(cno) from sc group by sno having count(cno)>3;
2、连接查询(一次查询同时涉及两个以上的表)
1、等值与非等值连接查询 =
2、自身连接查询
查询选修了001号课程和003号课程的学生学号。
select a.*,b.*
from sc a,sc b
where a.sno=b.sno
and a.cno='001'
and b.cno='003';
3、外连接查询
查询每个学生及其选修课程的情况,包括没有选修课程的学生。
select s.sno,sname,ssex,sbirth,college,grade
from s left outer join sc on (s.sno=sc.sno);
4、复合条件连接查询(where子句中含多个连接条件时)
查询选修002号课程且成绩在90分以上的所有学生的学号、姓名。
select s.sno,sname
from s,sc
where s.sno=sc.sno and cno='002'and grade>90;
3、嵌套查询
带有exists谓词的子查询 只返回真值或假值,给出列名 无实际意义。
查询没有选修001号课程的学生姓名。
4、集合查询
1、并操作 R∪S = { t | tR ∨ t
S } (既属于R又属于S) union
2、交操作 RS (既属于R又属于S) intersect
3、差操作 R-S (属于R不属于S) minus