SQL 字段类型属性

NULL属性

  • Null/Not Null 属性来限制数据是否可以为空

  • 默认为 Null

create table t_01
{username varchar(10) not null--...
}

Default属性
  • 设置默认值 表字段的时候给定默认数据,在后续字段操作(数据新增)的时候系统没有检测到字段有数据的时候自动使用的值

  • 默认值通常设计的是字段容易出现的数据

    • 一般字段的默认值 默认是Null

  • 默认值触发

    • 在系统进行数据插入时自动检测触发

    • 主动使用default关键字触发默认值

#用户开户:银行卡账号、身份证号码、姓名、账户余额
create table test(account varchar(19) not null,id_card varchar(19) default 'nullptr' not null,--等价于 --id_card varchar(19) default 'nullptr'name varchar(19) not null,money decimal(6,2) default 0.00
)charset utf8;
​

primary key 主键

主键:primary key,用来保证整张表中对应的字段永远不会出现重复数据(唯一性

  • 主键在一张表中只能有一个

  • 主键的另外一个特性是能够提升主键字段作为查询条件的效率(索引)

  • 主键不能为空:Not Null(默认)

  • 逻辑主键:数据没有具体业务意义,纯粹是一种数值数据

    • 逻辑主键通常是整数:int

    • 逻辑主键目的是方便检索和数据安全(不暴露数据真实信息)

  • 复合主键:多个字段共同组成不能重复的数据

    • 这个多个字段,如果 都相同 就不可以

    • primary key(字段1,字段2,…字段N)

    • 联合主键使用不多,一般也不会超过2个字段

    • primary key(id,name);

create table test(id int unsigned primary key,--如果有id2 int unsigned primary key, error 主键是唯一的 name varchar(10) not null
);
​
create table test1(id int unsigned primary key,name varchar(10) not null,primary key(id,name) 
); #不可以主键的唯一性
​
create table test1(id int unsigned,name varchar(10) not null,primary key(id,name)  
);#可以的,因为只有一个 复合主键
​

主键管理

在创建表并且已经有数据后的维护

  • 删除主键

    • 删除主键:主键只有一个,所以删除语法也比较特殊

    • alter table t_26 drop primary key;

  • 追加主键

    • 2、后期新增主键:如果是针对业务主键需要保证字段数据没有Null数据且没有数据重复(一般主键都会在表创建时维护好

    • alter table t_26 add primary key(account,name);

  • 修改主键(先删除后新增)

auto_increment自增长属性

自增长:auto_increment,被修饰的字段在新增时,自动增长数据

  • 自增长只能是整数类型,而且对应的字段必须是一个索引(通常逻辑主键)

  • 一张表只能有一个自动增长

  • 自增长一般是配合逻辑主键实现自动增长

    • 整型字段

    • 存在索引(primary key 主键 / unique key 唯一键)

  • 自增长数据可以理解为一种默认值,如果主动给值,那么自动增长不会触发

  • 自增长由两个变量控制

    • 初始值:auto_increment_offset,默认是1

    • 步长:auto_increment_increment,默认值也是1

    • 查看自增长控制:show variables like 'auto_increment%';

create table t_28(id int unsigned primary key auto_increment
);
自增长管理

在某些特殊使用下,需要自增长按照需求实现

  • 修改表中自增长的值:让下次自增长按照指定值开始

alter table t_28 auto_increment = 50;

注意:奇数会保留原值,偶数会自动加1(可能出现的情况)

  • 修改自增长控制:调整自增长的步长

set auto_increment_increment = 2;   # 当前用户当前连接有效(局部)
set @auto_increment_increment = 2;  # 所有用户一直有效(全局)

unique key唯一键
  • 一个表中可以有多个唯一键

  • 唯一键与主键的区别在于 唯一键允许数据为Null(而且Null的数量不限)

  • 唯一键与主键一样,可以提升字段数据当做条件查询的效率(索引)

  • 复合唯一键:多个字段共同组成

    • unique key(字段1,字段2,…字段N)

    • 一般不会出现,最多2个字段组成

​
create table test123(id int unsigned primary key auto_increment comment 'id',name varchar(20) not null unique key comment '名字',course varchar(20) not null comment '课程',score decimal(5,2)  default 0.00 comment '分数',unique key(id,name) #可以是可以但是没必要
);

foreign key 外键约束
-- 将主表的 column 约束在 从表某个 column 的范围里面
-- 如果这张表的 某个id 被某个从表使用那么就不可以对其做任何修改
create table  student_id(id int unsigned primary key auto_increment,    
);
​
create table student(id int unsigned,name varchar(20) not null,age int not null,-- 将id 的范围 限制在 student_id 的 id 内foreign key(id) references student_id(id),constraint mychk_age check (age >= 0 and age <= 200)
);
​

comment属性

描述:comment,是用文字描述字段的作用的

  • comment代表的内容是对字段的描述

    • 方便以后自己了解字段的作用

    • 方便团队了解字段的作用

  • 描述如果涉及到字符集(中文)一定要在创建表之前 设置好客户端字符集(否则会出现描述乱码)

数据库记录长度

数据库记录长度:MySQL中规定一条记录所占用的存储长度最长不超过65535个字节

  • 记录长度为表中所有字段预计占用的长度之和

  • 所有字段只有允许Null存在,系统就会预留一个字节存储Null(多个Null也只要一个就好)

  • 因为MySQL记录长度的存在,varchar永远达不到理论长度

    • GBK存储:65535(字符) * 2 + 2 = 131072(字节)

    • UTF8存储:65535(字符) * 3 + 2 = 196607(字节)

  • 一般数据长度超过255个字符都会使用 text/blob 进行存储(数据存储不占用记录长度)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870757.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TPM开启确认

TPM 2.0在系统中开启的确认 方法一 &#xff1a;鼠标右击开始菜单-运行&#xff08;或按下键盘的WinR键&#xff09;&#xff0c;输入tpm.msc&#xff0c;然后 回车 弹出窗口 方法二&#xff1a;通过“设置>权限和安全>Windows安全中心>设备安全性” 点击Devices s…

Transformer相关的课程、视频和工具 - Transformer教程

大家好&#xff01;今天我们来聊聊近年来在人工智能领域大放异彩的Transformer。这个模型自从被提出以来&#xff0c;就迅速成为自然语言处理&#xff08;NLP&#xff09;和其他机器学习任务中的热门工具。可能很多小伙伴对Transformer还是有些陌生&#xff0c;不知道如何学习和…

PE73_D_E6_BLE

产品参数 产品型号 PE73_D_E6_BLE 尺寸(mm) 176.2*137.15*80mm 显示技术 电子墨水屏双面显示 显示区域(mm) 163.2(H) * 97.92(V) 分辨率(像素) 800*480 外观颜色 银色 显示颜色 黑/白/红/黄/蓝/绿 视觉角度 180 工作温度 15-35℃ 产品重量 268g 电池容…

计网ip层重要面经总结

文章目录 127.0.0.1, localhost, 0.0.0.0有什么不同?ipv6还需要NAT吗&#xff1f;DNS查询服务器的基本流程浏览器输入一个URL到显示器显示的过程PING是怎么工作的&#xff1f;ipv4和ipv6究竟有哪些区别&#xff1f;什么是跨域&#xff0c;什么情况下会发生跨域问题&#xff1f…

学懂C#编程:高级开发技术——深入理解发布-订阅模式(Publisher-Subscriber Pattern)的实现

一、理解 发布-订阅模式&#xff08;Publish-Subscribe Pattern&#xff09; 机制 发布-订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它允许消息的发送者&#xff08;发布者&#xff09;和消息的接收者&#xff08;订阅者&#x…

..质数..

先弄清楚我们在上小学时 学的概念。 1、什么是质因数&#xff1f; -质因数是指能够整除给定正整数的质数。每个正整数都可以被表示为几个质数的乘积&#xff0c;这些质数就是该数的质因数。质因数分解是将一个正整数分解成若干个质数相乘的过程。例如&#xff0c;数字 12…

Nginx服务优化

1 隐藏版本号* 方法一 &#xff1a;在http模块中添加行 #隐藏版本号 server_tokens off;方法二 &#xff1a;修改版本信息 进入源码安装包 cd /安装包根目录/src/core vim nginx.h 解注释以下行并修改 define NGINX_VERSION "Dont you guess!" difine NGINX_VER…

C:数据结构---算法

1.1排序算法 稳定排序 不稳定排序 ①冒泡排序&#xff08;稳定&#xff09; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对 ②选择排序 在未排序序列中找到最小&#xff08;大…

Nature Communications|柔性高密度、高灵敏应变传感器阵列(柔性应变传感/界面调控/电子皮肤/柔性电子)

复旦大学武利民( Limin Wu)和李卓( Zhuo Li)团队,在《Nature Communications》上发布了一篇题为“High-density, highly sensitive sensor array of spiky carbon nanospheres for strain field mapping”的论文。论文内容如下: 一、 摘要 在工程应用中,准确地映射应变…

星环科技推出语料开发工具TCS,重塑语料管理与应用新纪元

5月30-31日&#xff0c;2024向星力未来数据技术峰会期间&#xff0c;星环科技推出一款创新的语料开发工具——星环语料开发工具TCS&#xff08;Transwarp Corpus Studio&#xff09;&#xff0c;旨在通过全面的语料生命周期管理&#xff0c;极大提升语料开发效率&#xff0c;助…

批量提取PDF中表格内容

1 背景 从PDF文件获取表格中的数据&#xff0c;也是日常办公容易涉及到的一项工作。比如我们想获取某公司年报里面的表格数据&#xff0c;PDF动辄上百页的数据。 2 传统方法 一个一个从PDF表格中复制&#xff0c;然后粘贴到Excel表格中&#xff0c;效率太低了。 3 办公自动…

云计算【第一阶段(29)】远程访问及控制

一、ssh远程管理 1.1、ssh (secureshell)协议 是一种安全通道协议对通信数据进行了加密处理&#xff0c;用于远程管理功能SSH 协议对通信双方的数据传输进行了加密处理&#xff0c;其中包括用户登录时输入的用户口令&#xff0c;建立在应用层和传输层基础上的安全协议。SSH客…

深度学习中的正则化技术 - 噪声鲁棒性篇

序言 在深度学习的蓬勃发展中&#xff0c;模型的性能与泛化能力成为了研究者们关注的焦点。然而&#xff0c;实际应用中的数据往往伴随着各种噪声&#xff0c;这些噪声不仅来源于数据采集过程中的硬件限制&#xff0c;还可能由环境干扰、传输错误等因素引入。噪声的存在严重影…

synchronized关键字详解(全面分析)

目录 synchronized关键字详解1、synchronized关键字简介2、synchronized作用和使用场景作用使用场景①、用在代码块上(类级别同步)②、用在代码块上(对象级别同步)③、用在普通方法上(对象级别同步)④、用在静态方法上(类级别同步)总结&#xff1a; 3、synchronized底层原理&am…

使用Gunicorn提高Web应用的多核并发处理能力

使用Gunicorn提高Web应用的多核并发处理能力 Web应用程序需要处理大量的并发请求&#xff0c;尤其在多用户访问的场景下&#xff0c;如何有效地利用服务器的多核处理能力是提升性能的关键之一。Gunicorn&#xff08;Green Unicorn&#xff09;作为一个Python WSGI HTTP服务器&…

【初阶数据结构】2.顺序表

文章目录 1.线性表2.顺序表2.1 概念与结构2.2 分类2.2.1 静态顺序表2.2.2 动态顺序表 2.3 动态顺序表的实现2.4 顺序表算法题2.4.1 移除元素2.4.2 删除有序数组中的重复项2.4.3 合并两个有序数组 2.5 顺序表问题与思考 1.线性表 线性表&#xff08;linear list&#xff09;是n…

大数据平台之HiveServer2

HiveServer2 是 Apache Hive 的一个重要组件&#xff0c;用于为客户端提供统一的接口来访问 Hive 数据仓库。它提供了一个 JDBC、ODBC 和 Thrift 接口&#xff0c;支持多种客户端连接方式&#xff0c;并增加了多用户隔离和增强的安全性。 HiveServer2 详细介绍 1. 背景与发展…

多线程链表操作设计

在多线程环境中操作共享的数据结构(例如链表),通常需要使用互斥锁(mutex)或其他同步机制来确保数据的一致性和防止竞态条件。然而,使用互斥锁会带来锁的开销和潜在的死锁问题。为了设计一个可重入并且高效的链表操作,可以考虑以下几种无锁或细粒度锁的设计方案。 1. 无锁…

第五十四章 生成的 WSDL 的详细信息 - portType

文章目录 第五十四章 生成的 WSDL 的详细信息 - portType<portType><message> 第五十四章 生成的 WSDL 的详细信息 - portType 在 <binding> 部分之前&#xff0c;WSDL 包含 <portType> 元素&#xff0c;每个元素通过为 <binding> 元素指定单个地…

Go 垃圾回收(GC)

之前自以为对Go语言的GC了如指掌&#xff0c;结果昨天被面试官疯狂拷打。于是有了这篇博客。 Go语言的GC主要有三个版本&#xff1a; v1.3 标记清除法v1.5 三色标记法 写屏障v1.8 混合写屏障 v1.3标记清除法 Go1.3的标记清除法是Go语言早期版本的垃圾收集策略。这种方法在…