MySQL 笔记

在学习SQL必知必会这本书的时候,遇到的一些知识点想记录一下,防止以后对概念说不清

外键

外键是表的一列,它的值必须在另外一个表的主键中,可以保证引用的完整性。假设有订单表Orders,通过user_id 与用户表进行关联,这时候在Orders表的user_id中定义一个外键,此时该列只能接受用户表的主键值。
作用:能防止意外删除,这样子不能直接删除顾客,必须把相关的订单先删除。

唯一约束

保证一列或者一组列的数据是唯一的,类似主键的,但是有下面的区别

  • 表可以有多个唯一约束,但是只有一个主键
  • 唯一约束可以有NULL
  • 唯一约束可以修改更新
  • 唯一约束不能定义外键

检查约束

保证一列或者一组列的数据满足某些条件

  • 检查最小或者最大值,防止出现0个物品的订单
  • 指定范围,在xx时间范围内
  • 只允许特定值,可以思考成强行枚举

索引

排序数据以加快搜索和排序操作的速度,类似一本书的索引,能快速找到想要的内容
索引靠什么作用:在一个或多个列定义索引后,DBMS保存其内容的一个排过序的列表,DBMS搜索排过序的索引,找出匹配的位置,然后检索这些行
一些应该记住的内容:

  • 索引改善检索的性能,但是减低了插入、修改、删除的性能,在执行这些操作的时候也要动态的更新索引
  • 占用大量的空间
  • 适合数据过滤和排序,如果经常使用某列排序,可以考虑索引

连接

假设我们有两个表,一个是orders表,另一个是customers表。
orders表:order_id, customer_id, order_date, total_price
customers:customer_id, name, address

内连接

返回两表中相符合条件的记录
返回orders表中有相应customers表记录的数据,如果这条记录在orders表中有,但是customers中没有,这条记录是不会返回的

SELECT orders.order_id, customers.name, orders.order_date, orders.total_price
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

左连接

返回左表中所有记录与右表相匹配的
返回所有orders中的记录,即使customers中也没有相匹配的记录。如果orders表的某个记录在customers表中没有,到时候查询结果得到的customers.name会是null

SELECT orders.order_id, customers.name, orders.order_date, orders.total_price
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值