约束

约束

  • 概念&分类
    限制加入表中的数据 ,保证数据的正确性、有效性和完整性

    约束名称描述关键字
    非空保证数据不为nullnot null
    唯一数据各不相同unique
    主键一行数据的唯一标识,非空且唯一primary key
    检查保证列中的值满足某一条件(mysql不支持)check
    默认为指定的值采用默认值default
    外键让两个表数据建立链接,保证数据一致性和完整性foreign key

    用法:

    在创建时添加约束:
    create table log(
      id int primary key , -- 员工id ,主键且自增长
      name varchar(50) not null unique, -- 名字 ,非空且唯一
      bonus double(7,2) default 0-- 奖金 ,默认为0
    )
    -- 自动增长auto_increment
    # 设置自动增长必须在列是数字类型并且是非空且唯一下可以省略
    # 如果用delete删除了一条记录,自动增长仍然不会删除,还是会往下增长
    在创建后添加约束:
    alter table log modify 字段名 数据类型 not null; 
    删除约束:
    alter table log modify 字段名 数据类型;

外键约束

添加约束:
create table 表名(
 列名 数据类型,
 ...
[constraint [外键名称] foreign key (外键列名) references 主表名称(或主表列名称)];
)

在创建后添加约束:
alter table 表名 add constraint 外键名 foreign key(外表字段名) reference 主表名称(主表列名称); 
删除约束:
alter table 表名 drop foreign key 外键名称;

数据库设计

数据库设计简介

  • 软件研发步骤需求分析>>设计>>编码>>测试>>安装部署

    需求分析: 产品经理 > 产品原型
    设计:架构师, 开发工程师 > 软件设计.数据库设计.接口设计.过程设计
    编码: 开发工程师
    • 数据库设计概念

    1.根据业务系统具体需求, 结合DBMS, 为业务构造出最优数据模型
    2.建立数据库中的表结构表和表之间的关系
    3.有哪些表? 表里面有哪些字段? 表和表之间有什么关系?

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

表关系

表关系之一对多
如: 部门和员工
一个部门对应多个员工, 一个员工对应一个部门

实现方式: 在多的一方建立外键, 指向一的一方主键

表关系之多对多
如: 商品 和 订单
一个商品对应多个订单 , 一个订单包含多个商品
表关系之一对一
如 用户 和 用户详情
一对一关系多用于表的拆分, 将一个实体中经常使用到的字段放一张表里面, 不经常使用的字段放另外一张表里面, 用于提高查询性能

数据库设计案例

多表查询

内连接
-- 隐式内连接
select 字段列表 from 表1,表2... where 条件(如:表1.列=表2.条件)

select * from data1,data2  where data1.id = data2.did;


-- 显式内连接:有更快的执行速度,优势在多表上体现出, inner也可以省略
select 字段列表 from 表1 [inner] join 表2 on 条件

select * from data1 inner join data2 on data1.id = data2.did;



-- 给表起别名: 用as, 可以省略,但要加空格
select 字段列表 from 表 [别名]
外连接:
-- 左外连接:查询表1的所有数据和对应表2的数据
select 字段列表 from 表1 left [outer] join 表2 on 条件;

-- 右外连接:查询表2的所有数据和对应表1的数据
select 字段列表 from 表1 right [outer] join 表2 on 条件;
子查询

嵌套查询,链式编程思想

单行单列: 
select 字段列表 from 表 where 字段名= (子查询);

多行单列:
select 字段列表 from 表 where 字段名 in (子查询);

多行多列:
select 字段列表 from (子查询) where 条件

事务

简介

  • 数据库事务是一种机制, 一个操作序列 , 包含了一组数据库操作命令
  • 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求, 即这一组数据库命令要么同时成功, 要么同时失败
  • 事务是一个不可分割的工作逻辑单元

操作

-- 开启事务
start transaction 或者 begin;
-- 提交事务
commit;
-- 回滚事务
rollback;
-- 设置保存点
savepoint;

特征

  • 原子性(Atomicity): 事务是不可分割的最小操作单位, 要么成功, 要么失败
  • 一致性(Consistency): 事务完成时, 必须使所有的数据保持一致性
  • 隔离性(Isolation): 多个事务之间, 操作的可见性
  • 持久性(Durability): 事务一旦提交或回滚, 它对数据库中的数据改变是永久的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

换行和转行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值