数据库(约束、多表查询、事务)

1、概念:约束是作用与表中字段的规则,用于限制存储在表中的数据。

2、目的:保证数据库中数据的正确、有效性和完整性。

3、分类:

 注意:约束是作用于表中字段上的,可以在创建表/修改表中添加约束。

中auto_increment这个是指主键自增(添加主键是自动增加id序号)

案例:

 二、外键约束

概念:外键是用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

外键约束

【】语法:

1、添加外键

方法一(创建表时)

create table 表名(

        字段名 数据类型,

        ...

        [constraint] [外键名称] foreign key(外键字段名) references 主表(主表列名)

方法二、

alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表 (主表列名);

2、删除外键

alter table 表名 drop foreign key 外键名称;

外键约束

更新/删除行为

alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名(主表字段名 on update cascade on delete cascete;

多表查询

概述:项目开发中数据库表设计时,会根据业务需求,实现业务之间相互关联,所以各个表之间存在关系,基本分为三种一对多(多对一);多对多;一对一。

1、一对多(多对一);

案例:部门与员工的关系;

目的:一个部门对应多个员工

实现:在多的一方建立外键,指向单一的一方; 

多对多:

一个学生可以选修多门课程

一个班的多个学生同样可以选秀多门课程

一对一:

目的:一对一,多用于单表拆分,一张表的基础字段放在一张表中,详情放在另一张表中。

实现:在任意一方加入外键,关联另外一方的主键,并且设置外键作为唯一的(unique)。

多表查询详情

单表查询:select * from emp;

多表查询:select * from emp,dapt;(笛卡尔积)

两个集合a和集合b的所有组合情况。(要消除无效的笛卡尔积)

多表查询:select * from emp,dapt where emp.dept_id = dept_id;(笛卡尔积)

多表查询的分类

内连接:相当于集合a和集合b交集的部分数据;

隐式内连接:

select 字段列表 from 表1,表2 where 条件。。。;

显式内连接:

select 字段列表 from 表1 【inner】join 表2 on 连接条件。。。;

外连接:

        左外连接:相当于查询表1(左表)的所有数据,包括表1和表2交集部分的数据;

        select 字段列表 from 表1 left 【outer】join 表2 on 条件。。。; 

        右外连接:相当于查询表2(右表)的所有数据,包括表1和表2交集部分的数据;

        select 字段列表 from 表1 right【outer】join 表2 on 条件。。。; 

        自链接:可以是内连接查询,也可以是外连接查询;

        内

        select 字段列表 from 表a 别名a join 表a 别名b on 条件。。。;

        外(空也可以查询)

        select 字段列表 from 表a 别名a left join 表a 别名b on 条件。。。;

联合查询-union,union all、

对于联合union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

select 字段列表 from 表a。。。

union 【all】

select 字段列表 from 表b。。。;

多张表列数保持一致,字段类型保持一致。

union all会将全部数据合并在一起,union会将重复的去除。

子查询

sql语句中嵌套select语句,称为嵌套查询,又称子查询。

select *from t1 where column1=(select column1 from t2);

子查询外部的语句可以是insert/update/delete/select的任何一个。

根据子查询结果不同,分为:

标量子查询(子查询结果为单个值)

 

列子查询(子查询结果为一列)

 

行子查询(子查询结果为一行)

表子查询(子查询结果为多行多列)

 

多行数据不能用()需要in; 

根据子查询位置,分为:where之后,from之后,select之后

实例题

事务

 

 

 返回0是手动

1是自动

 开启事务

start transaction;

第一种手动

无误提交事务

有问题进行回滚事务

第二种   自动 

有问题回滚事务

事务四大特性

并发事务问题

事务隔离级别

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值