• 【MySQL】超详细_数据库的约束_MySQL的详细查询


    复习前面MySQL的基础操作,目的是让我们有印象!!在这篇文章中,我主要写的是数据库的约束查询操作的详细、深入讲解

    基础操作 (复习->【MySQL】超详细-基础操作) 

    插入 insert -> insert into 表名 values (值,值...)

    查询 select -> select 列名 from 表名

    修改 update -> update 表名 set 列名 = 值 where 条件

    删除 delete -> delete from 表名 where(删的是数据)


    数据库的约束

    约束定义

    1、not null

    表示添加了not null这个约束的列不能存储null值

    2、unique

    某列如果添加unique约束,那么这一列的值就存在唯一性

    3、default

    给某列添加默认值

    4、primary key

    primary key(主键)= not null + unique。主键是一行的身份标识

    5、foreign key

    foreign key(外键),用于有联系的表之间建立关系

    6、check

    保证列中的值符合条件


    表中添加约束【代码】

    我这里简要的写一个学校宿舍管理系统,系统中主要包含了宿舍信息表、学生信息表和每日的宿舍查房记录表。在上面的三张表中,我会在适合的位置添加约束。添加约束的目的是:使校验更严格了,写代码则会减少出错率,提高了开发的效率。

    学生信息表

    1. create table student (
    2. student_id int primary key auto_increment,
    3. student_name varchar(20) not null,
    4. gender varchar(2) default '女',
    5. age int,
    6. block_number int,
    7. dormitory_number int,
    8. berth_number int);

    primary key,not null,default解析 

    1.  primary key 主键,但是我在表中使用的是primary key auto_increment 自增主键。使用的是自增主键的话,当前列就会从最大的那个值开始自增,也可以手动修改值;没有加上auto_increment则不会自增,只能手动新增数据。
    2. not null 不为空,则student_name这一列的值不能为null。
    3. default '女' 默认gender这一列为女,就是在不需要添加这一列的情况下为女,想要值为男,则需要手动修改或添加值。

     宿舍信息表

    1. create table dormitory (
    2. block_number int,
    3. dormitory_number int,
    4. berth_number int,
    5. id int,
    6. foreign key (id) references student (student_id));

    foreign key解析

    •  foreign key (id) references student (student_id)这句代码的意思就是,子表dormitory的id列受父表student的student_id列所制约。
    • 当父表中的列没被引用的时候,就可以被删除;但是父表中的列被子表引用,父表就不能被删掉;所以父表和子表是双向制约的。
    • 删除表时,应该先删除子表,再删除父表
    • 应用自父表的那一列,要么时主键,要么是unique

     每日的宿舍查房记录表

    1. create table record (
    2. date_time datetime,
    3. dormitory_supervisor varchar(20),
    4. state varchar(5) default '未归寝',
    5. id int unique,
    6. foreign key (id) references student (student_id));

    详细查询

    1、插入与查询相结合

    普通插入:

    insert into 表1 values (值1,值2,...);#向表1中插入值

    普通查询:

    select * from 表2;#查询表2中所有的数据

    插入与查询相结合:

    1、insert into 表1(列名1,列名,...) select 列名1,列名2,... from 表2; #将表2中查询到的结果插入到表1中;

    2、insert into 表1 select * from 表2; #将表2中查询到的结果全部插入到表1中;

    注意:

    1、查询的值的类型,顺序,个数,必须和要插入的表相匹配!!!

    2、括号在 SQL 中用于分组表达式或子查询,而不是用于列名!!

    2、聚合查询 

    聚合查询:行与行之间的运算;

    表达式查询:列和列之间的运算;

    1、count 

    count和后面的括号中间不能加空格!!!

    2、sum

    3、avg

    4、max/min 最大值/最小值

  • 相关阅读:
    推荐算法高级案例-通过Wide&Deep算法进行特征组合的商品推荐详细教程 代码+数据
    可编程USB转 UART/I2C /SMBusS/SPI/CAN/1 -Wire适配器USB2S结构尺寸及电压设置
    第十四届蓝桥杯省赛C++B组题解
    手写JS的new操作符的功能、手写实现JS中Object类的call函数、apply函数的功能
    【汇总】nltk相关资源包无法下载报错问题
    YashanDB与丰图科技完成兼容性认证 助力数字孪生城市建设
    金仓数据库 KingbaseGIS 使用手册(8.4. 栅格存取函数)
    机器学习笔记之EM算法(五)广义EM的总结与其他变种形式
    展览模型一般怎么打灯vray---模大狮模型网
    【MySQL系列】- MySQL自动备份详解
  • 原文地址:https://blog.csdn.net/2201_75406088/article/details/136613899