好文档 - 专业文书写作范文服务资料分享网站

mysql笔记

天下 分享 时间: 加入收藏 我要投稿 点赞

Limit 在语句的最后, 起到限制条目的作用

Limit [offset,] N Offset: 偏移量 N: 取出条目

Offset,如果不写,则相当于 limit 0,N

思考: 取出每个栏目下的最贵的商品??? 20分钟,1个select语句实现, 烤肉一顿!

良好的理解模型

Where 表达式 ,把表达式放在行中,看表达式是否为真 列: 理解成变量,可以运算

取出结果: 可以理解成一张临时表

子查询

Where型子查询: 指把内层查询的结果作为外层查询的比较条件.

典型题:查询最大商品,最贵商品

From 型子查询: 把内层的查询结果当成临时表,供外层sql再次查询

典型题:查询每个栏目下的最新/最贵商品

Exists子查询 : 把外层的查询结果,拿到内层,看内层的查询是否成立.

典型题: 查询有商品的栏目

Union: 联合

作用: 把2次或多次查询结果合并起来 要求: 两次查询的列数一致

推荐; 查询的每一列,相对应的列类型也一样.

可以来自于多张表

多次sql语句取出的列名可以不一致,此时,以第1个sql的列名为准

如果不同的语句中取出的行, 有完全相同(每个列的值都相同), 那么相同的行将会合并.(去重复)

如果不去重复,可以加all来指定

如果子句中有order by ,limit, 须加(), 推荐放到 所有子句之后,即--对最终合并后的结果来排序.

在子句中, order by 配合limit使用才有意义, 如果order by 不配合limit使用, 会被语法分析器优化分析时,去除.

集合 set

集合的特性: 无序性,唯一性. 2,3,5 5,2,3

一张表,就是一个集合, 一行数据是集合的一个元素.

理论上讲:不可能存在完全相同的两个行, 但是表中可以完全相同的两行, 因为 表内部有一个rowid. 4,7 2,3,5 X 集合B 集合A

8,12,20

,14,21,35

错误

猫,狗 鸡,鸭 鸡,猫 鸭,猫 鸡,狗 鸭,狗 集合相乘, 笛卡尔积

其实就是两个集合的完全组合.

问: 设集合A 有M 个元素 , M个元素各不相同. 设集合B ,有N个元素, N个元素各不相同

A*B, 得到的积,有M*N个元素,不可能重复.

表A,有9行, 表B有10行, 两表相乘有 9* 10, 90行.

左连接,右连接,内连接

左连接: left

Select 列1,列2,列N from tableA left join tableB

On tableA.列 = tableB [此处表连接成一张大表,完全当成普通表看] Where group , having...照常写

右连接: right

Select 列1,列2,列N from tableA right join tableB

On tableA.列 = tableB [此处表连接成一张大表,完全当成普通表看] Where group , having...照常写

内连接: inner

Select 列1,列2,列N from tableA inner join tableB

On tableA.列 = tableB [此处表连接成一张大表,完全当成普通表看] Where group , having...照常写

左右连接:

以左表为准, 去右表找匹配数据,找不到匹配,用NULL补齐.

如何记忆:

1:左右连接可以相互转化.

2: 可以把右连接转换为左连接来使用(并推荐使用左连接代替右连接,兼容性好一些)

A 站在 B的左边, ====> B站在A的右边 A left join B ====> B right join A

内连接: 查询左右表都有的数据,即: 不要左/右中 NULL的那一部分. 内连接是 左,右连接的交集.

思考:能否查出左右连接的并集呢?

答:目前不能,目前的mysql不支持外连接. Outer join 可以用Union来达到目的.

练习题:

1:goods表,category表,brand表,3表连接查询,得出以下字段 goods_id Cat_id Cat_name Brand_id Brand_name Goods_name

2:根据给出的表结构按要求写出SQL语句。 Match 赛程表 字段名称 字段类型 描述 matchID int 主键 hostTeamID int 主队的ID guestTeamID int 客队的ID matchResult varchar(20) 比赛结果,如(2:0) matchTime date 比赛开始时间 Team 参赛队伍表 字段名称 字段类型 描述 teamID int 主键 teamName int 队伍名称 Match的hostTeamID与guestTeamID都与Team中的teamID关联

查出 2006-6-1 到2006-7-1之间举行的所有比赛,并且用以下形式列出:

拜仁 2:0 不来梅 2006-6-21

3 2 2:0 2:5 1:2

3: 国安 2: 申花 5: 红牛

mysql笔记

Limit在语句的最后,起到限制条目的作用Limit[offset,]NOffset:偏移量N:取出条目Offset,如果不写,则相当于limit0,N思考:取出每个栏目下的最贵的商品???20分钟,1个select语句实现,烤肉一顿!良好的理解模型Where表达式
推荐度:
点击下载文档文档为doc格式
3e5za29gjk7g2499ip734mu7526k9200fmf
领取福利

微信扫码领取福利

微信扫码分享