mysql数据库学习笔记四--索引、约束、连接

5 篇文章 0 订阅
5 篇文章 0 订阅

唯一索引
create table 表名(
字段名 数据类型,
。。。
unique index [索引名](字段名[(长度)])
);
create unique index 索引名 on 表名(字段名[(长度)]);
查询是否存在唯一索引 show create table 表名/G;

域完整性
域完整性是对关系中的单元格进行约束,域代表单元格也就是队列的约束。

非空约束
用于保证数据表中某个字段的值不为NULL,在mysql中使用not null关键字段添加非空约束
create table表名(
字段名 数据类型 not null,
。。。。
);
alter table 表名modify 字段名 数据类型 not null;

默认值约束
默认值约束用于为把数据表中某个字段的值添加默认值
create table表名(
字段名 数据类型 default 默认值,
。。。
);
或alter table 表名 modify 字段名 数据类型 default 默认值;
查询表的结构 desc 表名;

引用完整性
引用完整性是对实体之间关系的描述,是定义外关键字与主关键字之间的引用规则,也就是对外键的约束。
外键的概念
外键是指引用另一个表中一列或多列,被引用的列应该具有主键约束或唯一约束。外键用于建立和加强两个表数据之间的连接。
在创建表1中的字段名1为主键,在表2中也有字段名1,此处是因为引入了表1的字段名1,那么表2中的字段名1就是外键。被引用的表1是是主表,引用的表2是从表
当数据被从表引用时,主表中的数据不应该被删除,主表不能单方面删除表或表中的数据,需要先删除引用他的所有对象,或者把引用值设为空。

添加外键约束
alter table 表名
add foreign key (外键字段名) references 主表表名(主键字段名);
添加外键成功后,不能先为表2添加数据,因为表1还没有可以引用的数据,所有无法添加
验证外键是否添加成功,直接删除表1
delete from 表名1;
创建时直接添加外键约束
create table 表名(
字段名 数据类型,
。。。,
foreign key(外键字段名) references 主表表名(主键字段名)
);
查看show create table 从表表名\G;


删除外键约束
alter table 表名 drop foreign key 外键名;

多表查询
一对一
一对多
多对一
多对多

合并结果集
select *from 表名1 union select *from 表名;

union all
select *from 表名1 union all select *from 表名;


连接查询
笛卡儿积实现交叉连接 两个表中每一行数据任意组合
select 查询字段 from 表一 cross join 表2;

select e.empno,e.ename,d.deptno,d.dname
from emp e cross join dept d
(where e.deptno=d.deptno);

内连接 返回结果只包含符合查询条件和连接条件的数据
select 查询字段 from 表一 [inner] join 表2 on 表1.关系字段=表2.关系字段where 查询条件;
select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d on e.deptno=d.deptno;
inner join 其中inner可以省略 因为mysql默认是内连接 on用来指定连接条件类似于where

外连接 当需要包含没有关联的数据,返回的查询结果中不仅包含符合条件的数据,还包含左表或右表或两个表中的所有数据
1.左外连接
select 查询字段 from 表一 left [outer] join 表2 on 表一.关系字段=表二.关系字段 where 查询条件;
以左表中的数据为基准,若左表中有数据且右表中没有数据,则显示左表中的数据
2.右外连接
select 查询字段 from 表一 right [outer] join 表2 on 表一.关系字段=表二.关系字段 where 查询条件;
3.多表连接
select 查询字段 from 表一 [别名] join 表二 [别名] on 表一.关系字段=表二.关系字段 join 表m on...;

4.自然连接
select 查询字段 from 表1 [别名] natural join 表2 [别名];
select 查询字段 from 表1 [别名] natural [left|right] join 表2 [别名];
5.自连接
select 查询字段 from 表名 [别名1],表名 [别名2] where 查询条件;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

甜航一直在

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值