1 数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 SQL ( 续 2 )

Slides:



Advertisements
Similar presentations
Complex Integrity Constraints in SQL. Constraints over a Single Table Table Constraint: Create TABLE Sailors (sid INTEGER, sname CHAR(10), rating INTEGER,
Advertisements

Relational Database. Relational database: a set of relations Relation: made up of 2 parts: − Schema : specifies the name of relations, plus name and type.
SQL Lecture 10 Inst: Haya Sammaneh. Example Instance of Students Relation  Cardinality = 3, degree = 5, all rows distinct.
Database Security by Muhammad Waheed Aslam SIS Project Leader ITC/KFUPM.
Cs3431 Constraints Sections 6.1 – 6.5. cs3431 Example CREATE TABLE Student ( sNum int, sName varchar (20), prof int, CONSTRAINT pk PRIMARY KEY (snum),
Dec 4, 2003Murali Mani SQL B term 2004: lecture 14.
SPRING 2004CENG 3521 The Relational Model Chapter 3.
1 Query Languages: How to build or interrogate a relational database Structured Query Language (SQL)
1 Relational Model. 2 Relational Database: Definitions  Relational database: a set of relations  Relation: made up of 2 parts: – Instance : a table,
The Relational Model Lecture 3 Book Chapter 3 Relational Data Model Relational Query Language (DDL + DML) Integrity Constraints (IC) From ER to Relational.
1 Views. 2 Views A view is a "virtual table" defined using a query You can use a view as if it were a table, even though it doesn't contain data The view.
Student(sid, name, addr, age, GPA) Class(dept, cnum, sec, unit, title, instructor) Enroll(sid, dept, cnum, sec) siddeptcnumsec 301CS CS AT00000.
1 Rewriting Intersect Queries Using In SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid = R.sid and R.bid = B.bid and B.color = ‘red’ INTERSECT.
Chapter 08 How to Insert, Update, and Delete Data MIT 22033, Database Management Systems By. S. Sabraz Nawaz.
The Relational Model These slides are based on the slides of your text book.
1 IT420: Database Management and Organization SQL - Data Manipulation Language 27 January 2006 Adina Crăiniceanu
6 1 Chapter 6 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel.
제 2 장 SQL 활용.  SQL 활용 예제 (1) create table student ( id int not null, name char(20) not null, age int, height int, weight float, primary key(id) ); insert.
FALL 2004CENG 351 File Structures and Data Management1 Relational Model Chapter 3.
SQL: DDL John Ortiz Cs.utsa.edu.
SQL Basics. 5/27/2016Chapter 32 of 19 Naming SQL commands are NOT case sensitive SQL commands are NOT case sensitive But user identifier names ARE case.
The Relational Model1 ER-to-Relational Mapping and Views.
SQL: DDL. SQL Statements DDL - data definition language –Defining and modifying data structures (metadata): database, tables, views, etc. DML - data manipulation.
Recap of SQL Lab no 8 Advance Database Management System.
CN2180 MS SQL Server Kemtis Kunanuraksapong MSIS with Distinction, A+ MCTS, MCDST, MCP.
Outline Introduction Basic SQL Setting Up and Using PostgreSQL
What’s a database? Data stored in a structured format that lends itself to easy manipulation and recall.
CS 3630 Database Design and Implementation. Database Schema Branch (Bno…) Staff (Sno…Bno) Owner (Ono…) PropertyForRent (Pno…Ono) Renter (Rno…) Viewing.
Dec 8, 2003Murali Mani Constraints B term 2004: lecture 15.
Prince Sultan University Dept. of Computer & Information Sciences CS 340 Introduction to Database Systems.
Constraints and Triggers. What’s IC? Integrity Constraints define the valid states of SQL-data by constraining the values in the base tables. –Restrictions.
DBSQL 5-1 Copyright © Genetic Computer School 2009 Chapter 5 Structured Query Language.
The Relational Model Content based on Chapter 3 Database Management Systems, (Third Edition), by Raghu Ramakrishnan and Johannes Gehrke. McGraw Hill, 2003.
SQL John Nowobilski. What is SQL? Structured Query Language Manages Data in Database Management Systems based on the Relational Model Developed in 1970s.
Chapter 6 SQL. Agenda Data Definition Language (DDL) Access Control.
View 1. Lu Chaojun, SJTU 2 View Three-level vision of DB users Virtual DB views DB Designer Logical DB relations DBA DBA Physical DB stored info.
Lu Chaojun, SJTU Relational Data Model 1. Lu Chaojun, SJTU What’s a Data Model? A notation (collection of conceptual tools) for describing data as seen.
CMPT 258 Database Systems The Relationship Model PartII (Chapter 3)
CMPT 258 Database Systems The Relationship Model (Chapter 3)
1 SQL Insert Update Delete Create table Alter table.
Week 8-9 SQL-1. SQL Components: DDL, DCL, & DML SQL is a very large and powerful language, but every type of SQL statement falls within one of three main.
An Introduction to SQL For CS Overview of SQL  It is the standard language for relational systems, although imperfect  Supports data definition.
CS34311 The Relational Model. cs34312 Why Relational Model? Currently the most widely used Vendors: Oracle, Microsoft, IBM Older models still used IBM’s.
Chapter 13Introduction to Oracle9i: SQL1 Chapter 13 User Creation and Management.
Types Prof. Yin-Fu Huang CSIE, NYUST Chapter 5. Advanced Database SystemYin-Fu Huang Relation, tuple, cardinality, attribute, degree, domain, primary.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 The Relational Model Chapter 3.
Constraints Review. What is a constraint? Unique – forbids duplicate values Referencial – Foreign key Check Constraint – sets restrictions on data added.
الفصل السادس لغة Structured Query Language) SQL الفصل السادس لغة Structured Query Language) SQL.
Chapter 7 SQL HUANG XUEHUA. SQL Select-From-Where Statements SELECT desired attributes FROM one or more tables WHERE condition about tuples of the tables;
Copyright © Curt Hill SQL The Data Manipulation Language.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 The Relational Model Chapter 3.
1 CS122A: Introduction to Data Management Lecture #4 (E-R  Relational Translation) Instructor: Chen Li.
Insert, Update and the rest…
Database Systems Lu Wei College of Software and Microelectronics
CS 3630 Database Design and Implementation
Constraints and Triggers
Lecture#7: Fun with SQL (Part 2)
Referential Integrity
SQL Data Modification Statements.
The Relational Model Relational Data Model
CS 405G: Introduction to Database Systems
Referential Integrity
אבטחת נתונים בסביבת SQL Data Security
Session - 6 Sequence - 1 SQL: The Structured Query Language:
Title of Study Presenter names Major department names
Database Quizz I Write down your answers in word document with file name highlighting your name, student number, and class. E.g “95002”+”_”+ “03 class”+”_”+”name”,
Database Assignment Write down your answers in word document with file name highlighting your name, student number, and class. E.g “95002”+”_”+ “03 class”+”_”+”name”,
Updating Databases With Open SQL
Updating Databases With Open SQL
Presentation transcript:

