Java

MySQL多表操作

2018-12-15  本文已影响6人  强某某

外键约束

-- 给product中的cno添加一个外键约束
-- 修改表product给cno添加外键并且关联到category表的cid上面
-- references关联的列必须是主键
alter table product add foreign key(cno) references category(cid);
-- 如果添加了外键约束,比如说向product表中添加了一个cno在category中cid不存在的值,则会失败,同理添加外键时候如果不匹配也会失败。

-- 建表的时候创建外键
create table student(
    oid int ,
    pid int,
    foreign key(oid) references user(kid)
    foreign key(pid) references order(id)
)

唯一约束和主键约束



多表查询

-- 交叉连接查询(笛卡儿积)
-- 查询了两张表(一般结果无意义,不过可以通过条件过滤,例如where)
select * from product p,student s where p.cno=s.sid;

-- 内连接查询
-- 隐式内链接
select * from product p,student s where p.cno=s.sid;
-- 显式内链接(效果同上,on后面跟条件)
select * from product p inner join student s on p.cno=s.sid;

-- 外连接查询
-- 左外连接(左表中数据全部查询出来,如果右边没遇对应的数据则显示NULL)
select * from product p left outer join student s on p.cno=s.sid;

-- 右外连接(右表中数据全部查询出来,如果左边没遇对应的数据则显示NULL)
select * from product p right outer join student s on p.cno=s.sid;

> 内外连接在查询结果上面的区别就是内链接必须匹配条件而且无null值一般

-- 分页查询
select * from student limit 1 ,10;
-- 子查询
select * from student where age>(select cage from  people where name='sdas');
select pname,(select cname from catergory c where p.cno=c.cid) from product p;
补充:大部分情况下,连接查询和子查询可以互用
上一篇 下一篇

猜你喜欢

热点阅读