博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
完整性约束、外键的变种、单表查询
阅读量:6232 次
发布时间:2019-06-21

本文共 3558 字,大约阅读时间需要 11 分钟。

1.完整性约束

  not null 和 default

  unique 

    单列唯一:仅仅给一列设置unique

    多列唯一:给多列设置唯一

    联合唯一:unique(id,name);

  主键:primary key 化学反应 not null + unique

  自增长:auto_increment

    create table t1(id int primary key auto_increment unsigned,name varchar(20) not null);

    insert into t1(name) values("zhang");

    insert into t1(id,name) values(3,"qing");

    清空表区分delete和truncate的区别:

    delete from t1;如果有自增id,新增的数据,仍然是以删除前的最后一个作为起始。

    truncate from t1;数据量大,删除速度比上一个快,且直接从零开始。

  作用:保证数据的完整性和一致性;

2.完整性约束的补充:

  foreign key 外键 建立两张表之间的联系

  dep:被关联表,主表

create table dep(                id int primary key auto_increment,                name varchar(20) not null,                des  varchar(30) not null            );                        create table dep2(                id int primary key auto_increment,                name varchar(20) not null,                des  varchar(30) not null            );
View Code

  emp:关联表,从表

create table emp(                eid int primary key auto_increment,                name char(10) not null,                age int not null,                dep_id int not null,                dep2_id  int not null,                                constraint fk_dep foreign key(dep_id) references dep(id)                 on delete cascade # 同步删除                on update cascade,  # 同步更新                                constraint fk_dep2 foreign key(dep2_id) references dep2(id)                 on delete cascade # 同步删除                on update cascade  # 同步更新                            );
View Code

3.外键的变种:

  1.先站在左表的角度,左表的多条记录对应右表的一条记录 成立

  2.先站在右表的角度,右表的多条记录对应左表的一条记录 成立

  多对一或着一对多 1和2条件有一个成立

  多对多  1和2都成立  通过建立第三张表 来建立多对多的关系

  一对一  1和2都不成立,给一个表的fk的字段设置约束unique

  多对多:  

    使用第三张表,建立多对多的关系

create table book(                 id int primary key auto_increment,                 name varchar(20)                                );                create table author(                    id int primary key auto_increment,                    name varchar(20)                );                                create table autho_book(                    id int primary key auto_increment,                    book_id int not null,                    author_id int not null,                    constraint fk_book foreign key(book_id) references book(id)                    on delete cascade                    on update cascade,                    constraint fk_author foreign key(author_id) references author(id)                    on delete cascade                    on update cascade                                );                                insert into book(name) values                ('九阳神功'),                ('九阴真经'),                ('九阴白骨爪'),                ('独孤九剑'),                ('降龙十巴掌'),                ('葵花宝典');                                insert into autho_book(author_id,book_id) values                (1,1),                (1,2),                (1,3),                (1,4),                (1,5),                (1,6),                (2,1),                (2,6),                (3,4),                (3,5),                (3,6),                (4,1)                ;
View Code

4.单表查询

  1.单表查询的语法

  select 字段1,字段2..... from 表名;

  where 条件

  group by field

  having 筛选

  order by field

  limit 限制条数

  2.关键字的执行优先级****

  from

  where  

  group by

  having

  select

  distinct

  order by

  limit

  1.找到表:from

  2.拿着where指定的约束条件,去文件/表中取出一条条记录

  3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组

  4.将分组的结果进行having过滤

  5.执行select

  6.去重

  7.将结果按条件排序:order by

  8.限制结果的显示条数

 

 

  

 

转载于:https://www.cnblogs.com/qq849784670/p/9798441.html

你可能感兴趣的文章
0227 - 简单了解了 ETH 挖矿
查看>>
技术问答集锦(14)ThreadPoolExecutor
查看>>
macOS Charles 4.x版本的安装及使用(含破解激活)
查看>>
InnoDB透明页压缩与稀疏文件
查看>>
阅读SSM项目之scm【第二篇】
查看>>
聊聊springmvc中controller的方法的参数注解
查看>>
AspectJ 学习笔记
查看>>
GRU神经网络
查看>>
【log4】window用于设置小程序的状态栏、导航条、标题、窗口背景色。
查看>>
gpexpand分析
查看>>
前端每周清单第 44 期: 2017 JS 调查报告、REST 接口实时化、ESM 的过去与未来
查看>>
IP、UDP初探
查看>>
分布式系统中常见技术解决的问题是什么?
查看>>
WWDC 2018:理解崩溃以及崩溃日志
查看>>
「 iOS知识小集 」2018 · 第 40 期
查看>>
太极越狱重大安全后门
查看>>
一步一步学ROP之linux_x86篇
查看>>
【译】Ruby2.6的JIT功能,编译和解释型语言的相关说明
查看>>
架构设计知识梳理(2) Flux
查看>>
Android当内存监控到阈值时应该怎么办?
查看>>