1、关系数据库标准语言 SQL结构化查询语言: STRUCTURED QUERY LANGUAGE(SQL)4.1SQL 介绍-特点(1)SQL 是一种一体化语言(2)SQL 语言是一种高度非过程化的语言(3)SQL 语言非常简洁(4)SQL 语言可以直接以命令的方式使用,也可以嵌入到程序设计语言中以程序的方式使用SQL 的功能:数据的定义、数据的操纵、数据的查询、数据的控制。说明:VF 数据库不支持数据的控制功能。数据的定义功能:对表结构的操作(CREATE 创建 、DROP 删除 、ALTER 修改)数据的操纵功能:对表记录的操作(INSERT 插入、update 修改、DELETE 删除)数
2、据的查询:SELECT4.4 定义功能:CREATE、DROP 、ALTER4.4.1 表的定义 CREATE创建一个仓库管理数据库(仓库、职工、订购单、供应商)定义表的结构:字段名、类型、宽度、有效性规则和索引等等。语法格式:CREATE TABLE 表名(字段名 1 类型(宽度) PRIMARY KEY,字段名 2 类型(宽度),;字段名 3 类型(宽度) CHECK. ERROR. DEFAULT,;FOREIGN KEY 字段名 TAG 索引名 REFERENCES 表名,;FOREIGN KEY 字段名 TAG 索引名 REFERENCES 表名)说明:PRIMARY KEY 建立一
3、个主索引,CHECK.ERROR.DEFAULT 字段的有效性规则.FOREIGN KEY 外部关键字建立普通索引, REFERENCES 为表建立联系EG:仓库表建立create database 仓库管理modify databasecreate TABLE 仓库( 仓库号 C(4) PRIMARY KEY,;城市 C(10),面积 N(6,2)CHECK 面积=120 AND 面积=1000 AND 工资=8000 AND 资产=15504.2 查询功能 SELECT :SQL 语言的核心内容。查询的分类:简单查询、简单连接查询、嵌套查询、超连接查询。查询的基本格式:SELECT . F
4、ROM. WHERE 多个查询可以进行嵌套。4.2.1 简单查询:基于一个表的数据查询。语法格式: 查找的对象(字段名) ,字段名来自于那个表,条件来自于 那个表。SELECT 字段名 1,字段名 2,. FROM 表名 where 条件EG1:找出男职工的职工号和工资?select 职工号,工资 FROM 职工 WHERE 性别=“ 男“EG2:检索出女职工的全部信息?SELECT 职工号,仓库号,工资,性别,城市 FROM 职工 WHERE 性别=“ 女“SELECT * FROM 职工 WHERE 性别=“ 女“说明:通配符星号*:表示通配查询的所有字段.EG3:找出 E3 职工的所在地
5、是哪儿?SELECT 城市 AS 所在地 FROM 职工 WHERE 职工号 =“E3“SELECT 城市 所在地 FROM 职工 WHERE 职工号=“E3“说明: AS ( 也可以用空格表示):表示将字段作为新的字段输出EG4:检索出家在上海和遵义居住的男职工信息?SELECT * FROM 职工 where 性别=“ 男“ AND (城市=“上海“ OR 城市=“遵义“)EG5:检索男职工来自于那些城市?SELECT DISTINCT(城市) AS 城市 FROM 职工 WHERE 性别=“ 男“说明:DISTINCT 短语:去掉查询结果的重复值EG6:检索出男职工来自于几个城市?SEL
6、ECT COUNT(DISTINCT(城市) AS 城市数量 from 职工 WHERE 性别=“ 男“说明:COUNT( ) 函数表示计数统计。4.2.2 简单连接查询:是一种基于多个关系(表)的查询。语法格式:SELECT 字段 1,字段 2, FROM 表 1,表 2, WHERE 表之间的联系 AND 查询条件(用 AND/OR 连接多个条件)说明:表之间的联系是一个表的主关键字和另外一个表外部关键字表 1.主关键字=表 2.外部关键字查询条件:是对查询结果进行限制。EG1:检索出男职工的仓库的所在地?SELECT 所在地 FROM 仓库 ,职工 where 仓库.仓库号=职工.仓库号
7、 AND 性别=“男“EG2:检索出工资高于 1220 元的男职工的订购单信息?SELECT 订购单.* FROM 职工 ,订购单 WHERE 职工.职工号 =订购单.职工号;AND 工资1220 AND 性别=“男“EG:找出仓库的仓库号、所在地以及他们的职工?SELECT 仓库.仓库号,所在地,职工号 FROM 仓库,职工 WHERE 仓库.仓库号=职工.仓库号说明:查询的对象不唯一时,必须加表名限制。课堂练习:检索出补考学生的人数?SELECT count(DISTINCT(学号 ) AS 补考人数 FROM 成绩 WHERE 分数1230 AND 地址=“ 北京“SELECT 订购单号
8、 FROM 订购单 where 职工号 IN(SELECT 职工号 FROM 职工 WHERE 工资1230);AND 供应商号 IN(SELECT 供应商号 FROM 供应商 WHERE 地址=“北京“)4.2.4 几个特殊的运算符: (1) BETWEEN AND. 表示在两者之间(闭区间) )例题:检索出工资在 1220 到 1240 之间的职工信息?SELECT * from 职工 WHERE 工资=1220 AND 工资例题:检索出没有在北京居住的职工信息?SELECT * FROM 职工 WHERE 城市!=“北京“SELECT * FROM 职工 WHERE 城市=2课堂练习:找
9、出每个城市的男职工人数?SELECT 城市,COUNT(职工号) FROM 职工 WHERE 性别 =“男“ group BY 城市检索出面积大于 300 的每个仓库的职工人数?SELECT 职工.仓库号,COUNT(职工号) FROM 仓库,职工 WHERE 仓库.仓库号=职工.仓库号;AND 面积300 GROUP BY 职工.仓库号SELECT 仓库号,COUNT(职工号) FROM 职工 WHERE 仓库号 in(;SELECT 仓库号 FROM 仓库 WHERE 面积300) GROUP BY 仓库号检索出最少有两个订购单的职工的信息?SELECT 职工.* FROM 职工 ,订购单 WHERE 职工.职工号 =订购单.职工号;GROUP BY 订购单.职工号 HAVING COUNT(*)=2检索出每个仓库中工资多于 1220 元的职工人数?SELECT 仓库号,COUNT(职工号) from 职工 where 工资 1220 group by 仓库号