发表于: 2017-09-14 22:24:47

1 782


今天完成的事情:

1:沟通并对照方案设计,表结构,完成最终的后端方案与表结构设计

2:看sql的书,学习union联结

 
明天计划的事情:

上午11时进行方案评审



遇到的问题:

这个地方到底是填boolean还是bit呢?



收获:

1:

操作符union可以用于合并两个或多个select语句的结果集
比如有一个student表和一个teacher表,他们都有name这个字段名
查询两个表里的名字和id可以用:
select ID,Name from student
union

select ID,Name from teacher

就能查到两个表的ID和姓名了


注意事项:
1:作为运算对象的记录的列数必须相同
例如,下面的例子,一部分记录包含2列,另一部分记录包含3列时会发生错误,无法进行加法运算
select id,name from student
union

select id,name,age from teacher;


2:作为运算对象的记录中列的类型必须一致
即从左侧开始,相同位置上的列必须是同一数据类型,
例子:
select id,qq from student
union
select id,name from teacher

一个是数值类型,要给是字符串类型,因此会发生错误


3:可以使用任何select语句,但order by子句只能在最后使用一次
例子:
select id,name from student where name='刘家铭'
union
select id,name from teacher where name='张三'
order by id;
如果想使用union的结果中保留重复行,只需要在unino后面添加all关键字就行了即union all


2:联结(join)

什么是联结?
联结(join)就是将其他表中的列添加过来,进行添加列的集合运算
union是表中将满足相同规则的记录以行(纵向)为单位进行联结,而联结是以列(横向)为单位进行联结

联结大体上分为内联结和外联结两种


内联结:
inner join
内联结是最广泛的联结运算
假设有两张表
1:shohin(商品)
有id,name,money,date
2:shopshohin
有id,shopname,amount
可以看出
①两张表都包含的类:id
②只存在于一张表内的列:id以外的列
所以联结运算就是以①的列为桥梁,将②中满足同样条件的列汇集到统一结果之中

select SS.id,SS.shopname,SS.amount,S.money from shopshohin as SS inner join shohin AS S on SS.shohin_id=S.shohin_id;


内联结要点:
1:from子句
之前的from子句只有一张表,而这次同时使用了shohin表和shopshohin表

from shohin AS S inner join shopshohin AS SS


使用关键字inner join就可以将两张表联结在一起了.S和SS分别是这两张表的别名,但别名不是必须的,直接使用原名也没有关系,不过由于表名太长会影响sql语句的可读性,所以最好还是习惯使用别名



2:on子句
on后面级再的是联结条件
例子:

ON S.id=SS.id


我们可以在on之后指定两张表联结所使用的列(联结键)
例子中使用的是商品编号,也就是说on专门用来指定联结条件.
需要指定多个键时,同样可以使用and,or.

on子句在进行内联结时是必不可少的,如果没有on会发生错误.并且on必须书写在from和where之间


3:内联结和where子句结合使用

如果不想了解所有商店的情况,例如只想了解商店名为"中百超市"的信息

例子:

select S.id,S.name,S.money,S.date,SS.id,SS.shopname,SS.amount
from shohin as s inner join shopshohin as ss
on s.id=ss.id
where ss.shopname="中百超市";





返回列表 返回列表
评论

    分享到