


单击此处编辑母版标题样式,.,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,.,*,第,4,章,SQL,语言,4.1 SQL,语言概述,4.2,数据定义功能与约束,4.3,数据操纵功能,4.4,数据查询功能与视图,1,.,SQL,的功能与命令简介,SQL,功能,命令动词,数据定义,CREATE,DROP,ALTER,数据查询,SELECT,数据操纵,INSERT,UPDATE,DELETE,数据控制,GRANT,REVOKE,2,.,插入数据,1,INSERT INTO ,(,),VALUES,(值列表),插入时检查数据完整性,中的列名必须是表定义中有的列名,值列表中的值可以是常量也可以是空值,各值之间用逗号分隔,3,.,插入数据,2,值列表中的值与列名表中的列按位置顺序对应,它们的数据类型必须一致,如果,后边没有指明列名,则新插入记录的值的顺序必须与表中列的定义顺序一致,且每一个列均有值(可以为空),4,.,CREATE TABLE,演员,(,姓名,char(20),工号,char(10),性别,char(2),PRIMARY KEY(,工号,),),5,.,CREATE TABLE,出演,(,工号,char(10),片名,char(60),年代,datetime,片酬,int,PRIMARY KEY(,工号,片名,年代,),),6,.,INSERT,的使用,1,INSERT INTO,演员,(,工号,姓名,性别,),VALUE,S,(,A031,林青霞,女,),7,.,INSERT,的使用,2,在出演表中添加工号,A031,的演员在,1998-1-1,出演电影滚滚红尘的记录,片酬暂缺,INSERT,出演,(,工号,年代,片名,),VALUES(A031,1998-1-1,滚滚红尘,),在创建表时需要声明片酬允许为空!,8,.,INSERT,的使用,3,在出演表中添加工号,A031,的演员在,1998-1-1,出演电影滚滚红尘的记录,片酬暂缺,INSERT,出演,VALUES(A031,滚滚红尘,1998-1-1,NULL),9,.,插入子查询结果,1,对每一个系,求学生的平均年龄,并把结果存入数据库,建表如下,CREATE TABLE Dept_age,(Sdept CHAR(15)/*,系名*,/,Avg_age SMALLINT),;,/*,学生平均年龄*,/,10,.,插入子查询结果,2,INSERT,INTO Dept_age(Sdept,,,Avg_age),SELECT Sdept,,,AVG(Sage),FROM Student,GROUP BY Sdept,SELECT,子句目标列必须与,INTO,子句匹配,值的个数,值的类型,11,.,更新数据,UPDATE,SET ,n,WHERE,SET,子句指定要修改的列,表达式指定修改后的新值,WHERE,子句用于指定需要修改表中的哪些记录。
如果省略,WHERE,子句,则是无条件更新,表示要修改,SET,中指定的列的全部值,12,.,姓名,工号,性别,王菲,A010,女,宁静,A120,女,梁朝伟,A231,男,葛优,A751,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,13,.,UPDATE,的使用,1,将出演表中的片酬设为,50k,UPDATE,出演,SET,片酬,50000,14,.,有条件的更新,1,将,A120,出演红河谷的片酬设为,50k,15,.,姓名,工号,性别,王菲,A010,女,宁静,A120,女,梁朝伟,A231,男,葛优,A751,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,50000,16,.,有条件的更新,1,将,A120,出演红河谷的片酬设为,50k,UPDATE,出演,SET,片酬,50000,WHERE,工号,A120 AND,片名红河谷,17,.,有条件的更新,2,如果宁静出演电影的片酬记录为空,那么将该片酬设为,50k,18,.,姓名,工号,性别,王菲,A010,女,宁静,A120,女,梁朝伟,A231,男,葛优,A751,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,50000,19,.,有条件的更新,2,如果宁静出演电影的片酬记录为空,那么将该片酬设为,50k,UPDATE,出演,SET,片酬,=50000,FROM,演员,出演,WHERE,演员,.,姓名,=,宁静,AND,出演,.,工号,=,演员,.,工号,AND,片酬,IS NULL,20,.,有条件的更新,3,如果宁静出演电影的片酬记录为空,那么将该片酬设为,50k,UPDATE,出演,SET,片酬,=50000,WHERE,片酬,IS NULL AND,工号,IN,(SELECT,工号,FROM,演员,WHERE,姓名,=,宁静,),21,.,删除数据,DELETE FROM ,WHERE,说明了要删除哪个表中的数据,WHERE,子句说明要删除表中的哪些记录。
如果省略,WHERE,子句,则是无条件删除,表示要删除表中的全部记录22,.,DELETE,的使用,1,删除所有的出演记录,DELETE FROM,出演,置为空表,23,.,DELETE,的使用,2,删除,1998,年拍摄红河谷的所有出演记录,DELETE FROM,出演,WHERE,出演,.,片名,=,红河谷,AND,出演,.,年代,=1998,24,.,有条件的删除,删除冯小刚导演的电影的出演记录,25,.,姓名,工号,性别,王菲,A010,女,宁静,A120,女,梁朝伟,A231,男,葛优,A751,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,26,.,有条件的删除,删除冯小刚导演的电影的出演记录,DELETE FROM,出演,FROM,出演,电影,WHERE,导演,=,冯小刚,AND,出演,.,片名,=,电影,.,片名,AND,出演,.,年代,=,电影,.,年代,27,.,外码约束对数据操纵的影响,插入异常,更新异常,删除异常,28,.,CREATE TABLE,演员,(,姓名,char(20),工号,char(10),性别,char(2),PRIMARY KEY(,工号,),),29,.,CREATE TABLE,出演,(,工号,char(10),片名,char(60),年代,datetime,片酬,int NULL,PRIMARY KEY(,工号,片名,年代,),FOREIGN KEY (,工号,)REFERENCES,演员,(,工号,),FOREIGN KEY (,片名,年代,)REFERENCES,电影,(,片名,年代,),),30,.,插入异常的例子,在出演表中添加工号,A430,的演员在,1998-1-1,出演电影不见不散的记录,片酬暂缺,31,.,工号,姓名,性别,A010,王菲,女,A120,宁静,女,A231,梁朝伟,男,A751,葛优,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,A430,不见不散,1998,NULL,A430?,32,.,删除异常的例子,在演员表中删除工号,A751,的演员记录,33,.,工号,姓名,性别,A010,王菲,女,A120,宁静,女,A231,梁朝伟,男,A751,葛优,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,A751?,34,.,更新异常的例子,将演员表中的工号,A751,修改为,B751,35,.,工号,姓名,性别,A010,王菲,女,A120,宁静,女,A231,梁朝伟,男,A751,葛优,男,片名,导演,年代,重庆森林,王家卫,1994,红河谷,冯小宁,1998,不见不散,冯小刚,1998,花样年华,王家卫,2000,黑骏马,管虎,2000,工号,片名,年代,片酬,A120,红河谷,1998,NULL,A231,花样年华,2000,100k,A751,不见不散,1998,120k,演员,电影,出演,B751,A751?,36,.,。