sql (structured query language)

41
SQL (Structured Query Language) Hyman Zhang 2009-03-01

Upload: umay

Post on 19-Jan-2016

48 views

Category:

Documents


8 download

DESCRIPTION

SQL (Structured Query Language). Hyman Zhang 2009-03-01. SQL Query (前提). 假设存在以下三张表. Student. Course. SC. SQL Query. 单表查询 多表查询 案例. 单表查询 — 查询指定列. 查询全体学生的学号,姓名 查询全体学生的姓名和出生年份. 单表查询 列别名. 查询全体学生的姓名( Name )和出生年份( Birthday ). 单表查询 所有列. 查询 student 表的所有内容 这两个语句哪一个更好?. 查询选修了课程的学生编号. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL (Structured Query Language)

SQL (Structured Query Language)

Hyman Zhang 2009-03-01

Page 2: SQL (Structured Query Language)

SQL Query (前提)假设存在以下三张表

Page 3: SQL (Structured Query Language)

StudentSno Sname Ssex Sage Sdept

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

95004 张立 男 19 IS

Page 4: SQL (Structured Query Language)

CourseCno Cname Cpno Ccredit

1 数据库 5 4

2 数学 2

3 信息系统 1 4

4 操作系统 6 3

5 数据结构 7 4

6 数据处理 2

7 Java 语言 6 4

Page 5: SQL (Structured Query Language)

SCSno Cno Grade

95001 1 92

95001 2 85

95001 3 88

95002 2 90

95002 3 80

Page 6: SQL (Structured Query Language)

SQL Query

单表查询 多表查询 案例

Page 7: SQL (Structured Query Language)

单表查询—查询指定列 查询全体学生的学号,姓名

查询全体学生的姓名和出生年份

Page 8: SQL (Structured Query Language)

单表查询 列别名 查询全体学生的姓名( Name )和出生年

份( Birthday )

Page 9: SQL (Structured Query Language)

单表查询 所有列 查询 student 表的所有内容

这两个语句哪一个更好?

Page 10: SQL (Structured Query Language)

查询选修了课程的学生编号

如何去掉重复结果?

Page 11: SQL (Structured Query Language)

查询选修了课程的学生编号

Page 12: SQL (Structured Query Language)

查询所有姓名,性别和年龄姓名和性别不可以重复

Page 13: SQL (Structured Query Language)

Where 条件过滤查询条件比较 =,>,<,>=,<=,!=

确定范围 Bwteen and, not between and

确定集合 IN, not IN

是否为 NULL Is null, is not null

多重条件 And or

判断是否存在 Exists, not exists

Page 14: SQL (Structured Query Language)

Where

查询计算机系( CS )所有学生的学号,姓名

Page 15: SQL (Structured Query Language)

Where

查询年龄 20 岁以下的学生

什么时候用“’” Date , Datetime 类型??

Page 16: SQL (Structured Query Language)

Where Date Datetime

假设在学生表中有个字段: Scome Datetime 类型。记录入学时间。

如果需要查询 2009-03-01 入学学生的学号和姓名。

Page 17: SQL (Structured Query Language)

还有没有问题???

Page 18: SQL (Structured Query Language)

哪个更好?

Page 19: SQL (Structured Query Language)

Where

查询存在成绩不及格的学生(假设 60 分为及格分数线)

查询符合所有成绩不及格条件的学生???

Page 20: SQL (Structured Query Language)

Where

查询年龄在 20~23 之间的学生编号,学生姓名

哪个好?

Page 21: SQL (Structured Query Language)

Where

查询信息系 (IS) ,数学系 (MA) ,计算机科学系 (CS) 学生的学生编号和姓名

哪个好?

Page 22: SQL (Structured Query Language)

查询信息系 (IS) ,数学系 (MA) ,计算机科学系 (CS) 且小于 20 岁的学生编号和姓名

Page 23: SQL (Structured Query Language)

Where 模糊查询 like

通配符 说明

% 代表任意长度(长度可以为 0 )的字符串。例如 a%b 表示以 a开头,以 b 结尾的任意长度的字符串。 acb,ab,adddb

_ 代表任意单个字符例如 a_b 代表以 a 开头,以 b 结尾的长度为 3 的任意字符。 acb,abb

Page 24: SQL (Structured Query Language)

Where 模糊查询 like

如果查询条件中没有包含通配符, like 可以用 = 代替

Page 25: SQL (Structured Query Language)

Where Like Escape

如果 Sno 存在这样的值“ 99_001” ,“ 99-002”

查询 Sno 以“ 99_” 开头的学生的编号

Page 26: SQL (Structured Query Language)

多表查询 内连接 查询所有学生编号,姓名,所选课程及分数。

xx

Page 27: SQL (Structured Query Language)

查询有课程成绩超过 80 的学生编号和姓名。

Page 28: SQL (Structured Query Language)

多表查询 – 外连接 查询学生姓名,所选课程及分数,结果集中

需要包含所有学生。

Page 29: SQL (Structured Query Language)

多表查询 – 笛卡尔 查询所有学生和所有课程的集合

Page 30: SQL (Structured Query Language)

查询所有学生和课程的集合,如果有成绩的列出成绩

Page 31: SQL (Structured Query Language)

查询所有课程的前置课程(课程名称,前置课程名称)

Page 32: SQL (Structured Query Language)

排序 按学生年龄升序列出所有学生姓名和年龄

Page 33: SQL (Structured Query Language)

排序 按院系降序,年龄升序列出所有学生院系,

姓名和年龄。

Page 34: SQL (Structured Query Language)

集合函数

Page 35: SQL (Structured Query Language)

分组

Page 36: SQL (Structured Query Language)

分组条件过滤

Page 37: SQL (Structured Query Language)

子查询

Page 38: SQL (Structured Query Language)

Example-1

求所有订单的未收货数量(订货单号,未收数量)

aaa

订货单号 订货数量NO001 100

NO002 200

订货单号 收货日期 收货数量NO001 2009-09-09 20

NO001 2009-10-11 40

NO001 2009-11-11 30

Page 39: SQL (Structured Query Language)

Example

交易币,本位币的问题

Page 40: SQL (Structured Query Language)

Example

Head 取 Detail 状态的问题(不一致状态)

Page 41: SQL (Structured Query Language)

一主多从表的查询