1 数据库系统概论 An Introduction to Database System 第三章 关系数据库标准语言 SQL ( 续 2 )

2 第三章 关系数据库标准语言 SQL 3.1 SQL 概述 3.2 学生 - 课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7 小结

3 3.5 数 据 更 新 插入数据 修改数据 删除数据

插入数据  两种插入数据方式 : 1. 插入元组: 2. 插入子查询结果:  可以一次插入多个元组 。

5 一、插入元组  语句格式: INSERT INTO [( [ , …)] VALUES ( [ , ] … )  功能: 将新元组插入指定表中。

6 插入元组(续)  INTO 子句 属性列的顺序可与表定义中的顺序不一致。 没有指定属性列。 指定部分属性列。  VALUES 子句: 提供的值必须与 INTO 子句匹配。  值的个数。  值的类型。

7 插入元组(续) [例 1 ] 将一个新学生元组(学号: ;姓名:陈 冬;性别:男;所在系: IS ;年龄: 18 岁)插入到 Student 表中。 INSERT INTO Student (Sno , Sname , Ssex , Sdept , Sage) VALUES (' ' , ' 陈冬 ' , ' 男 ' , 'IS' , 18) ;

8 插入元组(续) [例 2 ] 将学生张成民的信息插入到 Student 表中。 INSERT INTO Student VALUES (‘ ’ , ‘ 张成民 ’ , ‘ 男 ’ , 18 , 'CS');

9 插入元组(续) [例 3 ] 插入一条选课记录 ( ' ' , '1 ') 。 INSERT INTO SC(Sno , Cno) VALUES (‘ ’ , ‘ 1 ’) ; RDBMS 将在新插入记录的 Grade 列上自动地赋空值。 或者: INSERT INTO SC VALUES (' ' , ' 1 ' , NULL) ;

10 二、插入子查询结果  语句格式: INSERT INTO [( [ , … )] 子查询;  功能: 将子查询结果插入指定表中。

11 插入子查询结果(续)  INTO 子句 ( 与插入元组类似 )  子查询 SELECT 子句目标列必须与 INTO 子句匹配  值的个数  值的类型

12 插入子查询结果(续) [ 例 4] 对每一个系,求学生的平均年龄,并把结果 存入数据库。 第一步:建表 CREATE TABLE Dept_age (Sdept CHAR(15) /* 系名 */ Avg_age SMALLINT) ; /* 学生平均年龄 */

13 插入子查询结果(续) 第二步:插入数据 INSERT INTO Dept_age(Sdept , Avg_age) SELECT Sdept , AVG(Sage) FROM Student GROUP BY Sdept ;

数 据 更 新 插入数据 修改数据 删除数据

修改数据  语句格式: UPDATE SET = [ , = ]… [WHERE ] ;  功能: 修改指定表中满足 WHERE 子句条件的元组。

16 修改数据(续) SET 子句:  指定修改方式。  要修改的列。  修改后取值。 WHERE 子句:  指定要修改的元组  缺省表示要修改表中的所有元组

17 修改数据(续)  三种修改方式: 1. 修改某一个元组的值。 2. 修改多个元组的值。 3. 带子查询的修改语句。

18 1. 修改某一个元组的值 [ 例 5] 将学生 的年龄改为 22 岁 UPDATE Student SET Sage=22 WHERE Sno=' ' ;

19 2. 修改多个元组的值 [ 例 6] 将所有学生的年龄增加 1 岁 UPDATE Student SET Sage= Sage+1 ;

20 3. 带子查询的修改语句 [ 例 7] 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno) ;

数 据 更 新 插入数据 修改数据 删除数据

删除数据  语句格式: DELETE FROM [WHERE ] ;  功能: 删除指定表中满足 WHERE 子句条件的元组。  WHERE 子句: 指定要删除的元组。 缺省表示要删除表中的全部元组,表的定义仍在字典中。

23 删除数据(续)  三种删除方式: 1. 删除某一个元组的值。 2. 删除多个元组的值。 3. 带子查询的删除语句。

24 1. 删除某一个元组的值 [ 例 8] 删除学号为 的学生记录。 DELETE FROM Student WHERE Sno= ' ;

25 2. 删除多个元组的值 [ 例 9] 删除所有的学生选课记录。 DELETE FROM SC ;

26 3. 带子查询的删除语句 [ 例 10] 删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno) ;

