数据库 表与表 的三种基本关系

表和表之间,一般就是三种关系:一对一,一对多,多对多

1、一对一:数据库表中的数据结构,我们用人与车一 一对应的方式来描述一对一的数据表结构,type是区分这条数据是人还是车,master对应是的主人(车的主人是哪个id,car对应的是那辆车的id)

SQL代码中,我们先创建这一张表:    注--if not exists的意思是  如果不存在***就如何如何,在这里就表示,如果这个数据库中没有这个表,就创建本表

CREATE TABLE IF NOT EXISTS person (

    id int  primary key autoincrement,

    name varchar(50),

    type int,

    master int,

    car int

);

插入数据:

    insert into person values(1,"小马",1,0,1);

    insert into person values(2,"小虎",1,0,2);

    insert into person values(3,"小龙",1,0,3);

    insert into person values(4,"小牛",1,0,4);

    insert into person values(5,"宝马5系",1,1,0);

    insert into person values(6,"奔驰E系",1,2,0);

    insert into person values(7,"汉兰达",1,3,0);

    insert into person values(8,"路虎揽胜",1,4,0);

对照表我们可以发现:小马 -- 宝马5系

                                        小虎 --  奔驰E系

                                        小龙 -- 汉兰达

                                        小牛 -- 路虎揽胜

通常呢为了查询方便,会建俩张表,但是实际项目中为了节省空间,一般都是一张表,重点来了 !!! 这时我们可以建视图,想当年我学数据库课程的时候,死都理解不了视图和存储是干什么,现在用这个例子可以很清晰的说明什么是视图,首先在逻辑上我们可以把上述表重中的数据分为俩组,一组是以人为主的,一组是以车为主的,创建这么两类视图(虚表)

        有个小概念我们需要普及一下,视图是一种逻辑概念,它并不独立占用物理内存,是依附在数据表上的,对视图进行修改时,相应的表数据也会被改动

创建视图:create view masterView as(select * from person where type = '1' );  这是人的视图

                    create view carView  as(select * from person where type = '0' ); 这是车的视图

要求:查出哪些人拥有的车是什么?

执行查询:

    1、原始方法:select masterView.name AS  car,carView.name AS master FROM masterView,carView  where masterView.id =carView.master  ANDcarView.id =masterView.car

    2、连接方法:select mansterView.name AS car,carView.name AS master FROM masterView INTER JOIN  carView ON  masterView.id =carView.master  ANDcarView.id =masterView.car

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容