MySQL学习笔记2——基础操作

基础操作

  • 一、增删改查
    • 1、添加数据
    • 2、删除数据
    • 3、修改数据
    • 4、查询语句
  • 二、主键
  • 三、外键和连接
    • 1、外键
    • 2、连接

一、增删改查

1、添加数据

INSERT INTO 表名[(字段名[,字段名])] VALUES (值的列表);
--[]表示里面的内容可选

添加数据分为插入数据记录和插入查询结果

插入数据记录
如果一个字段约束条件为空或者是主键约束有自增,那么在添加数据记录时可以不给它赋值,其他的情况一定要给其赋值。

如果要将一个字段改为非空约束,那么必须先检查已有的数据记录中这个字段是否为空,将为空的记录删除之后再进行改为非空约束的操作。

部分插入一条数据记录是可以的,前提是没有赋值的字段,一定要让MySQL知道如何处理,比如可以为空、有默认值,或者是自增约束字段等等,否则MySQL会提示错误的。

--插入数据
INSERT INTO demo.campus
(
name,
age,
gender
)
VALUES
(
'Mark',
20,
'男'
);
--将字段name修改为非空约束
UPDATE campu SET name = '' WHERE name IS NULL;
ALTER TABLE campus MODIFY name varchar(50) NOT NULL;

插入查询结果
MySQL支持把查询的结果插入到数据表中,我们可以指定字段,甚至是数值,插入到数据表中。语法结构如下:

INSERT INTO 表名(字段名)
SELECT 字段名或值
FROM 表名
WHERE 条件

2、删除数据

删除数据的语法:

DELETE FROM 表名
WHERE 条件--删除campus表里的所有内容
DELETE FROM demo.campus;

MySQL有一种安全性设置,主要就是为了防止删除或者修改数据时出现误操作,导致删除或修改了不相关的数据。
如对数据的删除或修改操作中必须包含WHERE条件。而且这个WHERE条件中,必须用到主键约束或者唯一性约束的字段。

3、修改数据

UPDATE 表名
SET 字段名=WHERE 条件

4、查询语句

语法结构:

SELECT *|字段列表
FROM 数据源
WHERE 条件
GROUP BY 字段	--经常与MySQL聚合函数一起使用
HAVING 条件		--用于筛选查询结果,跟WHERE类似
ORDER BY 字段
LIMIT 起始点,行数

FROM后面括号中的叫派生部分或子查询,必须给这个派生表用AS取一个别名。举例如下:

SELECT a.goodsname,price
FROM (
SELECT * 
FROM demo.goodsmaster
) AS a;

二、主键

设置数据表主键的三种方式:数据表的业务字段做主键、添加自增字段
做主键,以及添加手动赋值字段做主键。

  • 用业务字段做主键,看起来很简单,但是我们应该尽量避免这样做。因为我们无法预测未来会不会因为业务需要,而出现业务字段重复或者重用的情况。
  • 自增字段做主键,对于单机系统来说是没问题的。但是,如果有多台服务器,各自都可以录入数据,那就不一定适用了。因为如果每台机器各自产生的数据需要合并,就可能会出现主键重复的问题。
  • 我们可以采用手动赋值的办法,通过一定的逻辑, 确保字段值在全系统的唯一性,这样就可以规避主键重复的问题了。

刚开始使用MySQL时,很多人都很容易犯的错误是喜欢用业务字段做主键,想当然地认为了解业务需求,但实际情况往往出乎意料,而更改主键设置的成本非常高。

所以,如果你的系统比较复杂,尽量给表加一个字段做主键,采用手动赋值的办法,虽然系统开发的时候麻烦一点,却可以避免后面出大问题。

三、外键和连接

在MySQL中,为了把2个表关联起来,会用到2个重要的功能:外键(FOREIGN KEY)和连接(JOIN) 。外键需要在创建表的阶段就定义;连接可以通过相同意义的字段把2个表连接起来,用在查询阶段。

1、外键

假设我们有2个表,分别是表A和表B,它们通过一个公共字段" id " 发生关联关系,我们把这个关联关系叫做R。

如果" id " 在表A中是主键,那么,表A就是这个关系R中的主表。相应的,表B就是这个关系中的从表,表B中的"id" ,就是表B用来引用表A中数据的,叫外键。

