认真学SQL——MySQL入门之表中约束——约束数据的插入和删除

-- 1.主键约束 primary key

特点: 限制主键插入的数据不能为空,不能重复

建表的时候添加主键约束:  create table 表名(主键名 主键类型 primary key , 其他字段...);

注意: 一个表中只能有一个主键

--增
方式一:建表时(推荐使用)
create table stu1(
    id int primary key ,
    name varchar(100),
    age int
);
desc stu1;

方式二:建表后加
create table stu2(
    id int,
    name varchar(100),
    age int
);
alter table stu2 add primary key (id);
desc stu2;

-- 删

方式一:

使用change直接删除主键,非空和唯一约束都没有删除
alter table stu1 change id id VARCHAR(100);

方式二:

使用drop直接删除主键,只是把唯一键删除,不能为空的约束保留
alter table stu2 drop PRIMARY KEY;

再使用change删除非空约束
alter table stu2 change id id VARCHAR(100);

测试:

限制值不能为空,不能重复
insert into stu1(id,name) values (null,'张三'); # 报错Column 'id' cannot be null
insert into stu1(id,name) values (1,'张三'); # 成功
insert into stu1(id,name) values (1,'李四'); # 报错 Duplicate entry '1' for key 'PRIMARY'

-- 2.主键自动增长约束 auto_increment

特点: 默认从1开始,每次自动加1
注意: 如果插入数据的时候指定了id字段,可以使用null或者0占位表示自动使用自增

建表的时候添加主键自增约束:  create table 表名(主键名 主键类型 primary key auto_increment , 其他字段...);

-- 增

方式一:建表时
create table stu3(
    id int primary key auto_increment ,
    name varchar(100),
    age int
);
desc stu3;

方式二:建表后
create table stu4(
    id int primary key,
    name varchar(100),
    age int
);

alter table stu4 change id id int auto_increment;    #如果建表时没加主键可以在auto_increment前加primary key
desc stu4;

-- 删

结论: 如果想要删除主键和自增
1.先用change删除自增

alter table stu3 change id id int ;

2.再用drop删除主键中的唯一约束

alter table stu3 drop PRIMARY KEY ;

3.最后用change删除非空约束

alter table stu3 change id id int ;

-- 3.非空约束 not null

特点: 限制对应数据不能为空null

建表的时候添加非空约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 not null , 其他字段...);

注意: 一个表中可以有多个非空约束

-- 增

创建表
create table stu4(
    id int not null,
    name varchar(100) not null,
    age int
);

查看表结构
desc stu4;

添加非空约束
alter table stu4 change age age int not null;

-- 删

删除非空约束
alter table stu4 change age age int;

--4.唯一约束 unique

特点: 限制对应的数据不能重复

建表的时候添加唯一约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 unique, 其他字段...);

注意: 一个表中可以有多个唯一约束

创建表时设置
create table stu5(
    id int not null unique ,
    name varchar(100) unique ,
    age int
);

查看表结构
desc stu5;

-- 增

添加唯一约束(自动添加唯一索引,索引名就是字段名)
alter table stu5 change age age int unique ;

添加唯一索引(手动添加唯一索引,自定义索引名称)
create unique index age_index on stu5 (age);

-- 删

删除唯一约束(本质就是删除唯一索引)
drop index age on stu5;

删除唯一约束(本质就是删除唯一索引)
drop index age_index on stu5;

-- 5.默认约束 default

特点: 可以提前给字段设置默认值

建表的时候添加默认约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 default 默认值, 其他字段...);

注意: 一个表中可以有多个默认约束

-- 增

创建表时设置
create table stu6(
    id int primary key auto_increment,
    name varchar(100) default 'admin',
    pwd varchar(100) default '123456'
);

添加默认约束
alter table stu7 change name name varchar(100) default 'admin';
alter table stu7 change pwd pwd varchar(100) default '123456';

-- 删

删除默认约束
alter table stu7 change name name varchar(100);
alter table stu7 change pwd pwd varchar(100);

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

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

相关文章

网络通信(4)-数据链路层解析

目录 一、概念 二、数据链路层的作用 三、数据链路层的三个基本问题

YoloV7改进策略:AAAI 2024 最新的轴向注意力|即插即用,改进首选|全网首发,包含数据集和代码,开箱即用!

摘要 https://arxiv.org/pdf/2312.08866.pdf 本文提出了一种名为Multi-scale Cross-axis Attention(MCA)的方法,用于解决医学图像分割中的多尺度信息和长距离依赖性问题。该方法基于高效轴向注意力,通过计算两个平行轴向注意力之间的双向交叉注意力,更好地捕获全局信息。…

无人机集群反制与对抗技术探讨

源自:指挥与控制学报 作者:任 智 张 栋 唐 硕 王孟阳 李智军 “人工智能技术与咨询” 发布 摘 要 无人机集群系统是现代信息化战争体系对抗中重要的新质作战力量, 是未来网络化、智能化作战的关键发展方向. 随着无人集群系统装备实战化技术的…

第二十七章 正则表达式

