- where子句用来筛选from子句中指定的数据源所产生的行数据,group by子句用来对经where子句筛选出来后的结果数据进行分组,having 子句用来对分组后的结果数据再进行筛选。建议将所有应该在分组之前进行的搜索条件放在where子句中而不是having子句中,这样会减少参与分组的数据行执行效率高。
- 内连接 select * from student inner join sc on student.sno = sc.sno
- 为表取别名 from student [as] s ,当为表取了别名以后,在查询语句的其他地方,所有用到表名的地方都要使用别名
- 每链接一个表就要添加一个join子句。
- 自连接 select c1.name , c1.credit from course c1 join course c2 on c1.credit=c2.credit where c2.name = ‘数据结构’
- 使用子查询进行比较测试select sno,grade, from sc where cno = ‘c005’ and grade > ( select avg(grade) from sc where cno = ‘c05’ )
- 将查询结果保存到新表中:select sdept ,count(*) as 人数 into dept_cnt from student group by sdept
- select s.sno 学号,sname 姓名,
case sdept
when ‘计算机系’ then ‘cs’
when ‘信息系’ then ‘im’
when ‘数学系’ then ‘ma’
end as 所在系,grade 成绩 from student - select s.sno 学号,sname 姓名,
case
when sdept=‘计算机系’ then ‘cs’
when sdept=‘信息系’ then ‘im’
end as 所在系 from student - update sc set grade = grade +
case dept
when ‘数学系’ then 10
when ‘信息系’ then 5
else 0
end from student - 查询结果的并、交、差运算
并
select 语句1
union [all]
select 语句2
union [all]
select 语句3
交
select 语句1
intersect
select 语句2
intersect
select 语句3
差
select 语句1
except
select 语句2
except
select 语句3 - 当查询语句的目标列中包含聚合函数时,若没有分组子句,则目标函数中只能写聚合函数,而不能再写其他列名,若包含分组子句,则在查询的目标列中除了可以写聚合函数外,只能写分组依据列。
- 对行的过滤条件一般用where子句实现,对组的过滤条件用having子句实现
- 不能将对统计后的结果进行筛选的条件写在where子句中,应该写在having子句后
- 能否通过视图修改数据的基本原则:如果这个操作能够最终落实到基本表中上,成为基本表的基本操作,则可以进行,否则就不能通过视图修改数据。
- 如果被删除的视图是其他视图的数据源,那么删除该视图则其导出视图无法再使用,如果定义视图的基本表被删除了,则视图将无法使用。
- 视图一定程度上提供了数据的逻辑独立性,因为它对应的是数据库的外模式,当数据库的表结构变了,但应用程序可以不必修改,新建的视图保证了用户原来的关系,使用户的外模式未发生改变。
- 标准数据仓库,数据集市,多层数据仓库,联合式数据仓库
07-12
371

03-02
473

11-13
699

08-26
128