27 第三章 关系数据库标准语言 SQL 3.1 SQL 概述 3.2 学生 - 课程数据库 3.3 数据定义 3.4 数据查询 3.5 数据更新 3.6 视图 3.7 小结

视 图 视图的特点:  虚表,是从一个或几个基本表(或视图)导出的表。  只存放视图的定义,不存放视图对应的数据。  基表中的数据发生变化,从视图中查询出的数据也随 之改变。

视 图 定义视图 查询视图 更新视图 视图的作用

定义视图  建立视图  删除视图

31 一、建立视图  语句格式: CREATE VIEW [( [ , ]…)] AS [WITH CHECK OPTION] ;  组成视图的属性列名:全部省略或全部指定。  子查询不允许含有 ORDER BY 子句和 DISTINCT 短语。  With check option 表示对视图进行 update, insert, delete 操作时要保证更新、插入、删除的行满足子查询中 的条件表达式。

32 建立视图(续)  RDBMS 执行 CREATE VIEW 语句时只是把视图定 义存入数据字典,并不执行其中的 SELECT 语句。  在对视图查询时,按视图的定义从基本表中将数 据查出。

33 建立视图(续) [ 例 1] 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno , Sname , Sage FROM Student WHERE Sdept= 'IS' ;

34 建立视图(续)  基于多个基表的视图: [ 例 3] 建立信息系选修了 1 号课程的学生视图,包括学号, 姓名,成绩三个属性。 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' ;

