mysql的关系以及连接查询

来源:互联网 发布:澳洲听歌软件 编辑:程序博客网 时间:2024/06/03 19:34

怎么保证关系列数据的有效性呢?任何整数都可以吗?

  可以通过外键约束进行数据的有效性验证    为stuid添加外键约束    alter table A add constraint stu_sco foreign key(stuid) references B(id);    此时插入或者修改数据时,如果stuid的值在B表中不存在则会报错    在创建表时可以直接创建约束    create table A(    id int primary key auto_increment,    stuid int,    subid int,    score decimal(5,2),    foreign key(stuid) references B(id),    foreign key(subid) references C(id)    );

外键的级联操作

在删除students表的数据时,如果这个id值在scores中已经存在,则会抛异常* 推荐使用逻辑删除,还可以解决这个问题可以创建表时指定级联操作,也可以在创建表后再修改外键的级联操作语法alter table A add constraint stu_sco foreign key(stuid) references B(id) on delete cascade;级联操作的类型包括:restrict(限制):默认值,抛异常cascade(级联):如果主表的记录删掉,则从表中相关联的记录都将被删除set null:将外键设置为空no action:什么都不做

连接查询分类如下:

表A inner join 表B:表A与表B匹配的行会出现在结果中表A left join 表B:表A与表B匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充表A right join 表B:表A与表B匹配的行会出现在结果中,外加表B中独有的数据,未对应的数据使用null填充在查询或条件中推荐使用“表名.列名”的语法如果多个表中列名不重复可以省略“表名.”部分如果表的名称太长,可以在表名后面使用' as 简写名'或' 简写名',为表起个临时的简写名称
原创粉丝点击