当前位置:编程学习 > VB >>

vb.net机房收费总结——数据库应用之链接篇

    奋战了近两个月,机房收费系统总算完工,等待验收的到来啊,在整个的学习中,我感受较深的是米老师的囫囵吞枣理论,今天就拿数据库应用来说说!

      当初学习数据库的时候还是一年前,当初纯粹是囫囵吞枣啊!把sql,视图,事务等内容都吞到到肚子里,到了今天验证了那句话“出来混,早晚要还的”当初的枣吞得太生硬,在一年的时间里经过不停地打磨和敲击,在vb6里c#里,vs里!到今天化开了它神秘的面纱,得以窥见一斑!

       在sqlsever中能够用sql语句建立视图,主键等,也可以用一种图形化的方法建立,在说视图之前,必须要说的一个前提是jion语句,说白了就是怎么将两张表组合成一张表!

前提:我们有两张表

学生表:

记录姓名:

ID Name
201301 张三
201302 李四
201303 王五
201304 赵六
201305 冯七
201306 马八

 

衣服:

记录衣服:

ID Clothes
201301 t恤
201302 外套
201303 牛仔裤
201304 鸭舌帽
201201 墨镜
   

 


一、外连接
       外连接可分为:左连接、右连接、完全外连接。
       以左连接为例:  left join 或 left outer join
       SQL语句:select * from 学生left join 衣服 on 学生.ID=衣服.ID
       执行结果:


        ID Name ID Clothes
201301 张三 201301 t恤
201302 李四 201302 外套
201303 王五 201303 牛仔裤
201304 赵六 201304 鸭舌帽
201305 冯七 null null
201306 马八 null null
       

 

      大家看,左链接就会以左表(学生表为基准)进行填充,没有对应数据的值为空(null)。

大家再看其他的例子,就会明白:

右链接:right join 或 right outer join

ID Name ID Clothes
201301 张三 201301 t恤
201302 李四 201302 外套
201303 王五 201303 牛仔裤
201304 赵六 201304 鸭舌帽
null null 201201 墨镜
       

完全外连接: full join 或 full outer join

 


ID Name ID Clothes
201301 张三 201301 t恤
201302 李四 201302 外套
201303 王五 201303 牛仔裤
201304 赵六 201304 鸭舌帽
201305 冯七 null null
201306 马八 null null
null null 201201 墨镜
       

 

二、内连接  join 或 inner join
        SQL语句:select * from 学生 inner join 衣服on 学生.ID=衣服.ID
        执行结果:


ID Name ID Clothes
201301 张三 201301 t恤
201302 李四 201302 外套
201303 王五 201303 牛仔裤
201304 赵六 201304 鸭舌帽

 

        可见内连接只返回符合条件的行。

三、交叉连接 cross join

SQL语句:select * from student cross join course
执行结果:


ID Name ID Clothes
201301 张三 201301 t恤
201302 李四 201302 t恤
201303 王五 201303 t恤
201304 赵六 201304 t恤
201305 冯七 201305 t恤
201306 马八 201306 t恤
201301 张三 201302 外套
201302 李四 201302 外套
201303 王五 201302 外套
201304 赵六 201302 外套
201305 冯七 201302 外套
201306 马八 201302 外套
201301 张三 201303 牛仔裤
201302 李四 201304 牛仔裤
201303 王五 201305 牛仔裤
201304 赵六 201306 牛仔裤
201305 冯七 201307 牛仔裤
201306 马八 201308 牛仔裤
201301 张三 201304 鸭舌帽
201302 李四 201305 鸭舌帽
201303 王五 201306 鸭舌帽
201304 赵六 201307 鸭舌帽
201305 冯七 201308 鸭舌帽
201306 马八 201309 鸭舌帽
       

 

       可见第一个表的行数乘以第二个表的行数等于我们要查的结果的表,这种表较为冗余,一般我们不用!

 

       这只是数据库的简单应用,我们要处理比较分散的数据时用到这些比较多,如果数据集中,这些就很少用到,所以设计数据库时数据的粒度是一个很值得考虑的问题!粒度太大,数据冗余,粒度太小,关系复杂,还是那句话“合适就好”

 


 

补充:软件开发 , Vb ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,