35 Stop here!

36 重要概念 “ 行列子集视图 ” :若一个视图是从单个基本表导出, 并且只是去掉了基本表的某些行 和某些列,但是保留了主码,这 类视图叫 “ 行列子集视图 ” 。 例: create view is_student(sno,sname) as select sno,sname from student where sdept=‘is’

37 建立视图(续) [ 例 2] 建立信息系学生的视图,并要求进行修改和 插入操作时仍需保证该视图只有信息系的学生 。 CREATE VIEW IS_Student AS SELECT Sno , Sname , Sage FROM Student WHERE Sdept= 'IS' WITH CHECK OPTION ;

38 建立视图(续) 对 IS_Student 视图的更新操作:  修改操作:自动加上 Sdept= 'IS' 的条件  删除操作:自动加上 Sdept= 'IS' 的条件  插入操作:自动检查 Sdept 属性值是否为 'IS'  如果不是,则拒绝该插入操作。  如果没有提供 Sdept 属性值,则自动定义 Sdept 为 ‘IS’ 。

39 建立视图(续)  基于视图的视图 : [ 例 4] 建立信息系选修了 1 号课程且成绩在 90 分以上的学 生的视图。 CREATE VIEW IS_S2 AS SELECT Sno , Sname , Grade FROM IS_S1 WHERE Grade>=90 ;

40 建立视图(续)  带表达式的视图 : [ 例 5] 定义一个反映学生出生年份的视图,包括学 号,姓名,出生年份三个属性。 CREATE VIEW BT_S(Sno , Sname , Sbirth) AS SELECT Sno , Sname , 2000-Sage FROM Student ;

41 建立视图(续)  分组视图 : [ 例 6] 将学生的学号及他的平均成绩定义为一个视图,包括 学号,平均成绩两个属性。 假设 SC 表中 “ 成绩 ” 列 Grade 为数字型 CREAT VIEW S_G(Sno , Gavg) AS SELECT Sno , AVG(Grade) FROM SC GROUP BY Sno ;

42 建立视图(续)  不指定属性列 : [ 例 7] 将 Student 表中所有女生记录定义为一个视图 CREATE VIEW F_Student(F_Sno , name , sex , age , dept) AS SELECT * FROM Student WHERE Ssex=‘ 女 ’ ;

43 二、删除视图  语句的格式: DROP VIEW ;  该语句从数据字典中删除指定的视图定义。  如果该视图上还导出了其他视图,使用 CASCADE 级联 删除语句,把该视图和由它导出的所有视图一起删除。  删除基表时,由该基表导出的所有视图定义都必须显 式地使用 DROP VIEW 语句删除 。

44 删除视图 ( 续) [例 8 ] 删除视图 BT_S : DROP VIEW BT_S ; 删除视图 IS_S1 : DROP VIEW IS_S1 ;  拒绝执行  级联删除: DROP VIEW IS_S1 CASCADE;

视 图 定义视图 查询视图 更新视图 视图的作用

