這章就是講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 表示邏輯蘊含->
派生表必須獨立子查詢, 且必須重命名.