计算机二级SQL语言.ppt_第1页
计算机二级SQL语言.ppt_第2页
计算机二级SQL语言.ppt_第3页
计算机二级SQL语言.ppt_第4页
计算机二级SQL语言.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,SQL概述,SQL是结构化查询语言Structured Query Language的缩写。它包含数据查询、数据定义、数据操纵和数据控制功能。,VFP在SQL方面支持数据查询、数据定义、数据操纵功能。,2,SQL语言的特点,SQL是一种一体化的语言 SQL语言是一种高度非过程化的语言 SQL语言非常简洁 SQL一种语言两种使用方式:可以直接以命令方式交互,也可以程序方式使用。,3,SQL概述,SQL九大命令,4,SQL数据查询,SELECT ALL | DISTINCTTOP(表达式)PERCENT字段列表 FROM数据库! INNER|LEFT|OUTER|RIGHTOUTER|FULLOUTER JOIN 数据库! 表名 ON WHERE GROUP BY 分组依据 HAVING UNIONALL 查询命令 ORDER BY ,5,数据查询,6,数据查询,7,格式1:SELECT 字段1,字段2,字段n FROM 表名 格式2:SELECT 字段1,字段2,字段n FROM 表名 WHERE ,ALL | DISTINCT,DISTINCT短语的作用是去掉重复值,8,SELECT 工资 FROM 员工表 SELECT DISTINCT 工资 FROM 员工表 SELECT * FROM 员工表 SELECT * FROM 员工表; WHERE 性别=“男” AND 工资 4000,分号代表续行符。,*代表查询表中所有字段。,9,Select 员工号,姓名,部门名称; From 员工表,部门表; Where (工资3500) AND (员工表.部门号=部门表.部门号),连接查询是一种基于多个关系(表)的查询,所以进行 的查询操作至少有两个表且必须有连接条件。,查询出工资多于3500元的员工号、姓名和部门名称,10,嵌套查询要求结果出自一个关系(表),但关系的条件却 涉及多个关系。可用IN或NOT IN来判断在外层查询条件中是否 包含内层查询的结果。,查询员工表中工资大于3500元的部门表中的信息。,Select * From 员工表 Where 部门号 ; IN (Select 部门号 From 员工表 Where 工资3500),查询的结果为(”101”,”102”,”103”),11,Select * From 员工表; Where 工资 BETWEEN 2500 AND 3000,BETWEENAND:检索出某一区间范围的记录,包括两 端的边界值。,检索出工资在2500元到3000元范围的员工表信息。,Select * From 员工表; Where 工资= 2500 AND 工资=3000,12,LIKE:字符匹配运算符,在匹配查询中可使用通配符,通 配符”%”表示0个或多个字符,”_”它表示一个字符。,查询出订货商表中来自上海的订货商名称。,查询姓张的员工且名字为两个字的员工信息。,从订货商表中检索出订货商是公司性质的信息。,Select * From 员工表 Where 姓名 Like “张_”,Select 订货商名称 From 订货商表 Where 地址 Like “上海%”,Select * From 订货商表 Where 订货名称 Like “%公司”,13,!=:不等于运算符,相当于否定运算NOT。,查询职务号不为“101”的员工表信息。,Select * From 员工表 Where 职务号 !=“101”,14,排序是将数据从小到大,或从大到小进行排列存放,排序 的短语是ORDER BY,BY后面给排序的字段 。,按员工的工资降序检索出全部员工信息。,先按员工号降序排序,再按工资排序输出全部员工信息。,Select * From 员工表 Where Order By 工资,Select * From 员工表; Where Order By 员工号 DESC,工资,15,SQL不仅提供了一般的检索能力,而且还有计算方式的检索。如检索 员工的总人数、最高工资、最低工资、员工总工资、平均工资。,COUNT(字段名):用于统计个数,SUM(字段名):求和,AVG(字段名):求平均值,MAX(字段名):求最大值,MIN(字段名):求最小值,16,找出员工表中有多少个部门,Select Count (Distinct 部门号) From 员工表,Select Count (Distinct 部门号) 部门总数 From 员工表,为该字段定义的别名,17,求员工表中工资总数,Select SUM (工资) 总工资 From 员工表,求所有员工的平均工资,Select AVG (工资) 平均工资 From 员工表,检索部门号为“101”的员工的最高工资,Select MAX (工资) 最高工资 From 员工表; Where =部门号号“101”,检索部门号为“101”的员工的最低工资,Select MIN (工资) 最低工资 From员工表; Where =部门号号“101”,18,SQL中利用GROUP BY子句进行分组计算查询。格式如下: GROUP BY 字段1,字段2HAVING 查询条件,求每个部门的员工的平均工资,Select 部门号,AVG(工资) 平均工资 from 员工表; Group BY 部门号,19,求至少有两个男员工的部门中男员工的总工资,Select 部门号,Count(性别) 男生总数,SUM(工资 ) 总工资; From 员工表; Where 性别=“男”; Group BY 部门号 Having 男生总数2,HAVING必须与GROUP BY一起使用,不能单独使用,20,空值查询用函数IS NULL或IS NOT NULL,找出尚未确定部门的员工信息,Select * From 员工表 Where 部门号 IS NULL,Select * From 员工表 Where 部门号 IS NOT NULL,Select 姓名,职务名称 From 员工表,职务表; Where 员工表.职务号=职务表.职务号,21,涉及到多个表时,当访问多个表中同名的字段时,需要用“ 表名.属性名”来指定。例如:,SQL允许在From短语后为关系名定义别名,格式为: 关系名 别名,Select 姓名,职务名称 From 员工表 s,职务表 p; Where s.职务号=p.职务号,22,自连接定义:自连接可以将自身表的一个镜像当作另一个 表来对待,从而能够得到一些特殊的数据。自连接别名是必需的。,Select e.雇员姓名,“带领“,m.雇员姓名; From 雇员 e,雇员 m; Where e.雇员号=m.经理,根据雇员关系,查询出雇员姓名及其经理姓名,23,用的量词和谓词有:IN(NOT IN),ANY,ALL,SOME、 EXISTS、NOT EXISTS,其具体格式如下:,ANY|SOME|ALL(子查询),NOTEXISTS(子查询),ANY和SOME是同一词,在进行比较运算时只要子查询 中有一行能使结果为真,则结果为真,ALL要求子查询中所有行都能使结果为真,则结果为真,EXISTS是用来检查在子查询中是否有结果返回,24,查询出职工的工资大于或等于101部门中任何一名职工的工 资的部门号。,Select Distinct 部门号 From 员工表; Where 工资=ANY; (Select 工资 From 员工表 where 部门号=“101”),Select Distinct 部门号 From 员工表 Where 工资=; (Select MIN(工资) From 员工表 Where 部门号=“101”),25,超连接查询定义:首先保证一个表满足条件的元组都在结果表中,然后将满足连接条件的元组与另一个表的元组进行连接,不满连接条件的则将来自另一个表的属性值置为空值。,26,格式:Select 字段1,字段2, From 表名 INNER|LEFT|RIGHT|FULL JOIN 表名 ON 连接条件 Where ,INNER JOIN(内连接):等同于JOIN,只有满足条件的记录才出现在查询结果中。,LEFT JOIN(左连接):除了满足条件的记录才出现在查询结果中外,第一个表中不满足条件的记录也出现在查询结果中。,RIGHT JOIN(右连接):除了满足条件的记录才出现在查询结果中外,第二个表中不满足条件的记录也出现在查询结果中。,FULL JOIN(全连接):除了满足条件的记录才出现在查询结果中外,两个表中不满足条件的记录也出现在查询结果中。,27,格式:Select 字段1,字段2, From 表名 INNER|LEFT|RIGHT|FULL JOIN 表名 ON 连接条件 Where ,INNER JOIN(内连接):等同于JOIN,只有满足条件的记录才出现在查询结果中。,LEFT JOIN(左连接):除了满足条件的记录才出现在查询结果中外,第一个表中不满足条件的记录也出现在查询结果中。,RIGHT JOIN(右连接):除了满足条件的记录才出现在查询结果中外,第二个表中不满足条件的记录也出现在查询结果中。,FULL JOIN(全连接):除了满足条件的记录才出现在查询结果中外,两个表中不满足条件的记录也出现在查询结果中。,28,员工表和部门表连接。,员工表和部门表右连接。,员工表和部门表左连接。,员工表和部门表全连接。,Select 员工表.部门号,姓名,工资 From 员工表 ; INNER JOIN 部门表 ON 员工表.部门号=部门表.部门号,Select 员工表.部门号,姓名,工资 From 员工表 ; RIGHT JOIN 部门表 ON 员工表.部门号=部门表.部门号,Select 员工表.部门号,姓名,工资 From 员工表 ; LEFT JOIN 部门表 ON 员工表.部门号=部门表.部门号,Select 员工表.部门号,姓名,工资 From 员工表 ; FULL JOIN 部门表 ON 员工表.部门号=部门表.部门号,29,JOIN连接多个表时,JOIN的顺序和ON的顺序正好相反,Select 仓库.仓库号,供应商名; From 供应商 JOIN 订购单 JOIN 职工; ON 订购单.职工号=职工.部门号; ON 供应商.供应商号=订购单.供应商号,30,31,显示工资最高的30%员工的信息。,显示年龄最大的3位员工的信息。,将查询到的员工信息放在数组A中。,Select * TOP 30 PERCENT From 员工表 ; ORDER BY 工资 DESC,Select * TOP 3 From 员工表 ; ORDER BY 年龄,Select * From 员工表 INTO ARRAY A,将查询到的员工信息放在临时.dbf文件A中。,Select * From 员工表 INTO CURSOR A,将查询到的员工信息放在表A中。,Select * From 员工表 INTO DBF A,32,数据操作功能,SQL的数据操作功能是指对数据库中的插入、更新和删除。,INSERT,DELETE,UPDATE,33,INSERT INTO 员工表(员工号,姓名,年龄); VALUE(”120”,”xiao”,25),格式1: INSERT INTO (字段1),字段2,); VALUE(表达式1,表达式2,),向员工表中插入一条新记录,员工号、姓名和年龄分别 是”120”,”xiao”,25.,34,INSERT INTO S FROM ARRAY ARR1,格式2: INSERT INTO FROM ARRAY,从数组ARR1中插入一条记录到表S;,35,UPDATE 员工表 SET 工资=工资*(1+0.1),UPDATE ; SET =, =,将所有员工的工资提高10%。,36,DELETE FROM 员工表 WHERE 员工号=“101”,DELETE FROM ; Where ,删除员工表中员工号为”101” 元组。,37,数据定义功能,38,格式: CREATE TABLE NAME 长表名 FREE (宽度) ,(宽度), ,FROM ARRAY ),创建表的名字,可包括路径,指定一个长表名,建立一个自由表,定义字段的数据类型,用字母表示,见P110表5-4,39,列级完整性包括: NULL和NOT NULL:NULL允许字段的值为空值 CHECK ERROR 错误提示 UNIQUE:建立候选索引 DEFAULT:指定特定字段的默认值,40,格式: DROP TABLE ,41,在已存在的表中添加新字段修改已有字段,ALTER TABLE ADD|ALTER 字段1 (宽度,小数位数) NULL|NOT NULLCHECK 逻辑表达式ERROR 字符文本信息 DEFAULT默认值PRIMARY KEY|UNIQUE REFERENCESTAG,42,定义、修改和删除表中已有字段的约束和默认值定义,ALTER TABLE ALTER|COLUMN 字段2 NULL|NOT NULL SET DEFAULT默认值 SET CHECK 逻辑表达式 ERROR 字符文本信息 DROP DE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论