电子斜技大学 软件技术基础 4.4.2结构化查询语言-SQL(二) 主讲教师:刘民岷 航空航天学院 软件技术基础课程组
软件技术基础 主讲教师:刘民岷 航空航天学院 软件技术基础课程组
4、数据库的基本查询 Select SELECT命令的构成: 查找什么+从何处查找+查找条件 ● SELECT命令的一般格式 SELECT,,, /确定查询目标 FROM,,,/查询范围 VHERE /查询条件 GROUP BY /分组依据 HAVING /分组提取条件 ORDER BY; /查询结果的排序方 式 电子科技大学刘民岷 SQL 2
电子科技大学 刘民岷 SQL 2 ⚫ SELECT命令的构成: 查找什么+从何处查找+查找条件 ⚫ SELECT命令的一般格式 SELECT ,,…, //确定查询目标 FROM ,,…,//查询范围 WHERE //查询条件 GROUP BY //分组依据 HAVING //分组提取条件 ORDER BY ; //查询结果的排序方 式
4、数据库的基本查询一一 Select(续) SQL数据类型: 类型 定义 说明 定点整数 数值型 INT,SMALLINT NUMERIC,DECIMAL 定点小数 FLOAT,REAL等 浮点数 CHAR (n) 定长字符串,n<255 字符串型 VARCHAR (n) 不定长字符串,长度不超过n个字符 日期、时间型 DATE 日期 TIME 时间型 TIMESTAMP 日期时间型 二进制位串 BIT (n) 定长二进制位串 BITVAR (n) 变长二进制位串 电子科技大学刘民岷 SQL 3
电子科技大学 刘民岷 SQL 3 ⚫ SQL数据类型: 类型 定义 说明 数值型 INT,SMALLINT 定点整数 NUMERIC,DECIMAL 定点小数 FLOAT,REAL等 浮点数 字符串型 CHAR(n) 定长字符串,n<255 VARCHAR(n) 不定长字符串, 长度不超过n个字符 日期、时间型 DATE 日期 TIME 时间型 TIMESTAMP 日期时间型 二进制位串 BIT(n) 定长二进制位串 BITVAR(n) 变长二进制位串
4、数据库的基本查询一一 Select(续) SQL表达式: ●值表达式 √数值表达式 √字符串表达式 √日期表达式 。逻辑表达式 √逻辑运算:NOT、AND、OR √比较谓词:(=、、◇、=) √范围谓词(N、LIKE、IS) √存在谓词(EXIST) 电子科技大学刘民岷 SQL 4
电子科技大学 刘民岷 SQL 4 ⚫ SQL表达式: ⚫ 值表达式 ✓ 数值表达式 ✓ 字符串表达式 ✓ 日期表达式 ⚫ 逻辑表达式 ✓ 逻辑运算:NOT、AND、OR ✓ 比较谓词:(=、、<>、=) ✓ 范围谓词( IN 、LIKE、IS) ✓ 存在谓词(EXIST)
4、数据库的基本查询 Select(续) SQL内置函数: 统计函数 √COUNT、SUM、AVG、MAX和MN,以一个表为范围进 行统计 ●字串处理函数 √子串提取函数(Substring) √大小写转换函数(Upper,Lower) √子串位置函数(Position)和串长度函数 ●f 时间日期处理函数 √Current date(返回当前日期) √Current time(返回当前时间) √Current timestamp(返回当前日期时间)子串提取函数 电子科技大学刘民岷 SQL 5
电子科技大学 刘民岷 SQL 5 ⚫ SQL内置函数: ⚫ 统计函数 ✓ COUNT、SUM、AVG、MAX和MIN,以一个表为范围进 行统计 ⚫ 字串处理函数 ✓ 子串提取函数(Substring) ✓ 大小写转换函数(Upper,Lower) ✓ 子串位置函数(Position)和串长度函数 ⚫ 时间日期处理函数 ✓ Current_date(返回当前日期) ✓ Current_time(返回当前时间) ✓ Current_timestamp(返回当前日期时间)子串提取函数
5、Select例题分析 学生选课数据库: 学生表S 课程表C 学生修课表SC SNO SNAME AGE SEX CNO CNAME SNO CNO G 9411101 张山 19 男 J03 数据库 9411101 J03 87 9411102 李明 20 男 L01 离散数学 9311101 J01 78 9411103 王平 19 女 M02 数据结构 9311102 J02 90 F01 日语 9811102 J04 88 J04 操作系统 9411102 J03 82 9811103 J01 70 9411103 J02 75 三个示例表 学生信息表”S,其中SNO:学号,SNAME:姓名,AGE: 年龄,SEX:性别 “学生选课表”C,CNO:课程编号,CNAME:课程名 “学生成绩表”G,其中:SNO:学号,CNO:课程编号, G:成绩。 电子科技大学刘民岷 SQL 6
电子科技大学 刘民岷 SQL 6 ⚫ 学生选课数据库: ➢ “学生信息表”S,其中SNO:学号,SNAME:姓名,AGE: 年龄,SEX:性别 ➢ “学生选课表”C,CNO:课程编号,CNAME:课程名 ➢ “学生成绩表”G,其中:SNO:学号,CNO:课程编号, G:成绩
5、Select例题分析(续) 例1:查看所有学生信息: SNO SNAME AGE SEX SELECT 9411101 张山 19 9411102 李明 20 男男 FROM S 9411103 王平 19 结果如下: SNO SNAME AGE SEX 9411101 张山 19 男 9411102 李明 20 男 9411103 王平 19 女 电子科技大学刘民岷 SQL 7
电子科技大学 刘民岷 SQL 7 ⚫ 例1:查看所有学生信息: ➢ SELECT * FROM S 结果如下: SNO SNAME AGE SEX 9411101 张山 19 男 9411102 李明 20 男 9411103 王平 19 女 SNO SNAME AGE SEX 9411101 张山 19 男 9411102 李明 20 男 9411103 王平 19 女
5、Select例题分析(续) 例2:查询学生修课表中成绩大于80分的学生: SELECT SNO CNO G 9411101 J03 87 FROM SC 9311101 J01 78 WHERE G>80 9311102 J02 90 9811102 J04 88 9411102 J03 结果如下: 9811103 J01 70 9411103 J02 75 SNO CNO G 9411101 J03 87 9811102 J04 88 9311102 J02 9411102 J03 82 电子科技大学刘民岷 SQL 8
电子科技大学 刘民岷 SQL 8 ⚫ 例2:查询学生修课表中成绩大于80分的学生: ➢ SELECT * FROM SC WHERE G>80 结果如下: SNO CNO G 9411101 J03 87 9811102 J04 88 9311102 J02 90 9411102 J03 82 SNO CNO G 9411101 J03 87 9311101 J01 78 9311102 J02 90 9811102 J04 88 9411102 J03 82 9811103 J01 70 9411103 J02 75
5、Select例题分析(续) 例3:找出成绩大于80分的学生的姓名: SELECT SNAME FROM S WHERE SNO IN (SELECT SNO FROM SC WHERE G>80) SNO SNAME AGE SEX SELECT SNAME FROMS,SC 9411101 张山 19 男 WHERE S.SNO-SC.SNO SNO CNO G 9411101 J03 87 AND SC.G>80 结果如下: SNAME 张山 李明 电子科技大学刘民岷 SQL 9
电子科技大学 刘民岷 SQL 9 ⚫ 例3:找出成绩大于80分的学生的姓名: ➢ SELECT SNAME FROM S WHERE SNO IN(SELECT SNO FROM SC WHERE G>80) ➢ SELECT SNAME FROM S,SC WHERE S.SNO=SC.SNO AND SC.G > 80 结果如下: SNAME 张山 李明 SNO SNAME AGE SEX 9411101 张山 19 男 SNO CNO G 9411101 J03 87