MySQL基础进阶

MySQL基础进阶

约束 \color{red}{约束} 约束

约束的概念和分类

约束的概念

  1.约束是作用于表中列上的规则,用于限制加入表的数据。

约束的分类

在这里插入图片描述

非空约束

概念

  非空约束保证数据不为空。

语法

  1.添加约束。

– 创建表时添加非空约束。

CREATE TABLE 表名(
  列名 数据类型 NOT BULL,
  ……
);

–建完表后添加非空约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

  2.删除元素

ALTER TABLE 表名 MODIFY 字段名 数据类型;

唯一约束

概念

  1.唯一约束用于保证列中所有数据不同。

语法

  添加约束。

– 创建表时添加唯一约束

CREATE TABLE 表名(
  列名 数据类型 UNIQUE [AUTO_INCREMENT],
  -- AUTO_INCREMENT:当不指定值时自动增长
  ……
);

CREATE TABLE 表名(
  列名 数据类型,
  ……
  [constraint ] [约束名称] UNIQUE(列名)
);

  2.建完表后添加唯一约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

主键约束

概念

  主键是一行数据的唯一标识,要求非空且唯一。
  一张表只能有一个主键。

语法

– 添加表时添加主键约束

CREATE TABLE 表名(
  列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
  ……
);

CREATE TABLE 表名(
  列名 数据类型,
  [CONSTRAINT ] [约束条件] PRIMARY KEY(列名)
);

– 建完表后添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

数据库设计 \color{red}{数据库设计} 数据库设计

软件的研发步骤

在这里插入图片描述

数据库设计概念

&nesp; 1.数据库设计就是根据业务的具体需求,结合我们所选用的DBMS,位这个业务系统构造出最优的数据存储模型。
&nesp; 2.建立数据库中的表结构以及表与表之间的关联的过程。
&nesp; 3.有那些表?表中有那些字段?表和表之间有什么关系。

数据库设计的步骤

&nesp; 1,需求分析(数据是什么?数据具有那些属性?数据与属性的特点是什么)
&nesp; 2.逻辑分析(通过ER图对数据进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
&nesp; 3.物理设计(根据数据库自身的特点把逻辑设计转化为物理设计)
&nesp; 4.维护设计(1.对新的需求进行建表;2.表优化)

表关系

一对一

  1.用户和用户详情。
  2.一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询功能。

一对多(多对一)

  1.部门和员工
  2.一个部门对应多个员工,一个员工对应一个部门。

多对多

  1.商品和订单。
  2.一个商品对应多个订单,一个订单包含多个商品。

外键约束

概念

  1.外键用来让两个表的数据之间建立链接,保证数据一致性和完整性。
例如:上述多对多中的订单商品表来维护订单表和商品表之间的关系。

使用中间表的目的是维护两表多对多的关系:

  1.中间表插入的数据必须在多对多的表中存在。
  2.如果主表的记录在中间表维护了关系,就不能随意删除,如果可以删除,中间表就找不到对应的数据了,这样就没有意义了。

语法

– 创建表时添加外键约束

create table 表名(
  列名 数据类型,
  ……
  [constraint ] [外键名称] foreign key(外键列名)references 主表 (主表列名)
);

– 关键字解释

constraint:添加约束,可以不写
foreign key(当前表中的列名):将某个字段作为外键
references 被引用表名(被引用表的列名):外键引用主表的主键

– 建完表后添加外键约束

alter table 表名 add constraint 外键名称 foreign key  (外键字段名称) references 主表名称(主表列名称); 
删除约束
alter table 表名 drop foreign key 外键名称;

总结

一对多实现的方式

   在多的一方建立外键关联一的一方主键。

多对多实现方式

  建立第三张中间表。
  中间表至少包含2个外键,分别关联双方主键。

一对一实现方式

  在任意一方建立外键,关联对方主键,并设置外键唯一。

多表查询 \color{red}{多表查询} 多表查询

概念

  同时查询多张表,获取需要的数据;
  比如:我们向查询水果对应的价格,需要将水果表和价格表同时进行查询;

多表查询的分类

在这里插入图片描述

内链接

概念

  内连接查询有称为交集查询,也就是查询只显示满足条件的数据;

显示内连接

  显示内连接:使用inner join……on语句,可以省略Inner关键字 ;

select * from 表名1 inner join 表名2 on 条件;

select * from 表名1 join 表名2 on 条件;
隐式内连接

  看不到join关键字,条件使用where指定;

select 列名 , 列名, ……from 表名1, 表格2 where 表名1.列名 = 表名2.列名;

内连接查询步骤

  1.确定查询几张表。
  2.确定表连接条件。
  3.根据需要在操作。

外连接

左外连接

  左表的记录全部表示出来。
  右表只会显示符合条件的记录。

 select * from1 left outer join2 on 条件;
右外连接

  右表的记录全部展示出来。
  左表只会显示符合搜索条件的记录。

 select * from1 right outer join2 on 条件;

子查询

介绍

  子查询就是一个sql查询的结果作为另一个sql查询语句的一部分

单行单列

  作为父查询的条件
  作为父查询的条件,通常使用IN
  作为父查询的一张表(虚拟表),起别名

注意: 如果子查询中查询的结果字段是聚合函数,并且最后结果需要使用聚合函数,那么必须使用as 给聚合函数的字段起别名。

事务 \color{red}{事务} 事务

  一个事务其就是一个完整的业务逻辑。

什么是业务逻辑

假设转账,从A账户向B账户中转账10000,
将A账户的钱减去10000,
将B账户的钱增加10000,
这就是一个完整的业务逻辑。

SQL语句描述
start transaction开启手动控制事务
commit提交事务
rollback回滚事务

查看mysql是否自动提交事务

show variables like "%commit%";

事务的特征(ACID)

1.原子性

说明事务是最小的工作单元,不可在分。

2.一致性

所有事务要求,在同一个事务当中,所有操作必须同时成功,货同时失败,以保证数据的一致性。

3.隔离性

A事务和B事务之间具有一定的隔离。

4.持久性

事务最终结束的一个保障。
事务提交,就相当于将没有保存到硬盘上的数据保存的硬盘上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

君生我老

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

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

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

打赏作者

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

抵扣说明:

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

余额充值