sql (structured query language)

Post on 19-Jan-2016

48 Views

Category:

Documents

8 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

SQL (Structured Query Language)

Hyman Zhang 2009-03-01

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

StudentSno Sname Ssex Sage Sdept

95001 李勇 男 20 CS

95002 刘晨 女 19 IS

95003 王敏 女 18 MA

95004 张立 男 19 IS

CourseCno Cname Cpno Ccredit

1 数据库 5 4

2 数学 2

3 信息系统 1 4

4 操作系统 6 3

5 数据结构 7 4

6 数据处理 2

7 Java 语言 6 4

SCSno Cno Grade

95001 1 92

95001 2 85

95001 3 88

95002 2 90

95002 3 80

SQL Query

单表查询 多表查询 案例

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

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

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

份( Birthday )

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

这两个语句哪一个更好?

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

如何去掉重复结果?

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

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

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

确定范围 Bwteen and, not between and

确定集合 IN, not IN

是否为 NULL Is null, is not null

多重条件 And or

判断是否存在 Exists, not exists

Where

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

Where

查询年龄 20 岁以下的学生

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

Where Date Datetime

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

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

还有没有问题???

哪个更好?

Where

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

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

Where

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

哪个好?

Where

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

哪个好?

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

Where 模糊查询 like

通配符 说明

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

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

Where 模糊查询 like

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

Where Like Escape

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

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

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

xx

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

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

需要包含所有学生。

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

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

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

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

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

姓名和年龄。

集合函数

分组

分组条件过滤

子查询

Example-1

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

aaa

订货单号 订货数量NO001 100

NO002 200

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

NO001 2009-10-11 40

NO001 2009-11-11 30

Example

交易币,本位币的问题

Example

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

一主多从表的查询

top related