第二十七章 正则表达式 1.正则快速入门2.正则需求问题3.正则底层实现14.正则底层实现25.正则底层实现36.正则转义符7.正则字符匹配8.字符匹配案例19.字符匹配案例211.选择匹配符(|)12.正则限定符{n}{n,m}(1个或者多个)*(0个或者多…

『华为云耀云服务器实战』|云服务器如何快速搭建个人博客(图文详解)

文章目录 引言一、云耀云服务器L实例介绍1.1 准备一个华为云耀云服务器1.2 重置实例密码1.3 利用xshell 远程连接 二、安装环境软件2.1 安装git准备远程拉取2.2 安装Docker 和 Docker compose 三、博客开源项目介绍3.1 操作界面展览 四、拉取项目搭建个人博客4.1 拉取项目进行配…

【linux kernel】linux的SPI框架分析

文章目录 一、linux内核中的SPI框架二、SPI核心的初始化三、SPI核心的数据结构1、struct spi_statistics2、struct spi_delay3、struct spi_device4、struct spi_driver5、struct spi_controller6、struct spi_res7、struct spi_transfer8、struct spi_message9、struct spi_bo…

CMake支持的编译平台和IDE

文章目录 简介支持的IDEVisual Studio支持示例 其他编译器和生成器支持MinGW示例 IDE集成Eclipse示例 实验性和特殊平台支持总结 简介 CMake是一个非常强大的跨平台自动化构建工具,它支持生成多种类型的项目文件,覆盖了广泛的开发环境和编译器。在这篇博…

基于PCA-WA(Principal Component Analysis-weight average)的图像融合方法 Matlab代码及示例

摘要: 高效地将多通道的图像数据压缩(如高光谱、多光谱成像数据)至较低的通道数,对提高深度学习(DL)模型的训练速度和预测至关重要。本文主要展示利用PCA降维结合weight-average的图像融合方法。文章主要参…

leetcode第206题反转链表❤

一:题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 题目链接:力扣(LeetCode)官网…

互补滤波简述

互补滤波也可以用来做IMU的姿态解算,它相比于卡尔曼滤波计算更简单,实时性更好,但精度不如卡尔曼滤波。 互补滤波的原理是利用了角度计算中加速度计和陀螺仪的特点,即加速度计长时间更准确,陀螺仪短时间更准确&#x…

【OpenCV】在MacOS上源码编译OpenCV

在MacOS上源码编译OpenCV 1. 下载项目源码2. 创建CMake编译文件3. 编译安装4. 案例测试5. 总结 前言 在做视觉任务时,我们经常会用到开源视觉库OpenCV,OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件…

js中函数动态调用

文章目录 一、场景二、方法2.1、动态函数2.2、eval()函数 三、最后 一、场景 在JS开发中,例如有些场景下,后端要求一个功能要请求不同的接口,但是传参及后续逻辑其实都是一样的,有些同学可能会想到在接口url处统一处理就好&#…

在 docker 容器中配置双网卡,解决通讯的问题

目录 1. 查看当前网络信息 2. 创建自定义网络 3. 查看网卡信息 4. 建立双网卡模式 5. 查看容器的网络 6. 从双网卡中删除默认网卡 已经创建好了的 Docker 容器,要修改它的IP比较麻烦,网上找了几种不同的方法,经过试验都没有成功&…

HeyGen怎么使用想使用高级功能如何订阅

HeyGen是一款AI视频工具,可以让用户轻松地用不同语言说话。 HeyGen是一个用于生成“虚拟化身(数字人)”视频的工具。 根据其官网的介绍,HeyGen可以通过文本生成视频,有不同的视频模板,可以定制化人物形象、…

Android Studio报错:connect refused

报错信息 解决办法:在System settings里取消代理,将HTTP Proxy设置为 No proxy 但是我发现我的还不行,还是报错,还是connect refused: 我发现虽然在System settings里已经取消代理,但实际项目运行时还是走…

鸿蒙原生应用/元服务开发-Serverless账户验证码的问题

在应用/元服务早期使用过程中,-Serverless账户验证码的格式是[AGC][应用/元服务名称],如下图。 但是,在最近,[应用/元服务]名称直接变成了【default】,用户收到这种验证码后,心里存有疑虑的,这是哪里配置…

OSG-渲染状态、纹理映射(一)

1、渲染状态 OSG 支持绝大部分的OpenGL固定功能管道(fixed function pipeline)渲染,如Alpha检验、Blending融合剪切平面、颜色蒙板、面选(face culling)深度和模板检验、雾效、点和线的光栅化(rasterization)等。OSG 的渲染状态也允许应用程序指定顶点着色(vertex shader)和片段…

墙裂分享的免费好用api接口

企业工商三要素核验 API:通过输入企业名称、法人、注册号 /组织机构代码 /统一社会信用代码,验证三者是否匹配一致。企业工商四要素核验:传入企业名称、社会统一信用代码、法人名称、法人身份证,校验此四项是否一致。空气质量查询…

Python 数据库(一):使用 mysql-connector-python 操作 MySQL 数据库

大家好,我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时,mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能,使您能够执行各种数据库操作,如连接数据库、执行查询和插入数据等。在本文…

【业务中台-上线总结篇】

上线总结篇:从项目切换、问题处理、项目总结、项目验收环节展开 一、项目切换: 在上一章我们提到有制定详细规划的切换计划,在实际切换过程中,我们也是严格按照既定时间节点进行。然而,及时再详情的计划,也…