当前位置: 首页 > news >正文

Mysql(三)---增删查改(基础)

文章目录

  • 前言
  • 1.补充
    • 1.修改表名
    • 1.2.修改列名
    • 1.3.修改列类型
    • 1.4.增加新列
    • 1.5.删除指定列
  • 2.CRUD
  • 3.新增(Create)
    • 3.1.单行插入
    • 3.2.指定列插入
    • 3.3.多行插入
  • 4.数据库的约束
    • 4.1.约束的分类
    • 4.2.NULL约束
    • 4.3.Unique约束
    • 4.4.Default 默认值约束
    • 4.5.PRIMARY KEY:主键约束
    • 4.6.FOREIGN KEY 外键约束


前言

上一篇我们学习了数据库的基础操作,这一篇我们学习数据库的增删改查等一系列操作


1.补充

首先要对上一篇表的操作,在进行一次扩充—修改表

1.修改表名

语法:

ALTER TABLE 旧表名 RENAME 新表名;

例如
创造一个student的表

create table student(id bigint,name varchar(50)
);

然后在把student表名改为stu;

alter table student rename stu;

1.2.修改列名

ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;

例如把stu表中的id字段改为stu_id

alter table stu change column id  stu_id bigint;

在这里插入图片描述

1.3.修改列类型

ALTER TABLE 表名 MODIFY 列名 新类型;

例如把stu的stu_id类型改写成int

alter table stu modify stu_id int;

在这里插入图片描述

1.4.增加新列

语法

ALTER TABLE 表名 ADD COLUMN 新列名 类型;

例如:把stu表中添加分数这一列

alter table stu add column score int;

在这里插入图片描述

1.5.删除指定列

ALTER TABLE 表名 DROP COLUMN 列名;

例如,把stu表中的score成绩删除

alter table stu drop column score;

在这里插入图片描述


2.CRUD

注释:在SQL中可以使用“–空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写


3.新增(Create)

语法

