2025年mysql主键可以为空吗(mysql主键用什么类型)

mysql主键可以为空吗(mysql主键用什么类型)数据库就是数据的仓库 在数据库中提供了专门的管理系统 对数据库中的数据进行集中的控制和管理 能高效的对数据进行存储 检索 关系型数据库 关系型数据库起源于关系模型 关系模型认为 世界是由实体和联系组成的 而关系型数据库 是一种以表作为实体 以主键和外键作为联系的数据库结构 主键

大家好,我是讯享网,很高兴认识大家。



数据库就是数据的仓库。在数据库中提供了专门的管理系统,对数据库中的数据进行集中的控制和管理。能高效的对数据进行存储、检索。

关系型数据库:关系型数据库起源于关系模型。关系模型认为,世界是由实体和联系组成的。而关系型数据库,是一种以表作为实体,以主键和外键作为联系的数据库结构。


主键:在关系型数据库中,用于标识每一行唯一性的列,称为主键列。

主键有两个特点:不能重复,不能为空。

外键:在关系型数据中,用于表达两个表之间联系的列,称为外键列。

在关系型数据库中,引用方称为从表,被引用方称为主表。从表利用外键,引用主表的主键,从而建立两个表之间的联系。所以,外键在从表中定义。


关系型数据库的关系主要有三种:一对一一对多多对多

一对一:一条主表记录对应一条从表记录,同时一条从表记录对应一条主表记录。

一对多:一条主表记录对应多条从表记录,同时一条从表记录对应一条主表记录。

多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录,依靠中间表维护多对多的联系。

多对多模型 老师表 中间表 学生表 老师编号 姓名 老师编号 学生编号 学生编号 姓名 1 李老师 1 1 1 张1 2 王老师 1 2 2 张2 3 胡老师 1 3 3 张3 2 4 4 张4 2 1 2 2 2 3 3 4 3 1 3 2 一般情况下多方从表一方主表

关系型数据库只是一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database Management System,简称DBMS)的软件来管理数据库中的数据。

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据库引擎进行创建、查询、更新和删除数据。

不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。

InnoDB 是事务型数据库的首选引擎,提供提交、回滚、崩溃恢复能力的事务安全能力,并可以实现并发控制。InnoDB 是默认的MySQL引擎。

MyISAM 拥有较高的插入、查询速度,但不支持事务。

MEMORY 存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问。主要用于数据量不大的临时数据。

SQL是结构化查询语言(Structured Query Language)的英文缩写,是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言。

SQL 与 RDBMS 协同工作,来定义数据库的结构、存储数据、操纵数据、获取数据、控制对数据的访问以及确保数据的完整性。

SQL 分类:

数据定义语言(DDL)--- 创建、修改、删除数据库的内部数据结构 (define 定义)

数据查询语言(DQL)--- 用于数据库中的数据查询 (query 查询)

数据操作语言(DML)--- 用于数据库中数据的修改,包括添加。删除、修改等 (manipulation 操纵)

数据控制语言(DCL)--- 用于控制数据的访问权限 (control 控制)

后执行的子句,可以使用前执行子句的计算结果、定义的别名等
执行顺序:
1.执行from 查询表
2.执行where 进条件筛选
3.执行group by 分组
4.执行select 查询列
5.执行having 对分组结果进行筛选
6.执行order by 排序
7.执行limit 返回限定行







数据完整性=数据准确性+数据可靠性

为了防止垃圾数据的产生,从而影响数据库的执行效率


讯享网

数据完整性分为:实体完整性、域完整性、引用完整性、自定义完整性

实体完整性:

主键(primary key)是表中的一到多个列,主键列不能为空,也不能重复。一个表中只能有一个主键。
适合做主键的列,需要满足四个条件:

1、值必须唯一

2、值不能为空

3、不能带业务含义

4、值不能变化

唯一约束 是指给定列的所有值必须唯一,该列在表中每一行的值必须唯一。它和主键约束的区别在于该列可以为空。并且可以在一张表中给多个列设置唯一的约束。

 
     
讯享网

域完整性:

保证指定列的数据的有效性(mysql对域完整性支持不好)

实现方式:非空约束、默认值、检查约束

非空约束:制定列的值,不能插入null值。not null
默认值:添加记录时,如果该列的值不做插入,那么以默认值插入。 default
检查约束:检查插入列数据的有效值。check(mysql不支持)

讯享网

引用完整性:

外键和外键约束:
外键是描述表与表之间联系的一个列。是表中的列
外键约束是指在外键列上加上一个约束,强制外键列引用的数据是正确的。如果违反该约束,则不允许该条数据修改或插入。
注意:没有外键约束,不表示没有外键


 

第一范式:行不能重复(每条记录不能完全一样),列不可再分(一条记录的列只能有一个值)。
第二范式:非主独立。非主键列必须依赖于主键列。二范式要求一个表只描述一个实体。
第三范式:非主独立。非主键列之间不能有依赖关系。

