Teammembers: HuangWenjuan HeJu WanJianmei YangWenjing ZhangJinlian ZhengLinjie Made By:

25
Teammembers: HuangWenjuan HeJu WanJ ianmei YangWenjing Zha ngJinlian ZhengLinjie Made By: HuangWenjuan ZhangJinlia n The Standard Language Of DB SQL

description

The Standard Language Of DB SQL. Teammembers: HuangWenjuan HeJu WanJianmei YangWenjing ZhangJinlian ZhengLinjie Made By: HuangWenjuan ZhangJinlian. 3.6View. - PowerPoint PPT Presentation

Transcript of Teammembers: HuangWenjuan HeJu WanJianmei YangWenjing ZhangJinlian ZhengLinjie Made By:

Page 1: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

Teammembers:HuangWenjuan HeJu WanJianmei YangWenjing ZhangJinlian ZhengLinjie

Made By: HuangWenjuan ZhangJinlian

The Standard Language Of DB SQL

Page 2: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

3.6View3.6View

• First of all we have to claim that most of our examples are from the book,but some are made up by ourselves.If there are any mistakes,you can point them out pointedly ,we are too glad to accept your advice.

• Then let’s begin our lesson.(WHO?)

Page 3: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• What is view?

View is also a kind of table,which is derived from one or more basic tables.It’s a virtual table.

• In the DB,only the definition of the view exists without the data which remain in the old tables.

• The view changes with the basic tables.

It’s a special kind of table ,so you can also

do the updating manipulations with some restrictions.

Page 4: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

3.6.1 Definition Of View3.6.1 Definition Of View

• 1.How to create view? We can use the command CREATE VIEW to create

a view.The common form is as follows:

CREATE VIEW <view_name>[(<col1_name>[,<col2_name>]…)]

as <sub SQL>

[WITH CHECK OPTION];

Page 5: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• The subqueries can be any kind of SQL but ORDER BY or DISTINCT command.

• WITH CHECK OPTION requests that when making UPDATE,INSERT,DELETE manipulations the rows you are to delete should agree with the conditions.

• Tips: all the attributes of the view should be given in the situation as follows:

Page 6: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

First, some of the attributes are Aggregated functions(聚集函数 ) or expressions.

• Eg1

CREATE VIEW S_C(Sno,SDPcount)

as

SELECT Sno,COUNT(Sdept)

FROM Student

ORDER BY Sno;

Page 7: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• Second, create view with the attributes of one name in different tables when making multi_table connection.

• Eg2 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept=‘IS’ AND Student.Sno=SC.Sno AND SC.Cno=‘1’;

Page 8: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• Third ,when you rename some attributes.

Eg3 CREATE VIEW IS_S2(StudentNo,StudentName)

AS

SELECT Sno,Sname

FROM Student

WHERE Student.Sdept=‘IS’;

Page 9: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• If you leave out the attributes’ names of the view,it implicates that all the attributes are decided by the SELECT command

• Eg4

CREATE VIEW IS_Student

AS

SELECT Sno,Sname,Sage

FROM Student

WHERE Sdept=‘IS’;

Page 10: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• RDBMS just stores the definition of the view into the data dictionary without execute the SELECT command.

• Eg5 CREATE VIEW IS_Student AS SELECT Sno, Sname,Sage FROM Student WHERE Sdept=‘IS’; WITH CHECK OPTION;

Page 11: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• In the example above, because you have add the sentence of WITH CHECK OPTION, RDBMS will attach the condition of Sdept=‘IS’ automatically whenever you execute any manipulation on the view in the future.

• 行列子视图 a view that is derived from one single basi

c table being deleted some rows and some columns and remaining the primary key.

Page 12: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• View can also be based on several basic tables .• Eg6: create a view of the IS students who have chosen NO.1 course.

• CREATE VIE IS_S1(Sno, Sname , Grade)

AS SELECT Student. Sno, Sname, Grade FROM Student, SC WHERE Sdept=‘IS’ AND Student .Sno=SC. Sno AND SC. Cno=‘ 1’;

Page 13: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• In Eg6 the IS_S1 view contains the attribute Sno which has the same name in both table Student and table SC,so each attribute name should be given.

• View can be builded on the views too.

Page 14: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

Eg6: build a view based on the information of IS students who have chosen NO.1 course as well as the grade is not less than 90.

CREATE VIEW IS_S2AS SELECT Sno,Sname,GradeFROM IS_S1WHERE Grade>=90;

Page 15: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• Virtual column

the derived attribute columns in the view, whose data come from other data but do not exist exactly.

View with the expression

the view with the virtual columns.

Page 16: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

Eg7:define a view reflecting the information about the birthdays of the students.

CREATE VIEW BT_S(Sno,Sname,Sbirth)

AS

SELECT Sno,Sname,2004-Sage

FROM Student;

Page 17: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• Grouping View the view defined by the sentence of Aggregated functions

(聚集函数 ) and the command of GROUP BY.

Eg8: CREATE VIEW S_G(Sno, Gavg) AS SELECT SC FROM SC GROUP BY Sno;

Here we use the function AVG() to produce Gavg,so the view should definitely list out each attribute name,S_G is a Grouping View

Page 18: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• Tip: To avoid some problems, we’d better delete the view deri

ved from the table we have made changes to.

2.Drop The View the general form is as follows: DROP VIEW <view_name>[CASsCADE]

One question: When we drop the view what should we pay attention to?

Page 19: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• attention: if you have derived views from the view you want to drop,you should use the command CASsCADE to drop all the derived views.

• Assume that you create a view IS_S2 that is based on IS_S1,and now you are to delete the IS_S1,the exact sentence is as follows:

DROP VIEW IS_S1 CASsCADE;

Page 20: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

3.6.2 Query The View3.6.2 Query The View

What is View Resolution?

Before the query, RDBMS will check that whether the table, the view and items like that do exist. If so , the query about t

he view will be changed into the equivalent query about the basic tables. The process of the change is called View Resolution

• Eg9 : • SELECT Sno, Sage• FROM IS_Student• WHERE Sage<20;

Page 21: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• So after the view resolution, the result is as follows:

SELECT Sno,Sage FROM Student WHERE Sdept=‘IS’ AND Sage<20;

• Eg10 • SELECT IS_Student. Sno,Sname• FROM IS_Student, SC• WHERE IS_Student.Sno=SC.Sno AND

SC.Cno=‘1’;

Page 22: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• The query above refers to a virtual table (view) and a table.

Sometimes the view resolution will give birth to potential problems .Please look at the example followed.

• Eg11

• SELECT *

• FROM S_G

• WHERE Gavg>=90;

Page 23: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

The sub query is:• SELECT Sno, AVG(Grade)• FROM SC• GROUP BY Sno;

So the eventual result is :• SELECT Sno, AVG(Grade)• FROM SC• WHERE AVG(Grade)> =90• GROUP BY Sno;

Page 24: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

• The problem is that in the sentence of WHERE we can not use the conditional expression. So it’s obvious that syntax error is to arise .The exact change is as follows :

• SELECT Sno,AVG(Grade)

• FROM SC

• GROUP BY Sno

• HAVING AVG(Grade)>=90;

Page 25: Teammembers: HuangWenjuan  HeJu  WanJianmei  YangWenjing  ZhangJinlian  ZhengLinjie  Made By:

The End ,Thank You!The End ,Thank You!