INSERT [INTO] table_name
[(column [, column] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value, [, value]...

3.1.单行插入

语法

insert into  表名[(字段1,字段2)] values (,);

或者

insert into 表名 values (,,...);

例如:
首先在test中建立student表,包含id和name字段
然后插入(1,‘张三’);

insert into student(id,name) values(1,"张三");

在这里插入图片描述
其中

select * from student;

属于查询语句,下一篇博客再讲,大家可以用这个先去查询表名中所有的信息

如果一不小心,字段名和值没有用一一对应的话
在这里插入图片描述
例如再插入一条数据(2,“李四”)

insert into student values(2,'李四');

在这里插入图片描述

3.2.指定列插入

语法:

insert into 表名(字段) values();

例如:
在student中加入一条数据,王五,没有编号

insert into student(name) values('王五');

在这里插入图片描述

3.3.多行插入

insert into 表名 [(指定列...)] values ([,...]) [,([,...])] [,([,...])]...;

例如插入三条数据,分别是小红,小刚,小明,编号分贝为4,5,6

insert into student(id,name) values (4,'小红'),(5,'小刚'),(6,'小明');

在这里插入图片描述
一次插入一条数据和一次插入多条数据那个效率高?
1.执行所有的SQL时都有网络开销
2.写入数据是还会有磁盘IOde开销
3.每执行一条SQL语句都会开启一个事务,事务的开启和关闭都需要消耗系统资源
一次提交多条数据(在一个可控的范围之内),比一次提交提条数据效率高一点点


4.数据库的约束

在上面再添加王五数据的时候,没有添加id编号,造成了用null填充,但是在现实中,再添加王五数据的时候,一定有一个数字来代替id,如何进行操作呢,就要使用约束,进一步限制表的具体内容。

4.1.约束的分类

  • NOT NULL - 指示某列不能存储 NULL 值。
  • UNIQUE - 保证某列的每行必须有唯一的值。
  • DEFAULT - 规定没有给列赋值时的默认值。
  • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
  • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

4.2.NULL约束

NOT NULL - 指示某列不能存储 NULL 值。
在这里插入图片描述
那么我们再创建一个表,把id这一列变成非空约束

create database test1;
use test1;
create table student(id bigint not null ,name varchar(50)
);

在这里插入图片描述
在这里插入图片描述
此时,我们添加一条数据,王五,id为NULL
在这里插入图片描述

4.3.Unique约束

我们往上面的表中,添加三组数据,小明,小红,小刚,其中编号都为1
在这里插入图片描述
这样的操作会不会出现的,不可能一个编号多个人使用,因此为了这一特性,引用Unique约束

create database test2;
use test2;
create table student(id bigint unique,name varchar(50)
);

在这里插入图片描述
我们再次插入三组数据,小明,小红,小刚,其中编号都为1
在这里插入图片描述
就不让插入了,
但是如果编号都是NULL呢?
在这里插入图片描述
在这里插入图片描述

4.4.Default 默认值约束

在student中,如果一个学生名字不知道的话,我们使用‘无名氏’来代替。

create database test3;
use test3;
create table student(id bigint ,name varchar(50) default '无名氏'
);

在这里插入图片描述
我们这会只插入一条数据,只有id,没有姓名

insert into student(id) values(1);

在这里插入图片描述
如果插入的名字为NULL呢?

insert into student(id,name) values(2,NULL);

在这里插入图片描述

4.5.PRIMARY KEY:主键约束

PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。

在上面,我们发现id这个属性既属于NOT NULL又属于UNIQUE,因此可以使用PRIMARY KEY来代替

我们在创建一个student的表,使得其id为Primary key,sn(学号)以及name

create database test4;
use test4;
create table student(id bigint not null unique ,sn bigint unique,name varchar(50)
);

在这里插入图片描述
分别插入数据,1,1001,张三和NULL,1001,李四

在这里插入图片描述
发生了报错。
主键约束帮我们校验了非空和唯一,这两个校验在写入数据对效率是有一定影响的,但是比起不做校验来说,这个性能消耗还是可以承担的,为以后讲解索引起到作用
当然了,我们不想插入一条数据,就写编号,有什么别的方法,数据库自己生成一个编号,当然可以。

create database test5;
use test5;
create table student(id bigint primary key auto_increment,sn bigint unique,name varchar(50)
);

在这里插入图片描述
首先指定列插入
插入两条数据,1001,小红和1002,小明
在这里插入图片描述
那可不可以指定主键值呢?
可以的,只要主键值不重复
在这里插入图片描述
如果是插入的id为NULL呢?

在这里插入图片描述
继续加一
如果是上一条出错了,然后又插入一条数据,会发生什么现象呢?
在这里插入图片描述
其次还有一个表中只能有1个主键
但是一个主键可以有多个列共同组成(复合主键)

create database test6;
use test6;
create table student(id bigint,name varchar(50),mail varchar(50),primary key (id,name)
);

在这里插入图片描述

在这里插入图片描述
有效的解决了双胞胎,重名重姓的问题。

4.6.FOREIGN KEY 外键约束

FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。

创造两个表,满足下面的照片
在这里插入图片描述
我们发现,这两张表是通过班级编号连接起来的,为此我们引出FOREIGN KEY这一约束
语法:

foreign key (字段名) references 主表(列)

在这里插入图片描述

先设计班级class,在设计学生student

create database test7;
use test7;
create table class(id bigint primary key auto_increment,name varchar(50)
);
create table student(id bigint primary key auto_increment,name varchar(50),class_id bigint,foreign key (class_id) references class(id)
);

在这里插入图片描述
在这里插入图片描述
首先先写入class表中的数据

insert into class(name) values ('金工1班'),('金工2班'),('软工1班'),('软工2班'),('计算机应用与技术1班');

在这里插入图片描述

此时在向student中添加数据

insert into student(name,class_id) values ('张三',1),('李四',1),('小红',2),('小飞',3),('小刚',3);

在这里插入图片描述
插入成功
那么如果在student中插入一条class_id 和 id(class)不匹配的数据,会发生什么现象呢?
在这里插入图片描述
还有一个问题?
能否先删除class里面的数据,再删除student中的数据,
答案是不行的,
在这先把删除操作的代码写一下,下个博客再讲

delete from class where id = 1;

在这里插入图片描述
那么先删除student中的数据,再删除对应class的数据,那么就不会报错,例如
删除小红的数据,再删除对应class的数据

delete from student where name = '小红';
delete from class where id = 2;

在这里插入图片描述


下一篇博客,我们讲解查询,删除和查找操作,我们不见不散!

相关文章:

Mysql(三)---增删查改(基础)

文章目录 前言1.补充1.修改表名1.2.修改列名1.3.修改列类型1.4.增加新列1.5.删除指定列 2.CRUD3.新增(Create)3.1.单行插入3.2.指定列插入3.3.多行插入 4.数据库的约束4.1.约束的分类4.2.NULL约束4.3.Unique约束4.4.Default 默认值约束4.5.PRIMARY KEY:主键约束4.6.…...

Dialog实现原理分析

在 Android 中,对话框(Dialog)是一种非常常见的用户界面组件,用于向用户提供额外的信息或者请求用户的确认。Android 提供了几种不同类型的对话框,例如简单的消息对话框 (AlertDialog)、进度条对话框 (ProgressDialog)…...

21.1 基于Netty实现聊天

21.1 基于Netty实现聊天 一. 章节概述二. `Netty`介绍三. 阻塞与非阻塞1. 阻塞与非阻塞简介2. BIO同步阻塞3. NIO同步非阻塞4. AIO异步非阻塞IO5. 异步阻塞IO(用的极少)6. 总结四. Netty三种线程模型1. 单线程模型2. 多线程模型3. 主从线程模型五. 构建Netty服务器************…...

尼卡音乐 v1.0.5 — 全新推出的免费音乐听歌软件

尼卡音乐是一款全新推出的免费音乐听歌软件,无需注册登录,打开即拥有全部功能。聚合了六大音源曲库、歌单、排行榜,支持在线试听、无损下载以及高清MV播放。资源全、无广告、更新快,适合寻找高品质音乐体验的用户。 拿走的麻烦评…...

Scratch深潜:解锁递归与分治算法的编程之门

亮眼标题:“Scratch深潜:解锁递归与分治算法的编程之门” 在编程的世界里,递归和分治算法是解决问题的强大工具。Scratch,这款广受儿童和初学者欢迎的图形化编程语言,以其独特的拖拽式编程块,激发了无数年…...

【1.0】vue3的创建

【1.0】vue3的创建 【一】vue3介绍 vue2的所有东西,vue3都兼容 vue3中写js代码由两种,组合式和配置项 配置项api,就是vue2的写法,将数据放进data,方法放进methods等 export default{data(){return {}},methods:…...

刷刷前端手写题

闭包用途 闭包 闭包让你可以在一个内层函数中访问到其外层函数的作用域 防抖 描述 前面所有触发都被取消,最后一次执行,在规定时间之后才会触发,也就是说如果连续快速的触发,用户操作频繁,但只会执行一次 。 常用场…...

论文解读:LONGWRITER: UNLEASHING 10,000+ WORD GENERATION FROM LONG CONTEXT LLMS

摘要 现象:当前的大预言模型可以接受超过100,000个tokens的输入,但是却难以生成超过2000个token的输出。 原因:监督微调过程(SFT)中看到的样本没有足够长的样本。 解决方法: Agent Write,可以将长任务分解为子任务&a…...

一文了解Ansible原理以及常见使用模块

ansible使用手册 1. 简述 Ansible 是一种开源的自动化工具,主要用于配置管理、应用程序部署和任务自动化。 它使用简单的 YAML 语言来定义自动化的任务【playbook】,使得配置和部署变得更加直观和易于管理。 基于SSH协议连接到远程主机来执行指令。 2…...

JavaEE从入门到起飞(九) ~Activiti 工作流

工作流 当一道流程逻辑需要用到多个表单的提交和多个角色的审核共同完成的时候,就可以使用工作流。 工作流一般使用的是第三方技术,也就是说别人帮你创建数据库表和service层、mapper层,你只需要注入工具接口即可使用。 原理:一…...

微服务的保护

一、雪崩问题及解决方案 1.雪崩问题 微服务之间,一个微服务依赖多个其他的微服务。当一个微服务A依赖的一个微服务B出错时,微服务A会被阻塞,但其他不依赖于B的微服务不会受影响。 当有多个微服务依赖于B时,服务器支持的线程和并…...

2024前端面试题-网络篇

1.跨域问题 同源策略:需要协议、域名、端口号相同跨域原因:不符合同源策略便会产生跨域问题解决跨域:JSONP、配置代理、通过CORS解决 2.RPC和HTTP的区别 主要区别是序列化和反序列化,RPC通过二进制高效传输,HTTP是j…...

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector

1.杨辉三角 . - 力扣&#xff08;LeetCode&#xff09; 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 class Solution { public:vector<vector<int>> generate(int numRows) {vector<vector<int>> arr;int i 0;int j 0;for (i…...

设计模式---简单工厂模式

简单工厂模式&#xff08;Simple Factory Pattern&#xff09; 是一种创建型设计模式&#xff0c;它定义了一个工厂类&#xff0c;通过这个工厂类可以创建不同类型的对象。简单工厂模式的主要目的是将对象的创建逻辑集中在一个地方&#xff0c;简化客户端的代码&#xff0c;使得…...

Vue | Vue 中的 refInForde 用法

refInFor&#xff1a;如果你在渲染函数中给多个元素都应用了相同的 ref 名&#xff0c;那么 $refs.myRef 会变成一个数组。 vue中的refInFor属性是Vue框架中用于在循环渲染的元素上设置引用的一种方式。‌ 在Vue中&#xff0c;‌ref属性通常用于给元素或子组件注册引用信息&am…...

【原创】java+swing+mysql房屋租赁管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…...

Django 中render、redirect 和 HttpResponse的区别

在 Python 的 Web 框架 Django 中&#xff0c;render, redirect 和 HttpResponse 是用于处理 HTTP 响应的不同函数&#xff0c;它们各自有不同的用途&#xff1a; HttpResponse&#xff1a; HttpResponse 是 Django 中最基本的响应对象&#xff0c;用于返回给客户端的 HTTP 响应…...

CRYPTO 2020

分类文章编号安全模型1-6公钥加密,功能加密,见证加密7-12后量子密码13-20密码分析21-31最佳论文32-34多方安全计算35-49真实应用50-55零知识证明56-62格和相关难题63-68泄露和外包加密69-74非交互式零知识证明,共识和延迟函数75-79构建80-85Security Models 1. Handling Ad…...

java 函数接口Consumer简介与示例【函数式编程】【Stream】

Java 8 中的 消费者接口Consumer 是一个函数接口&#xff0c;它可以接受一个泛型 类型参数&#xff0c;它属于java.util.function包。我们来看看Java函数接口库中的定义&#xff1a; FunctionalInterface public interface Consumer<T> {/*** Performs this operation o…...

黑神话:悟空-配置推荐

显卡推荐&#xff08;按类别整理&#xff09; 1. GTX 10系列、GTX 16系列&#xff1a; 如果希望体验光线追踪&#xff0c;建议根据预算升级到RTX 40系列显卡。对于1080p分辨率&#xff0c;至少需要RTX 4060才能流畅运行。 2. RTX 20系列&#xff1a; RTX 2060、RTX 2070&#…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...