关系数据库三

2020-07-02  本文已影响0人  李耕_嘿嘿嘿黑龙江哈哈哈哈尔滨

这章就是讲sql.

1.SQL数据类型有哪些?

略.

2.简述表和view视图层面的操作:

create table (name) (属性名 类型 约束,...); 声明主键可以在属性后面直接声明, 而多属性主键需要单独语句, 声明外键也要单独语句. PRIMARY KEY (属性名), FOREIGN KEY(属性名) REFERENCES 表(属性名).

drop table 名字,名字,...;

alter table 名字 alter/add/add contraint/drop/drop constraint 名字 +*

定义视图:

create/alter view 名字(属性) as 查询语句 (alter操作就是修改映射保持逻辑数据独立性)

drop view 名字;

3.具体数据层面处理操作.

insert into 表() values() / from(语句) //values(直接填值) from(子查询语句)

update 表名 set 属性=赋值 where

delete from 表名 where 

4.简述完整性检查对操作的反馈.

如果是实体完整性会被破坏, 直接拒绝新操作.

如果是参照完整性被破坏, 如果是参照关系的修改或添加 直接拒绝 如果是被参照关系的修改或者删除, 拒绝, 级联, 对应项目值归null三选一.

三种选项可以在声明参照完整性约束的时候声明 FOREIGN KEY fk_ma REFERENCES stu(sa) 

ON DELETE RESTRICT | SET NULL | CASCADE

ON UPDATE RESTRICT | SET NULL | CASCADE

update delete语句 where 语句可以嵌套子查询语句

5.视图可否修改?插入要满足什么条件?

视图在一定条件下是可以修改的, 需要视图中元组与基础关系中元组一一对应(定义的时候不能有聚集函数, 分组, 并,去重, from 和where包含相关子查询)

插入需要视图可修改, 不能包含一个基本关系属性的多个副本, 且属性不能定义为表达式.

6.select 如何去重

select distinct +*

7.UPPER()大写, 范围BETWEEN AND , LIKE 'E%'/'E___' REGEXP IS NULL.

8.集合操作并可以用union, 那么交(intersect)和差(minus,except)怎么表达呢?

可以采用in/ not in来表达

9.如何对多个属性排序?

采用order by 属性1 asc, 属性2 desc. 

10. "order by 属性1" 表示什么?空值在表前还是表后?

表示根据属性1升序排列, 空值在表后.

11. 如何从查询结构中去掉最高值后选取前5个结果?

select * form table where attribute is not null order by attribute1 desc limit 5 offset 1;

12.什么聚集操作不会跳过null?

count(*)

13.为什么having语句才能使用聚集函数, 而where不行?

因为分组操作在where后 having前.


join操作:

1.join on condition

2.join using Sno

3.left join on

4.natural right join

三类嵌套:

exist语句 in语句 逻辑比较语句(包含ALL SOME ANY修饰词)

相关子查询依赖外查询, exist语句中可以运用相关子查询

exist表示全称谓词 即所有都有

exist 表示逻辑蕴含->

派生表必须独立子查询, 且必须重命名.

上一篇下一篇

猜你喜欢

热点阅读