MySQL表的约束篇not null default auto_increment UK PK FK-章节2

理解关系型数据库:从关系代数到生产问题根因分析 关系型数据库不是简单的数据存储工具,而是基于关系演算与关系代数构建的数学形式化系统。其核心原理包括关系(Relation)、主键(Primary Key)、外键(Foreign Key)和规范化(Normalization)四大支柱,共同保障实体完整性、参照完整性和数据一致性。这些原理直接决定SQL执行逻辑、索引有效性、JOIN性能及事务行为。在工程实践中,90%的慢查询、数据不一致和对账偏差,根源并非SQL写法或硬件瓶颈,而是违反了域约束、主键非空性或外键参照完整性等基础公理。本文聚焦真实生产案例,揭示如 阅读详情

MySQL表的约束

所谓完整性是指数据的准确性和一致性,而完整性检查就是值检查数据的确定性和一致性。

MySQL数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保证数据库表中数据的准确性和一致性,这种机制就是约束

完整性约束关键字含义
not null(NK)约束字段的值不能为空
default设置字段的默认值
unique key(UK)约束字段的值是唯一
primary key(PK)约束字段为表的主键,可以作为该表记录的唯一标识
auto_increment约束字段的值为自动增加
foreign key(FK)约束字段为表的外键
1、//设置非空约束(not null,NK)
create table table_name(

​		属性名 数据类型 not null

​		...

);
2、//设置字段为默认值(default)
create table table_name(

​		属性名 数据类型 default 默认值

);

e.g.:

create table table_name(

​		dname varchar(10)  deafult '菠萝吹雪'

);

插入数据的时候,default 后的默认值 写default会打印出“菠萝吹雪”

3、//设置唯一约束(unique,UK)

1、//设置某表中某字段的UK约束

create table table_name(

​		属性名 数据类型 unique

);

2、//给某字段的UK约束设置一个名字

create table table_name(

​		属性名1 数据类型1,

​		属性名2 数据类型2,

​		属性名3 数据类型3,

​		constraint uk_属性名3 unique(属性名3)

);

ERROR 1062 (23000): Duplicate entry ‘boluo’ for key ‘name’

如果有重复值,会显示以上错误

4、//设置主键约束(primary key, PK)

1、单字段主键

设置某表中某字段的PK约束

create table table_name(

​		属性名 数据类型 primary key,

​		属性名 数据类型,

​		.......

);

2、//给某字段的PK约束设置一个名字

create table table_name(

​		属性名1 数据类型1 ,

​		属性名2 数据类型2,

​		属性名3 数据类型3

​		.......

​		constraint pk_属性名3 primary key(属性名)

);

多字段主键—主键由多个字段组合而成

create table table_name(

​		属性名1 数据类型1 ,

​		属性名2 数据类型2,

​		属性名3 数据类型3

​		.......

​		constraint pk___属性名2_ _属性名3 primary key(属性名2,属性名3)

);
设置字段自动增加(auto_increment)
create table table_name(

​		属性名 数据类型 auto_increment,

​		....

​		....

);
设置外键约束(foreign key,FK)—用于两个表及以上

父表:

create table table_name(

​		属性名1 数据类型1 primary key,

​		属性名2 数据类型2,

​		属性名3  数据类型3,

​			.......

);

字表:

create table table_name(

​		属性名4 数据类型4 primary key;

​		属性名5 数据类型5,

​		属性名6  数据类型6,

​		constraint 外键约束名(fk_属性名6)  foreign key (属性名6)

​				references 要关联的父表的表名 (父表属性名1)

);

其中属性名1为父表的主键,属性名6为子表的外键

举例:

create table t_dept(
     deptno int primary key,
     dname varchar(20),
     loc varchar(40)
     );