所以,外键就是从表中用来引用主表中数据的那个公共字段。
在这里插入图片描述
在MySQL中,外键是通过外键约束来定义的。外键约束就是约束的一种,它必须在从表中定义,包括指明哪个是外键字段,以及外键字段所引用的主表中的主键字段是什么。
MySQL系统会根据外键约束的定义,监控对主表中数据的删除操作。如果发现要删除的主表记录,正在被从表中某条记录的外键字段所引用,MySQL就会提示错误,从而确保了关联数据不会缺失。

--创建表时定义外键约束
CREATE TABLE 从表名
(
字段名 类型,
……
--定义外键约束,指出外键字段和参照的主表字段
CONSTRAINT 外键约束名
FOREIGN KEY (字段名) REFERENCES 主表名 (字段名)
)--通过修改定义外键
ALTER TABLE 从表名 ADD CONSTRAINT 约束名 
FOREIGN KEY 字段名 REFERENCES 主表名 (字段名)

2、连接

在MySQL中,有2种类型的连接,分别是内连接(INNER JOIN)和外连接(OUTER JOIN)

  • 内连接表示查询结果只返回符合连接条件的记录,这种连接方式比较常用;
  • 外连接则不同,表示查询结果返回某一个表中的所有记录,以及另一个表中满足连接条件的记录。

内连接

在MySQL里面,关键字JOIN、INNER JOIN、CROSS JOIN的含义是一样的,都表示内连接。我们可以通过JOIN把两个表关联起来,来查询两个表中的数据。

外连接
跟内连接只返回符合连接条件的记录不同的是,外连接还可以返回表中的所有记录,它包括两类,分别是左连接和右连接。

  • 左连接,一般简写成LEFT JOIN,返回左边表中的所有记录,以及右表中符合连接条件的记录。
  • 右连接,一般简写成RIGHT JOIN,返回右边表中的所有记录,以及左表中符合连接条件的记录。
--内连接
SELECT 字段名
FROM 表名 AS a
JOIN 表名 AS b
ON (a.字段名=b.字段名);--左外连接
SELECT 字段名
FROM 表名 AS a
LEFT JOIN 表名 AS b
ON (a.字段名=b.字段名);

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

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

相关文章

AI+BI,欢迎数据分析进入大模型时代

过去一年大模型应用集中爆发,中关村科金作为领先的对话式AI技术解决方案提供商,基于各个行业真实的业务痛点,围绕营销、服务与运营场景,创新打造和升级了知识助手、投顾助手、智能陪练等大模型应用,全面赋能客户经理展…

【INNODB引擎篇】深奥探究Innodb存储引擎

🔥作者主页:小林同学的学习笔录 🔥mysql专栏:小林同学的专栏 目录 1.InnoDB引擎 1.1 逻辑存储结构 1.2 架构 1.2.1 概述 1.2.2 内存结构 1.2.3 磁盘结构 1.2.4 后台线程 1.3 事务原理 1.3.1 事务基础 1.3.2 redo log 1.…

鸿蒙TypeScript学习第12天【Map对象】

1、TypeScript Map 对象 Map 对象保存键值对,并且能够记住键的原始插入顺序。 任何值(对象或者原始值) 都可以作为一个键或一个值。 Map 是 ES6 中引入的一种新的数据结构,可以参考gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 2、创…

【架构-九】数据库反规范化设计

什么是反规范化设计? 反规范化是指为了提高数据库的性能或满足特定需求而向数据库中增加冗余数据的过程。与数据库规范化设计正好相反,反规范化的目的是减少查询的复杂度,加快数据检索的速度。主要的反规范化手段如下: 优点&am…

YOLOv8打印模型结构配置信息并查看网络模型详细参数:参数量、计算量(GFLOPS)

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

Python3.7编程之病毒

基础篇 什么是病毒 病毒,指的是一些通过非法手段获取系统的一些权限,然后进行破坏或者盗取。 病毒分为两类: 1、破坏型 这类病毒往往会将系统弄的乱七八糟,比如把你的U盘删光,把你的系统背景调成黑客图片&#xff0c…

python 的join函数

join函数是一个对字符串处理的函数 字符串.join(str)的含义是把字符串加入到str的每一个间隙里面 如 str1234 ,.join(str) #打印的结果为 1,2,3,4

类和对象【一】类和对象简介

