SlideShare a Scribd company logo
索引和视图
数据更新 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
插入数据 DEPT  DEPTNO DNAME  LOC  ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON DEPT  DEPTNO DNAME  LOC  ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 新元组 50 DEVELOPMENT DETROIT “… 在 DEPT 表中添加新 的行…” 50 DEVELOPMENT DETROIT
使用  INSERT  语句 INSERT INTO 表名  [( 属性列名  [ ,  属性列名 ... ])] VALUES ( 值 1  [ ,  值 2... ]) ; INSERT INTO dept (deptno, dname, loc) VALUES (50, 'DEVELOPMENT', 'DETROIT'); INSERT INTO dept (deptno, dname ) VALUES (60, 'MIS'); INSERT INTO dept VALUES (70, 'FINANCE', NULL);
插入数据 INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7196, 'GREEN', 'SALESMAN', 7782, DATE(), 2000, NULL, 10); INSERT INTO managers(id, name, salary, hiredate) SELECT empno, ename, sal, hiredate FROM  emp WHERE job = 'MANAGER';
练习 : ,[object Object],① Insert into shippers  values(3,’zjicm university’,’2696450’) ② Insert into shippers (companyname,phone) values(’zjicm university’,’2696450’) Shippers 表中有一个 identity 属性列,所以命令①不能执行。
更新数据 EMP EMP EMPNO  ENAME  JOB  ...  DEPTNO  7839 KING PRESIDENT   10 7698 BLAKE MANAGER   30 7782 CLARK MANAGER   10 7566 JONES MANAGER   20 ... EMPNO  ENAME  JOB  ...  DEPTNO  7839 KING PRESIDENT   10 7698 BLAKE MANAGER   30 7782 CLARK MANAGER   10 7566 JONES MANAGER   20 ... “… 在 EMP 表中 更新一行…” 20
使用  UPDATE  语句 UPDATE 表名 SET 属性列 1 =  值 1 [,  属性列 2   =  值 2] [WHERE  条件表达式 ]; UPDATE  emp SET  deptno = 20 WHERE  empno = 7782; UPDATE  employee SET  deptno = 20;
加入子查询的数据更新 UPDATE  emp SET  (job, deptno) =    (SELECT job, deptno FROM  emp WHERE  empno = 7499) WHERE  empno = 7698; UPDATE employee SET deptno =  (SELECT deptno FROM emp  WHERE empno = 7788) WHERE job  =  (SELECT job FROM emp WHERE empno = 7788);
练习 : ,[object Object],[object Object],update products  set unitprice=unitprice+5 update products  set unitprice=unitprice+50 where categoryid=2
删除数据  DEPT  DEPTNO DNAME  LOC  ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ... “… delete a row  from DEPT table…” DEPT  DEPTNO DNAME  LOC  ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...
使用  DELETE  语句 DELETE [FROM]   表名 [WHERE   条件表达式 ]; DELETE FROM department WHERE  dname = 'DEVELOPMENT';  DELETE FROM department;
加入子查询的数据删除 DELETE FROM employee WHERE deptno =    (SELECT  deptno   FROM  dept   WHERE  dname ='SALES'); 注 : 更新和删除数据应保持数据的完整性。
练习 : ,[object Object],Delete from orders  Where customerid=‘VINET’
视图 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
视图的操作 ,[object Object],[object Object],[object Object],[object Object]
定义视图 CREATE VIEW  视图名   [( 列名  [, 列名  ]...)] [WITH ENCRYPTION] AS  子查询 [WITH CHECK OPTION [CONSTRAINT  约束 ]] CREATE VIEW  empvu10 AS SELECT empno, ename, job FROM emp WHERE deptno = 10; CREATE VIEW  salvu30 AS SELECT empno EMPLOYEE_NUMBER, ename NAME, sal SALARY FROM emp WHERE deptno = 30;
例 : EMPLOYEE_NUMBER NAME  SALARY --------------- ---------- --------- 7698 BLAKE  2850 7654 MARTIN  1250 7499 ALLEN  1600 7844 TURNER  1500 7900 JAMES  950 7521 WARD  1250 SELECT * FROM salvu30;
定义视图 ,[object Object],[object Object]
视图的分类 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
视图的分类 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
视图的分类 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
视图的分类 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
视图的作用 ,[object Object],[object Object],[object Object],[object Object]
查询视图 ,[object Object],[object Object]
错误的消解 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
删除视图 (1) ,[object Object],[object Object],[object Object],[object Object]
删除视图 (2) ,[object Object],[object Object],[object Object],[object Object],[object Object]
更新视图 (1) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
更新转换示例 DELETE FROM STUDENT  WHERE sno=‘08012’  AND sdept=‘IS’ DELETE FROM IS_STUDENT  WHERE sno=‘08012’ INSERT INTO student (sno,sname,sage,sdept) VALUES(‘08002’,’ 李林’, 18,’IS’) INSERT INTO IS_STUDENT VALUES(‘08002’,’ 李林’, 18) UPDATE student  SET sname=‘ 张三’  WHERE sno=‘08012’  AND sdept=‘IS’ UPDATE IS_STUDENT  SET sname=‘ 张三’  WHERE sno=‘08012’ CREATE VIEW  IS_STUDENT AS SELECT sno,sname,sage FROM student WHERE sdept=‘IS’ WITH CHECK OPTION  转换成对基表的操作 对视图的更新操作 有视图 IS_STUDENT
比较两组语句的执行情况 : CREATE VIEW  productview  AS  SELECT  productid,productname  FROM  products where categoryid=‘1’ WITH CHECK OPTION  INSERT INTO  productview(productname) values(‘coffee’) CREATE VIEW  productview  AS  SELECT  productid,productname  FROM  products where categoryid=‘1’ INSERT INTO  productview(productname) values(‘coffee’)
更新条件 ,[object Object],[object Object]
视图的用途 ,[object Object],[object Object],[object Object],[object Object],[object Object]
视图的用途 ,[object Object],[object Object],[object Object],[object Object]
重构中利用视图 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