数据库数据类型决定了表中 列 存储数据的类型。分为五种:

整型(int)

浮点型(float、double、decimal(m、d))

字符串型(char(定长字符串,如果内容不满以空格填充)、Varchar(可变长字符串,以内容的长度作为数据的长度))

日期型(date(年月日)、time(时分秒)、datetime(年月日时分秒))

二进制型(BLOB二进制型的长文本数据)

创建数据库

讯享网

删除数据库

 

创建表

讯享网

删除表

 

查询数据

讯享网

添加记录

 

修改记录

讯享网

删除记录

 

区别:
1、TRUNCATE TABLE 会清空表内所有数据,而DELETE FROM 可以按条件删除;
2、DELETE 会记录日志,意味着删除后的数据还可以恢复,但是效率低。TRUNCATE 不会记录日志,
删除后数据不能恢复,但是效率高。


条件删除:

讯享网

操作列

 

条件查询

if 函数 类似于三目运算符 会显示符合条件的查询结果列

注意:该列只做查询显示,并没有在表中实际插入生成

讯享网

distinct 去除重复记录 相同记录只显示一次

 

limit 返回限定行 第一个参数为起始记录数(第一条为0),第二个参数为显示记录数

讯享网

单条件查询   “ = ” 放在where 后面,表示比较;放在set 后面,表示赋值。
多条件查询   and (并且,两个条件都为真,结果为真,有一个为假,结果都为假)  
                       or (或者,两个条件有一个为真,结果都为真,只有两个条件都为假,结果才是假)

 

定义集合范围: in 或 not in 

讯享网

查询null 值不能用 = 、!= 只能用 is 、 is not

 

模糊查询 
– “ _ ” 通配符,匹配任何单个字符
– “ % ” 通配符,匹配零个或多个任意字符

讯享网

排序

将表中的记录按某个列进行排序排列,可以指定升序(asc)或降序(desc),如果不做指定,默认为升序。

 

条件判断语句

讯享网

聚合函数

count:统计行的数量

count(*):统计所有符合条件的记录。

 

sum(列名):统计某个列的总和

讯享网

avg(列名) :统计某个列的平均值,只统计非空

 

max(列名):统计某个列最大值

min(列名):统计某个列最小值,不统计空值

讯享网

分组查询(group by)

 

having

having 是对分组以后的结果进行筛选,执行在分组之后

讯享网

注意:where和having的区别。where执行在分组之前,不能跟聚合函数。having执行在分组之后,是对分组结果进行筛选,一般使用聚合函数进行筛选。

子查询

在一个查询语句中再嵌套一个查询语句,称为子查询

– 子查询的分类
– 相关子查询 和 非相关子查询
– 相关子查询:在外查询中,每查询一条记录,需要重新做一次子查询,这种称为相关子查询。相关子查询的执行,依赖于外部查询的数据,外部查询返回一行,子查询就执行一次。所以,相关子查询效率很低。
– 非相关子查询:在主查询中,子查询只需要执行一次,子查询结果不再变化。子查询结果供帐户查询使用,这种查询方式称为非相关子查询。
– 区分相关子查询,还是非相关子查询。主要看子查询是否能够独自运行,子查询是否依赖外查询的查询结果。如果子查询需要依赖外查询查询结果,不能单独运行,就是相关子查询。如果子查询不需要依赖外查询查询结果,可以单独运行,就是非相关子查询。



 

– exists 判断子查询是否存在数据,如果存在表达式则为真,反之为假
– not exists 相反

删除主表记录

删除主表记录时,如果该主表记录有从表记录引用。由于有外键约束存在,则无法删除主表记录。
删除主表记录有三种方式
1、级联删除。先将主表记录中关联的从表记录全部删除,再删除从表记录
2、外键置空。先将主表记录中关联的从表记录外键设置为null,然后再删除主表记录
3、改变状态。将主表记录添中标识符(有效/无效)。删除主表记录时,将状态修改为无效



联表查询

如果数据来自多个表,那么可以采用联接查询的方式来实现。表联接就是指将多个表联合在一起实现查询效果。

笛卡尔乘积是指将两张表的所有数据相连,最后联接的结果数为两张表数量的乘积。

表联接分类:内联接、外联接、自联接

内联接:只能查询两个表之间有关联记录的数据。

讯享网

外联接:可以查询出一个表中,所有符合条件的记录,无论该记录是否有关联数据。

left 或 right 实现

 

视图

视图可以看作是sql语句的封装,可以看做是临时表,视图查询的结果会随着真实表数据的变化而变化。视图只提供查询功能,不提供数据修改功能。

讯享网


小讯
上一篇 2025-05-12 22:37
下一篇 2025-04-15 10:00

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/143894.html