数据库 表之间的联系

    xiaoxiao2021-12-14  20

    通过外键进行关联,外键中的元素必须全部来自对应的主键,且如果删除主键,那么必须先删除相应的外键,这样的设计使数据保证了一致性。但性能下降了很多,当性能比安全性更重要的时候,不要用外键,自己做好相关的权衡。 CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) ) 一对多体现在JAVA中利用数组。domian的JavaBean有时也称为实体类,对应相应的表结构。多对多的关系通过第三方的表来体现,通过两个外键互相约束。 create table TEACHERS( ID int primary key, NAME varchar(100), SALARY float(10,2) ); create table STUDENTS( ID int primary key, NAME varchar(100), GRADE char(1) ); create table TEACHERS_STUDENTS( T_ID int, S_ID int, primary key(T_ID,S_ID), constraint T_ID_FK foreign key (T_ID) references TEACHERS(id), constraint S_ID_FK foreign key (S_ID) references STUDENTS(id) );

    5 . 交叉连接: 两个表的笛卡尔积。

    select * from CUSTOMER,ORDERS; select c.ID,c.NAME,o.NUM,O.NUMBER from CUSTOMER c, ORDDERS o; 内连接: 在交叉连接的情况下筛选出来满足的某个条件。 隐式:select * from CUSTOMER c,ORDERS o where c.ID=o.CUSTOMER_id; 显示:select * from CUSTOMER c inner join ORDERS o on c.ID=o.CUSTOMER_id;

    7 . 外连接:

    左外:返回左表中的所有记录和满足连接的所有记录。 select * from CUSTOMER c left outer join ORDERS o on c.ID=o.CUSTOMER_ID; 右外:返回满足连接条件的记录,同时返回右表中的所有记录。 select * from CUSTOMER c right outer join ORDERS o on c.ID=o.CUSTOMER_ID;

    8 . 子查询: 嵌套查询,利用查询的返回值当做一个条件。

    select * from CUSTOMER where ID in (select CUSTOMER_ID from ORDERS ehere PRICE>100);

    9 . MySQL常用函数: SUM():求和 select sum(*) from STUDENT; COUNT():计数 select count(*) from STUDENT where MATH>=90; AVG():求平均,字段为NULL,不算值。 select avg(*) from STUDENT where MATH>=90; MAX():求最大 MIN():求最小 还有一些关于时间和数学的函数。 10 . 分组查询: 按照PRODUCT分组,输出每组的名称和 和。 having用于分组后过滤,可以使用函数,where不可以。 select PRODUCT,sum(PRICE) from PRODUCTS group by PRODUCT having sum(PRICE)>100;

    转载请注明原文地址: https://ju.6miu.com/read-970880.html

    最新回复(0)