Viewers also liked

Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
jorge navas
 
XML w SQL Server w praktyce
XML w SQL Server w praktyceXML w SQL Server w praktyce
XML w SQL Server w praktyce
Bartosz Ratajczyk
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务 hanmo1988
 
A beginners guide
A beginners guideA beginners guide
A beginners guide
ASAFI
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
Bartosz Ratajczyk
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理hanmo1988
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
jorge navas
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论
hanmo1988
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
Bartosz Ratajczyk
 

Viewers also liked (10)

Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
 
XML w SQL Server w praktyce
XML w SQL Server w praktyceXML w SQL Server w praktyce
XML w SQL Server w praktyce
 
第10章 (续)事务
第10章 (续)事务 第10章 (续)事务
第10章 (续)事务
 
第11章
第11章 第11章
第11章
 
A beginners guide
A beginners guideA beginners guide
A beginners guide
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
第2章 关系数据库基本原理
第2章  关系数据库基本原理第2章  关系数据库基本原理
第2章 关系数据库基本原理
 
Resiliency in the cloud myths versus facts
Resiliency in the cloud myths versus factsResiliency in the cloud myths versus facts
Resiliency in the cloud myths versus facts
 
第1章 数据库系统概论
第1章   数据库系统概论第1章   数据库系统概论
第1章 数据库系统概论
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 