文章目录 C的类与C语言结构体的区别【引入类】类的定义类体中的成员函数的实现类中的访问限定符C中class和struct的区别 类的作用域类的实例化类中成员的存储位置类的大小 C的类与C语言结构体的区别【引入类】 类里面不仅可以定义变量还可以定义函数 例 类具有封装性【将在该…

abap 字符超过255的显示

大家都知道SAP ALV的一个单元格最大显示的长度就是255 意思就是你的这个字段在内表里面即使是超过255位,也无法只能显示255 如果客户的需求是需要看到完整的消息内容, 最简单的就是将整个程序的数据右键导出到excle中去查看 如果客户执意需要在ALV中…

python+django教师业绩考评考核评分系统flask

在设计过程中,将参照一下国内外的一些同类网站,借鉴下他们的一些布局框架,将课题要求的基本功能合理地组织起来,形成友好、高效的交互过程。开发的具体步骤为:   第一步,进行系统的可行性分析&#xff0c…

佛山市人工智能产业生态交流会:实在智能Agent引领“智造浪潮”

制造业,实体经济的核心,技术创新的先锋,供给侧结构性改革的关键。在新一轮产业竞争中,数字化转型成为制造业升级的必由之路,是引领未来的重要抓手。 为促进数字经济赋能实体经济,加快人工智能技术的推广应用…

汇编入门--基础知识(1)

1.汇编语言的概念 汇编语言是一种低级编程语言,它与计算机的机器语言非常接近,但比机器语言更易于人类阅读和理解。汇编语言是用一系列的助记符来表示机器语言的操作码和操作数。每种计算机体系结构(如x86、ARM等)都有自己的汇编语…

CCD机器视觉在工业生产中起到什么作用?

CCD机器视觉尺寸测量是基于相对测量方法,通过可追溯性、放大校准、自动边缘提升和屏幕图像测量来计算实际尺寸。在精密测量中,放大倍数必须达到35倍或更高,才能达到微米级的精度。此时,视线宽度小于5mm。对于大于5mm的物体&#x…

小型时间继电器ST3PA-C DC24V 带插座PF085A 导轨安装 JOSEF约瑟

ST3P系列时间继电器 系列型号 ST3PF-2Z(JSZ3F-2Z) 5s AC110V ST3PF(JSZ3F) 10s AC48V ST3PC-1(AH3-3) 5s DC24V ST3PC-1(AH3-3) 2h AC220V ST3PC-F(JSZ3C-F) AC380V ST3PA-E(JSZ3A-E) DC24V ST3PA-F(JSZ3A-F) DC24V ST3PF(JSZ3F) 10s AC36V ST3PC-1(AH3-3) 10s AC24V ST3PC-1…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: (电源)插座(电器上的)插口,插孔,管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

【算法】求{1,2,3}序列的全排列,邻里交换法(Java)

【算法】求{1,2,3}序列的全排列,邻里交换法(Java) 代码如下: public class Main{static int count;static int a[] {1,2,3};public static void main(String[] args) {f(a,0);System.out.println(count);}p…

MAC苹果电脑如何使用Homebrew安装iperf3

一、打开mac终端 找到这个终端打开 二、终端输入安装Homebrew命令 Homebrew官网地址:https://brew.sh/ 复制这个命令粘贴到mac的终端窗口,然后按回车键 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/in…

未来汽车硬件安全的需求(1)

目录 1.概述 2.EVITA 2.1 EVITA HSM 2.2 EVITA保护范围 3.市场变化对车载网络安全的影响 3.1 非侵入式攻击的风险 3.2 量子计算机的蛮力攻击 3.3 整车E/E架构的变化 3.4 网络安全标准和认证 3.5 汽车工业的网络安全措施 4.汽车安全控制器 4.1 TPM2.0 4.2 安全控…

数据分析案例(一):地区收入的PCA主成分分析

练习1 地区收入的PCA主成分分析 0.变量说明 1.导包操作 核心思路:导入基础数据操作库包,PCA、k-means 库包,数据可视化库包 import pandas as pd import numpy as np from sklearn.decomposition import PCA from sklearn.preprocessing i…

Go语言中channel和互斥锁的应用场景

面对一个并发问题,我们的解决方案是使用channel还是互斥锁来实现并不总是很清晰。因为Go提倡使用通信来共享内存,所以一个常见的错误就是总是强制使用channel,不管实际情况如何。但是我们应该把这两种选择作为互补手段。 首先,简单回顾一下Go语言中的channel:channel是一种交…