查询视图  用户角度:查询视图与查询基本表相同。  RDBMS 实现视图查询的方法:  视图消解法( View Resolution ): 首先进行有效性检查,检查查询中涉及的表、视图 等是否存在。如果存在,则从数据字典中取出视图的 定义,把视图定义中的子查询和用户的查询结合起来, 转换成等价的对基本表的查询,然后再执行修正了的 查询,这一转换过程称为视图的消解。

47 查询视图(续) [ 例 9] 在信息系学生的视图中找出年龄小于 20 岁的 学生(查询学号,年龄)。 SELECT Sno , Sage FROM IS_Student WHERE Sage<20 ; IS_Student 视图的定义 ( 参见视图定义例 1) Create view IS_student As Select sno,sname,sage From student Where sdept=‘is’

48 查询视图(续) 视图消解转换后的查询语句为: SELECT Sno , Sage FROM Student WHERE Sdept= 'IS' AND Sage<20 ;

49 查询视图(续) [ 例 10] 查询选修了 1 号课程的信息系学生 SELECT IS_Student.Sno , Sname FROM IS_Student , SC WHERE IS_Student.Sno =SC.Sno AND SC.Cno= '1' ;

50 查询视图(续)  视图消解法的局限。  有些情况下,视图消解法不能生成正确查询。

51 查询视图(续) [ 例 11] 在 S_G 视图中查询平均成绩在 90 分以上的学生学号和平 均成绩 SELECT * FROM S_G WHERE Gavg>=90 ; S_G 视图的子查询定义: CREATE VIEW S_G (Sno , Gavg) AS SELECT Sno , AVG(Grade) FROM SC GROUP BY Sno ;

52 查询转换 错误: SELECT Sno , AVG(Grade) FROM SC WHERE AVG(Grade)>=90 /* 在 where 子句中不能用聚集函数 GROUP BY Sno ; 正确: SELECT Sno , AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)>=90 ;

视 图 定义视图 查询视图 更新视图 视图的作用

54 更新视图(续) [ 例 12] 将信息系学生视图 IS_Student 中学号 的学 生姓名改为 “ 刘辰 ” 。 UPDATE IS_Student SET Sname= ' 刘辰 ' WHERE Sno= ' ' ; 转换后的语句: UPDATE Student SET Sname= ' 刘辰 ' WHERE Sno= ' ' AND Sdept= 'IS' ;

55 更新视图(续) [ 例 13] 向信息系学生视图 IS_S 中插入一个新的学生记录: ,赵新, 20 岁 INSERT INTO IS_Student VALUES(‘95029’ , ‘ 赵新 ’ , 20) ; 转换为对基本表的更新: INSERT INTO Student(Sno , Sname , Sage , Sdept) VALUES(‘ ' , ' 赵新 ' , 20 , 'IS' ) ;

56 更新视图(续) [ 例 14] 删除信息系学生视图 IS_Student 中学号为 的记录 DELETE FROM IS_Student WHERE Sno= ' ' ; 转换为对基本表的更新: DELETE FROM Student WHERE Sno= ' ' AND Sdept= 'IS' ;

57 更新视图(续)  更新视图的限制:一些视图是不可更新的,因为对这些视 图的更新不能唯一地有意义地转换成对相应基本表的更新。 例:视图 S_G 为不可更新视图。 UPDATE S_G SET Gavg=90 WHERE Sno= ‘ ’ ; 这个对视图的更新无法转换成对基本表 SC 的更新

58 更新视图(续)  允许对行列子集视图进行更新。 “ 行列子集视图 ” :若一个视图是从单个基本表导出 的,并且只是去掉了基本表的某些行和某些列, 但保留了主码,这类视图叫行列子集视图。  对其他类型视图的更新不同系统有不同限制。

视 图 定义视图 查询视图 更新视图 视图的作用

视图的作用  1. 视图能够简化用户的操作。  2. 视图使用户能以多种角度看待同一数据 。  3. 视图对重构数据库提供了一定程度的逻辑独立性 。  4. 视图能够对机密数据提供安全保护。  5. 适当的利用视图可以更清晰的表达查询。

61 下课了。。。 休息一会儿。。。