create table t_employee( 

​		empno int primary key, 

​		ename varchar(20), 

​		job varchar(40), 

​		deptno int, 

​		constraint fk_deptno foreign key(deptno) 

​			references t_dept(deptno)

);
mysql 简述pk uk fk 的区别和对数据库性能的影响_SQL Server 数据库中PK,UK, DF, CK, FK是什么意思?... 创建任意数据库,执行以下测试sql脚本USE TestDBGO--PK, 主键, {PK_Table}CREATE TABLE [Users]([Id] [int] IDENTITY (1,1)CONSTRAINT [PK_Users] PRIMARY KEY([Id]),[Name] [nvarchar](255));GO--INSERT INTO [Users]([Name])VALUES('... 阅读详情

相关推荐

Delta机器人:运动学正反解分析

Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n

花洛兮灬 3万+

Mysql列的完整性约束最详细教程之一——详解

Mysql列的完整性约束最详细教程之一——详解

m0_65635427的博客 2773

C++动态规划详解

动态规划思想 一、动态规划概念: 动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。即记住已知问题的答案,在已知的答案的基础上解决未知的问题。 在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后

weixin_51951103的博客 2万+

mysql约束

mysql约束

m0_72500922的博客 984

TwinCAT3与Matlab Simulink集成开发:如何快速生成和调试TcCOM模块

本文详细介绍了如何将TwinCAT3与Matlab Simulink进行深度集成,实现从控制算法模型到实时TcCOM模块的高效开发。通过环境搭建、模型配置、代码生成、系统集成与调试的完整流程,工程师可以快速将Simulink算法部署到倍福实时控制平台,大幅缩短开发周期并提升可靠性。

ik67890123的博客 223

如何使用apifox打包测试用例生成测试套件自动化执行

使用apifox打包测试用例生成测试套件自动化执行

weixin_55613512的博客 2886

MySQL数据库表的基本操作与表的约束(非常全面的解释与操作)

文章目录表的基本概念创建表查看表结构删除表修改表表的约束设置主键约束(PK约束)设置非空约束(NK约束)设置字段默认值(DEFAULT)设置字段自动增加(AUTO_INCREMENT)设置唯一约束(UK约束)设置外键约束(FK约束)总结 表的基本概念 表是包含数据库中所有数据库的对象。其中每一行代表一条唯一的记录,每一列代表记录中的一个字段。表中的数据。表中的数据库对象包含列,索引和触发器。 列...

小叮当的博客 929

docker部署neo4j,设置密码。Neo.ClientError.Security.Unauthorized: The client is unauthorized due to authenti

卷,设置NEO4J_AUTH将不会起作用,因为该数据库已经配置了身份验证。Neo4j Docker 服务将会启动,但您需要使用已与该数据库关联的用户名和密码才能登录。这里,使用了环境变量NEO4J_AUTH,设置了用户名为neo4j,密码为neo4jneo4j。这个命令还是比较全的,包括设置密码,设置端口,挂载外部的数据目录等。原因嘛,就是使用docker创建的neo4j,登录不上。把👆提到的外挂的数据,都清空了,再重新来一遍。有一种情况下,这样设置密码,并不会成功。如果不出意外,目前就算大功告成了。

xiezhipu的博客 563

MySQL 字段约束 null, not null, default, auto_increment

转载自:http://www.xiaoxiaozi.com/2009/07/09/1111/ 没有规矩,不成方圆,任何事物都是如此。 在 MySQL 中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。 今天我们就来看一下 MySQL 的字段约束: NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。 NULL

u011513212 8679

RK3568平台开发系列:Android环境下CAN的使用

在RK3568平台上,我们可以利用Android环境中的API来实现CAN的使用。通过以上步骤,我们可以在Android应用中发送和接收CAN数据,并进行相应的处理。当接收到CAN数据时,将触发onMessageReceived回调方法,我们可以在这个方法中对接收到的数据进行处理。在上述代码中,我们指定了CAN的ID为0x123,数据为{0x01, 0x02, 0x03},并设置了标志位和周期。接收CAN数据需要注册一个监听器,并在监听器中处理接收到的数据。发送CAN数据需要指定CAN的ID和数据。

2301_79330513的博客 1912

Hermes Agent 安装部署完全指南

Hermes Agent安装部署指南提供了两种安装方式:一键脚本安装和手动分步安装。该AI助手支持多平台运行(Linux/macOS/WSL2),核心功能仅需Git作为前置依赖,其他依赖如Python、Node.js等均由安装脚本自动处理。文档详细介绍了系统要求、依赖管理、配置目录结构、环境变量设置以及10个手动安装步骤,并提供了功能模块化选项,用户可根据需求选择安装语音交互、浏览器自动化等扩展功能。安装完成后可通过hermes doctor命令验证环境,并通过交互式向导完成初始化配置。

简简单单Onlinezuozuo 2618

【MySQL基础知识】数据表操作

1、创建表 create table tablename( 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], ...... 属性名 数据类型 [完整性约束条件]); 例:在数据库中创建名为t_test表。 mysql> use fan; Database changed mysql> create table -> t_test(classno int,cname varchar(20),loc varchar(20

Fanjufei的博客 567

Trae 保姆级使用指南,零基础小白也能实现编程。

Trae 使用指南 Trae AI 使用 零基础编程 满血版 DeepSeek-R1&V3 AI IDE 深度理解中文开发场景 傻瓜式编程 编程入门 开发入门

Mr.L-OAM的博客 5815

企业实战权限库表设计文档(13张标准表·多租户·全权限体系)

本文档提出一套企业级增强RBAC权限体系设计方案,基于RBAC3模型深度扩展,构建五维立体化权限架构(功能权限、数据权限、字段权限、临时权限、审计权限),包含13张核心数据表。方案突破传统RBAC模型的局限,创新性地整合了多租户隔离、角色继承互斥、动态数据规则、字段级脱敏等企业级特性,并严格遵循等保2.0合规要求。通过租户层、功能层、数据层、审计层的四层闭环设计,实现从账号身份到操作审计的全链路管控,支持SaaS多租户、微服务等复杂场景。文档详细阐述了每张表的设计思想、核心字段、业务场景及生产规范,并配套R

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 546

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MYSQL之外键约束

默认值约束(default):create(address varchar(50) default ‘南京’)自增约束(auto_increment):随着记录增加,基于最新的记录的id进行+1的自增长。唯一性约束(unique [key|index]):唯一,可为空,但空值只允许出现一次。alter table (表名) drop foreign key (约束值)主键约束(primary key):具有唯一且非空。非空约束(not null):不可为空。references:引用。

l17605229954的博客 1901

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MySQL中的字段约束 null、not null、default、auto_increment

在MySQL中,每个字段定义都包含附加约束或者修饰符,这些可以用来增加对所输入数据的约束。今天我们来看一下MySQL的字段约束:NULL和NOT NULL修饰符、DEFAULT修饰符,AUTO_INCREMENT修饰符。   NULL 和 NOT NULL 修饰符: 可以在每个字段后面都加上这NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),还是说必须填

荆轲刺秦王 3647

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql 语句中 unsigned NOT NULL auto_increment 和 NOT NULL default ''

例: CREATE TABLE TABLE_1 ( ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, // ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 NAME VARCHAR(5) NOT NULL default '' ) AUTO_INCREMENT = 100;(ID列从100开始自增) PRIMAPY是主键的意思...

BeautifulApple的博客 2万+

Mysql中自增字段(AUTO_INCREMENT)的一些常识

转 http://chengxuyuan.naxieshir.com/fenlei/2/p/151.html 在系统开发过程中,我们经常要用到唯一编号。使用过mysql的人都应该知道,mysql有一个定义列为自增的属性:AUTO_INCREMENT。 指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引。

denialdai的专栏 6880

mysql default关键字_MYSQL auto_increment 、default 关键字

1、auto_increment:innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引。create table T(X int auto_increment primary key,Y int); -- 对create table T(X int auto_increment,Y int ,index ix_A (X)) ...

weixin_36201438的博客 284

mysql关键字default,MYSQL auto_increment 、default 关键字

1、auto_increment:innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引。create table T(X int auto_increment primary key,Y int); -- 对create table T(X int auto_increment,Y int ,index ix_A (X)) ...

weixin_42588555的博客 347

[数据库]SQLServer:什么是主键(PK)和外键(FK)?(图解)

一、主键与外键 1.主键是用来唯一地标识一行数据。主键列必须包含唯一的值,且不能包含空值(null)。 2.主键可以建立在每张二维表中单列或者多列上。 3.一张二维表上的外键可以引用另一张二维表上对应的主键。   二、数据库关系图

rookiesx的博客 3万+

字符创函数 not null AUTO_INCREMENT字段约束

** 字符串函数:** substr(string ,start,len) 截取:从start开始,截取len长.start 从1开始算起。 正常查询 mysql> select bTypeName from category where bTypeId=10; Substr截取字符串 mysql> select substr(bTypeName,1,7) from category where bTypeId=10; mysql> select substr(bTypeName,2,7

weixin_54351496的博客 3422

MySQL约束-自增长约束(auto_increment)、非空约束(not null)、唯一约束(unique)

目录 自增长约束概念 特点 自增字段初始值 delete和truncate在删除后自增列的变化 非空约束概念 删除非空约束 唯一约束概念 文末资源推荐 每文一语 自增长约束概念 在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键会自动以相同的步长进行增长。 通过给字段添加 auto_increment 属性来实现主键自增长:比如我们指定id为主键自增长,这样会自动给其进行赋值。 字段名 数据类型a.

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 8374

MYSQL auto_increment 、default 关键字

1、      auto_increment:                            innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引。     create table T(X int auto_increment primary key,Y int);               --  对     create table T...

weixin_33901641的博客 401

Oracle中唯一约束和唯一索引的区别

在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现。也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空。 除了约...

weixin_34234823的博客 484

在mysql中default_NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。NULL 和 NOT NULL 修饰符可以在每个字段后...

NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。NULL 和 NOT NULL 修饰符可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),还是说必须填上数据 (NOT NULL)。MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL,MySQL 则不允许向该字...

weixin_35934012的博客 1190
上一篇: Mysql基本语法篇-章节1
下一篇: MySQL表数据的操作篇-章节3
崔凯洋
博客等级 码龄6年 26粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值