【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

保证列中的值符合条件


表中添加约束【代码】

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

学生信息表

create table student (
student_id int primary key auto_increment,
student_name varchar(20) not null,
gender varchar(2) default '女',
age int,
block_number int,
dormitory_number int,
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这一列为女,就是在不需要添加这一列的情况下为女,想要值为男,则需要手动修改或添加值。

 宿舍信息表

create table dormitory (
block_number int,
dormitory_number int,
berth_number int,
id int,
foreign key (id) references student (student_id));

foreign key解析

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

 每日的宿舍查房记录表

create table record (
date_time datetime,
dormitory_supervisor  varchar(20),
state varchar(5) default '未归寝',
id int unique,
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 最大值/最小值

相关推荐

  1. MySQL约束详细总结

    2024-03-12 09:02:03       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-12 09:02:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-12 09:02:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-12 09:02:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-12 09:02:03       18 阅读

热门阅读

  1. 分布式常常是复合的,既包括技术也包领域的

    2024-03-12 09:02:03       22 阅读
  2. RESTful API

    2024-03-12 09:02:03       20 阅读
  3. SpringBoot+Ajax+redis实现隐藏重要接口地址

    2024-03-12 09:02:03       20 阅读
  4. 后缀表达式的计算

    2024-03-12 09:02:03       21 阅读
  5. 动态规划 Leetcode 63 不同路径II

    2024-03-12 09:02:03       22 阅读
  6. vue 渲染pdf并盖章之后生成新的pdf

    2024-03-12 09:02:03       24 阅读
  7. 简单谈谈DNS服务器的响应策略和筛选机制

    2024-03-12 09:02:03       19 阅读
  8. [python3] 责任链模式

    2024-03-12 09:02:03       19 阅读