首页数据库数据库表关联(mysql数据库表之间是怎么关联的请详解)

数据库表关联(mysql数据库表之间是怎么关联的请详解)

编程之家2023-10-20119次浏览

老铁们,大家好,相信还有很多朋友对于数据库表关联和mysql数据库表之间是怎么关联的请详解的相关问题不太懂,没关系,今天就由我来为大家分享分享数据库表关联以及mysql数据库表之间是怎么关联的请详解的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

数据库表关联(mysql数据库表之间是怎么关联的请详解)

数据库表关联查询的类型有什么

1.左右连接:以哪个表为主,结果集为“主表”的全部记录+“副表”与“主表”相匹配的记录,如果“副表”中没有和“主表”相匹配的记录,则相对应的记录显示为NULL

2.左连接:左边表全部行+右边表相匹配的行,如果左边表中的某一行,在右边表中没有匹配的行,则显示NULL(left join或者left outer join)

3.右连接:和左连接相反。(right join或者right outer join)

数据库表关联(mysql数据库表之间是怎么关联的请详解)

4.内连接:它返回字段ID(连接条件)同时存在于两个表中的记录,也就是说,仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行,内联接消除与另一个表中的任何行不匹配的行。(innerjoin或者join)

5.全连接:不管匹配不匹配,全部都显示出来。(full join或者full outer join)

6.交叉连接:没有WHERE子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(cross join不带where)

数据库表关联(mysql数据库表之间是怎么关联的请详解)

7.自连接:给自己取个别名,一个表当两个表来使用。

如何设置SQL数据库表与表的关联关系

如果是父子关系,或者一对多关系。

可以通过创建外键的方式,在父表与子表之间,创建一个关联关系。

例如:

--创建测试主表. ID是主键.

CREATE TABLE test_main(

id INT NOT NULL,

value VARCHAR(10),

PRIMARY KEY(id)

);

--创建测试子表.

CREATE TABLE test_sub(

id INT NOT NULL,

main_id INT,

value VARCHAR(10),

PRIMARY KEY(id)

);

--插入测试主表数据.

INSERT INTO test_main(id, value) VALUES(1,'ONE');

INSERT INTO test_main(id, value) VALUES(2,'TWO');

--插入测试子表数据.

INSERT INTO test_sub(id, main_id, value) VALUES(1, 1,'ONEONE');

INSERT INTO test_sub(id, main_id, value) VALUES(2, 2,'TWOTWO');

SQL>--创建外键(默认选项)

SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY(main_id) REFERENCES test_main;

Table altered.

SQL>

SQL>--测试删除主表数据.将出错 ORA-02292:违反完整约束条件

SQL> DELETE

2 test_main

3 WHERE

4 ID= 1;

DELETE

*

ERROR at line 1:

ORA-02292: integrity constraint(HR.MAIN_ID_CONS) violated- child record found

mysql数据库表之间是怎么关联的请详解

left join

join

主外键是两种对表的约束。

例如:

学生表student(学号(id),姓名(name),性别(sex))

表内有:1,aa,女

课程表subject(课程编号(id),课程名(name))

表内有:1,语文

成绩表grade(成绩编号(id),学号(stu_id),课程号(sub_id),成绩(grade))

表内有:1,1,1,90

成绩表的学号就是学生表的学号相对应,并且为学生表的主键,这样就称成绩表中的学号是学生表的外键,同理,成绩表中的课程号是课程表的外键。

select* from student as s inner join subject as su on su.stu_id=s.id inner join grade as g on g.sub_id=su.id where 1.

扩展资料:

注意事项

SQL连接(JOIN)子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。连接的结果可以在逻辑上看作是由SELECT语句指定的列组成的新表。

左连接与右连接的左右指的是以两张表中的哪一张为基准,它们都是外连接。外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配。

假设两个没有空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空值的字段。

不同的 SQL JOIN可以使用的不同的 SQL JOIN类型:

INNER JOIN:如果表中有至少一个匹配,则返回行

LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行

RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行

FULL JOIN:只要其中一个表中存在匹配,则返回行(MySQL不支持FULL JOIN)

例如:

mysql> select* from access_log;

+-----+---------+-------+------------+

| aid| site_id| count| date|

+-----+---------+-------+------------+

| 1| 1| 45| 2016-05-10|

| 2| 3| 100| 2016-05-13|

| 3| 1| 230| 2016-05-14|

| 4| 2| 10| 2016-05-14|

| 5| 5| 205| 2016-05-14|

| 6| 4| 13| 2016-05-15|

| 7| 3| 220| 2016-05-15|

| 8| 5| 545| 2016-05-16|

| 9| 3| 201| 2016-05-17|

+-----+---------+-------+------------+

9 rows in set

请问什么是数据库表自关联啊 求高手指教

自关联,字面意思是自己跟自己关联,如数据库中某表:EXP,有字段ID,PD数据内容是:

ID PD

001 002

002 001

006 008

009 007

如何将字段ID中的前两位数字相同的ID号取出来,并对PD求和,那么这就是自关联,或者我们经常遇到的销售记录表:

ID U_ID JE

1 001 800

2 001-50

3 001 600

4 001-1000

上表的意思是某用户第一次冲值800元,第二次消费50元,要查找出该用户所有消费记录和当前结余是多少,那么在对这个表查询需要用到内关联。

好了,关于数据库表关联和mysql数据库表之间是怎么关联的请详解的问题到这里结束啦,希望可以解决您的问题哈!

微信聊天记录在服务器保存多久(微信聊天记录会在腾讯的服务器上保存多久)免费领取服务器(在哪可以申请免费服务器)