第7章 索引和视图

  • 2.
  • 3. 插入数据 DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 新元组 50 DEVELOPMENT DETROIT “… 在 DEPT 表中添加新 的行…” 50 DEVELOPMENT DETROIT
  • 4. 使用 INSERT 语句 INSERT INTO 表名 [( 属性列名 [ , 属性列名 ... ])] VALUES ( 值 1 [ , 值 2... ]) ; INSERT INTO dept (deptno, dname, loc) VALUES (50, 'DEVELOPMENT', 'DETROIT'); INSERT INTO dept (deptno, dname ) VALUES (60, 'MIS'); INSERT INTO dept VALUES (70, 'FINANCE', NULL);
  • 5. 插入数据 INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (7196, 'GREEN', 'SALESMAN', 7782, DATE(), 2000, NULL, 10); INSERT INTO managers(id, name, salary, hiredate) SELECT empno, ename, sal, hiredate FROM emp WHERE job = 'MANAGER';
  • 6.
  • 7. 更新数据 EMP EMP EMPNO ENAME JOB ... DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ... EMPNO ENAME JOB ... DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ... “… 在 EMP 表中 更新一行…” 20
  • 8. 使用 UPDATE 语句 UPDATE 表名 SET 属性列 1 = 值 1 [, 属性列 2 = 值 2] [WHERE 条件表达式 ]; UPDATE emp SET deptno = 20 WHERE empno = 7782; UPDATE employee SET deptno = 20;
  • 9. 加入子查询的数据更新 UPDATE emp SET (job, deptno) = (SELECT job, deptno FROM emp WHERE empno = 7499) WHERE empno = 7698; UPDATE employee SET deptno = (SELECT deptno FROM emp WHERE empno = 7788) WHERE job = (SELECT job FROM emp WHERE empno = 7788);
  • 10.
  • 11. 删除数据 DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ... “… delete a row from DEPT table…” DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...
  • 12. 使用 DELETE 语句 DELETE [FROM] 表名 [WHERE 条件表达式 ]; DELETE FROM department WHERE dname = 'DEVELOPMENT'; DELETE FROM department;
  • 13. 加入子查询的数据删除 DELETE FROM employee WHERE deptno = (SELECT deptno FROM dept WHERE dname ='SALES'); 注 : 更新和删除数据应保持数据的完整性。
  • 14.
  • 15.
  • 16.
  • 17. 定义视图 CREATE VIEW 视图名 [( 列名 [, 列名 ]...)] [WITH ENCRYPTION] AS 子查询 [WITH CHECK OPTION [CONSTRAINT 约束 ]] CREATE VIEW empvu10 AS SELECT empno, ename, job FROM emp WHERE deptno = 10; CREATE VIEW salvu30 AS SELECT empno EMPLOYEE_NUMBER, ename NAME, sal SALARY FROM emp WHERE deptno = 30;
  • 18. 例 : EMPLOYEE_NUMBER NAME SALARY --------------- ---------- --------- 7698 BLAKE 2850 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 7521 WARD 1250 SELECT * FROM salvu30;
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. 更新转换示例 DELETE FROM STUDENT WHERE sno=‘08012’ AND sdept=‘IS’ DELETE FROM IS_STUDENT WHERE sno=‘08012’ INSERT INTO student (sno,sname,sage,sdept) VALUES(‘08002’,’ 李林’, 18,’IS’) INSERT INTO IS_STUDENT VALUES(‘08002’,’ 李林’, 18) UPDATE student SET sname=‘ 张三’ WHERE sno=‘08012’ AND sdept=‘IS’ UPDATE IS_STUDENT SET sname=‘ 张三’ WHERE sno=‘08012’ CREATE VIEW IS_STUDENT AS SELECT sno,sname,sage FROM student WHERE sdept=‘IS’ WITH CHECK OPTION 转换成对基表的操作 对视图的更新操作 有视图 IS_STUDENT
  • 31. 比较两组语句的执行情况 : CREATE VIEW productview AS SELECT productid,productname FROM products where categoryid=‘1’ WITH CHECK OPTION INSERT INTO productview(productname) values(‘coffee’) CREATE VIEW productview AS SELECT productid,productname FROM products where categoryid=‘1’ INSERT INTO productview(productname) values(‘coffee’)
  • 32.
  • 33.
  • 34.
  • 35.