MySQL-CRUD入门1

news2024/9/20 5:52:29

文章目录

    • 认识配置文件
      • client节点
      • mysql节点
      • mysqld节点
    • 数据的添加(Create)
      • 添加一行数据
      • 添加多行数据
      • 两种添加数据的效率对比
    • 数据的查询(Retrieve)
      • 全列查询
      • 指定列查询
      • 查询中带有表达式
        • 关于字面量
        • 关于as重命名
      • 临时表引入
      • distinct去重
      • order by 排序
        • 关于NULL

认识配置文件

在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就是下图中的my.ini文件, 原来的这个文件夹里面是有一个Data文件夹的, 里面存储的是s数据库数据, 我们通过修改配置文件的路径将其导入到了其他的盘里面去, 防止占用系统空间, 下文中有一些指南帮助我们完成这一操作
在这里插入图片描述
打开我们的my.ini文件, 这里我们打开的方式是通过vscode打开的, 也可以用其他的一些工具, 比如记事本打开, 但是就没有高亮显示了…

client节点

所有关于客户端的配置都在client节点下, 也就是说这个节点下的修改会对所有的客户端产生影响, 带exe文件的大部分都是客户端的相关文件, 如下图所示, 我们平时使用的mysql命令行窗口登录的时候用的就是图中的mysql.exe文件, 自己可以进行验证
在这里插入图片描述

在这里插入图片描述
这里要注意的是绿色的都是注释, client这个节点下的一些文件代表着所有客户端的配置, mysql的端口号是3306(默认的端口号), 端口号的可用的范围是1025-65535

mysql节点

这个节点下是一些指定客户端的配置, 比如这里的就是mysql这个客户端的相关配置, 这个节点下的配置只是针对mysql.exe这一个客户端程序的
在这里插入图片描述
当然你也可以创建一些针对其他客户端程序的配置, 方法与上面的创建指定客户端的方法是一样的…

mysqld节点

这个节点是控制着服务器端程序, 也就是mysqld程序在这里插入图片描述
这个程序就是跟mysql服务相关的, mysql服务启动这个程序就随之启动, 关闭就随之关闭, 所以这个节点的配置文件比较多, 我们下面只是简单的谈几个
在这里插入图片描述
端口以及数据存储位置
在这里插入图片描述
端口这里是用的默认端口, 上面的文件配置已经是修改过路径的结果了, 原来的数据路径是C盘(系统盘)下面的, 这里我们需要找到data文件夹, 然后复制到你要移动的其他文件夹当中, 然后修改这个路径就可以完成修改
存储引擎相关
在这里插入图片描述
存储引擎就是控制底层数据的存储的
日志相关
在这里插入图片描述
编码字符集
在这里插入图片描述
更新完配置文件之后就进行MySQL的重新启动(关闭服务之后再次开启)

数据的添加(Create)

不管是哪一种添加数据的方式,

添加一行数据

基础语法

  1. 插入指定的字段
insert into (表名) (字段名1,...)  values (字段1对应的值,...);
  1. 插入全部的字段(字段名称可以省略)
insert into (表名) values (字段1对应的值,...);

下面我们尝试执行下面的sql语句进行测试

-- 删除老的数据库
drop database if exists test_insert;
-- 创建新数据库
create database test_insert character set utf8mb4;
-- 使用该数据库
use test_insert;
-- 创建一张表
create table if not exists student(
    name varchar(50) comment '姓名',
    sex varchar(2) comment '性别',
    age int comment '年龄'
);

-- 单行指定列
insert into student (name, age) values ('john', 19);
-- 单行全列(type1不省略字段)
insert into student(name, sex, name) values ('max', '男', 18);
-- 单行全列(type2省略字段)
insert into student values ('amy', '女', 20);

-- 展示数据
select * from student;

通过source命令进行sql脚本文件的执行, 结果如下
在这里插入图片描述

添加多行数据

基础语法

-- 与单行插入基本上一模一样, 就是values后面的数据可以跟多个
insert into (表名) (字段名1,...)  values (字段1对应的值,...),(..),.;

在上面的基础上我们新添加几组数据进行测试

-- 删除老的数据库
drop database if exists test_insert;
-- 创建新数据库
create database test_insert character set utf8mb4;
-- 使用该数据库
use test_insert;
-- 创建一张表
create table if not exists student(
    name varchar(50) comment '姓名',
    sex varchar(2) comment '性别',
    age int comment '年龄'
);

-- 单行指定列
insert into student (name, age) values ('john', 19);
-- 单行全列(type1不省略字段)
insert into student(name, sex, age) values ('max', '男', 18);
-- 单行全列(type2省略字段)
insert into student values ('amy', '女', 20);

-- 多行指定列
insert into student (name, age) values ('huahua', 18), ('tiantian', 17);
-- 多行全列(type1不省略字段)
insert into student (name, sex, age) values ('xinle', '女', 18), ('chenjie', '女', 20);
-- 单行全列(type2省略字段)
insert into student values ('wuyu', '男', 19), ('meicile', '男', 21);

-- 展示数据
select * from student;

在这里插入图片描述

两种添加数据的效率对比

下面有一个问题, 到底是一次插入一条数据插入多次, 还是一次性的插入多条数据, 两种插入的方式哪一种效率高呢, 我们从下面的几个方面来考虑

  1. MySQL是通过网络进行连接的, 所以每次执行一条SQL语句的时候都有一定的网络开销, 每次向服务器发送请求和接收响应都是一个不可控的因素
  2. 输入输出方面的考虑, 每次插入数据的时候都有磁盘IO方面的开销
  3. 每次执行一条SQL语句都会开启一个事务, 事务的开启和关闭都需要消耗系统的资源-- 删除老的数据库

综上, 一次提交多条(在一个可控的范围内, 不能太多, 有时候网络都撑不住)比一次提交一条效率略高

数据的查询(Retrieve)

我们还是给出来下面的SQL代码来初始化一个数据表

-- 删除老的数据库
drop database if exists sel_test;
-- 创建新的数据库(建议指定字符集为utf8mb4)
create database sel_test character set utf8mb4;
-- 使用该数据库
use sel_test;
-- 创建数据表
create table if not exists exam(
    id bigint comment '学生编号',
    name varchar(20) comment '学生姓名',
    chinese decimal(4, 1) comment '语文成绩',
    math decimal(4, 1) comment '数学成绩',
    english decimal(4, 1) comment '英语成绩'
);

-- 插入多条数据用于测试
insert into exam (id, name, chinese, math, english) values
    (1, '唐三藏', 67.0, 98.0, 56.0),
    (2, '孙悟空', 87.5, 78.0, 77.0),
    (3, '猪悟能', 88.0, 98.0, 90.0),
    (4, '曹孟德', 82.0, 84.0, 67.0),
    (5, '刘玄德', 55.5, 85.0, 45.0),
    (6, '孙权', 70.0, 73.0, 78.5),
    (7, '宋公明', 75.0, 65.0, 30.0);

全列查询

基础语法

select * from (表名);

测试一下
在这里插入图片描述
全列查询的弊端
全列查询没什么可说的, 语法上非常简单, 但是在我们的生产环境中, 一般不会进行全列查询的操作, 或者说, 全列查询是一个非常危险的操作
因为在生产环境中,一个表中的数据量可能会很多很多,有可能达到TB级
1.当一个查询开始的时候,磁盘开销,会网络开销,都是非常紧缺的资源
2.如果这一条语句开始执行,那么就有可能把服务器资源吃光,其他的程序或是数据库操作就要等待当前SQL执行完之后才能继续执行
所以不加任何限制的查询在生产环境不要使用 ! ! !

指定列查询

基础语法

-- 其实就是把上面全列查询的 * 替换为了多种字段 字段1, 字段2 ...
select (字段1, 字段2,...) from (表名);

查询演示
在这里插入图片描述

查询中带有表达式

关于字面量

思考下面的SQL语句的执行结果

select id, name, math, 100 from exam;

效果就是在所有列的后面加入一个字面量100
在这里插入图片描述
所以我们可得, 对一种字面量的查询效果是在每一行都加上这个字面量

下面是单独的查询字面量的结果(直接展示结果)
在这里插入图片描述

关于as重命名

思考, 假设现在有这样一个需求, 我想让查询出来的学生的语文成绩 +10
那我们就需要执行下面的代码

select id, name, chinese + 10, math, english from exam;

在这里插入图片描述
我们还可以用as关键字(可以省略)对表达式重命名

select id, name, chinese + 10 as '语文成绩', math, english from exam;
注意 :
	这里的 ' ' 单引号如果重命名名称有空格的话无法省略,其余条件可省

在这里插入图片描述
下面考虑一个需求, 我们想知道每个人的总分, 我们就可以执行下面的语句

select id, name, chinese + math + english as 总分 from exam;

在这里插入图片描述

临时表引入

我们通过测试就可以发现, 其实查询的时候对结果的操作并不会真实的操作磁盘中保存的真实的数据, 是因为中间其实有临时表作为中间过渡, 其实有点类似于Java中的访问器方法与更改器方法的区别, 对于字符串类中的方法其实都是访问器方法不会更改真正的字符串(也就是字符串不可变)

distinct去重

这是一个进行去重操作的关键字, 对于一个查询的数据, 只有当所有的字段(查询的)都相同的时候才会进行去重, 其余条件是不会进行去重的
为了测试我们执行下面的操作

insert into exam values (8, '齐天大圣', 87.5, 78.0, 77.0);
select distinct chinese, math, english from exam;

在这里插入图片描述
说明我们的distinct对新添加的数据进行了去重

select distinct id, name, chinese, math, english from exam;

在这里插入图片描述
在这个语句中就不会对结果进行去重的操作

order by 排序

asc就是升序, desc就是降序, 不写默认降序
假如我们需要对数学成绩进行降序排列

select id, name, chinese, math, english from exam order by math desc;

在这里插入图片描述
对总分进行排序
在这里插入图片描述

关于NULL

关于NULL有下面几点需要注意

  1. NULL在排序中不论什么时候都是最小的
  2. NULL不论跟谁进行运算都是NULL
  3. NULL始终被判定为false
  4. NULL在其他编程语言中是默认值 ‘0’, 但是在MySQL中就是NULL

谢谢观看

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

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

相关文章

数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树

文章目录 树与二叉树的应用1.哈夫曼树与哈夫曼曼编码1.1 带权路径长度1.2 哈夫曼树1.2.1 哈夫曼树的构造1.3 哈夫曼编码 2.并查集2.1 并查集的三要素2.1.1 并查集的逻辑结构2.1.2 并查集的存储结构 2.2 并查集的优化2.2.1 初步优化(并操作优化)2.2.2 终极…

flink wordcount

Maven配置pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

mybatis-plus使用@EnumValue搭配shardingsphere报错“getObject with type”

目录 一、背景二、修改方案三、如何让修改的TypeHandler生效1、在TableField中配置TypeHandler2、考虑直接在TypeHandlerRegistry注册该枚举的handler为自定义的handler处理类。3、不止重写MybatisEnumTypeHandler&#xff0c;还重写CompositeEnumTypeHandler类3.1、修改Compos…

【WPF】桌面程序开发之xaml页面主题和样式详解

使用Visual Studio开发工具&#xff0c;我们可以编写在Windows系统上运行的桌面应用程序。其中&#xff0c;WPF&#xff08;Windows Presentation Foundation&#xff09;项目是一种常见的选择。然而&#xff0c;对于初学者来说&#xff0c;WPF项目中xaml页面的布局设计可能是一…

Bat的退役前

我们很讨厌bat 语法这版的命令形式后缀尽管古老&#xff0c;可是在涉及细微VS 项目op 时候&#xff0c;它起到了不可忽视且非它不行的效应 我们不想替历史背上厚重的学习包袱&#xff0c;可是我们能忽视BAT 吗 如若进入到 无window时代&#xff0c;我们几乎得全然依仗BAT专家。…

35天学习小结

距离上次纪念日&#xff0c;已经过去了35天咯 算算也有5周了&#xff0c;在这一个月里&#xff0c;收获的也挺多&#xff0c;在这个过程中认识的大佬也是越来越多了hh 学到的东西&#xff0c;其实也没有很多&#xff0c;这个暑假多多少少还是有遗憾的~ 第一周 学习了一些有…

【计算机组成原理】详细解读带符号整数的原码表示法

带符号整数的表示——原码 导读一、有符号整数的存储结构二、有符号整数的表现形式三、原码3.1 原码与真值之间的转换3.2 原码的运算3.3 原码的优缺点 结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 在上一篇内容中我们介绍了无符号…

828华为云征文|基于华为云Flexus云服务器X搭建jumpserver堡垒机软件

文章目录 ❀前言❀jumpserver堡垒机概述❀环境准备❀部署说明❀在线安装❀浏览器访问❀资产添加❀资产授权❀资产登录❀总结 ❀前言 近期华为云推出了最新的华为云Flexus云服务器X&#xff0c;这款云主机在算柔性算力做出了重大变革。华为云Flexus云服务器X基于擎天QingTian架…

Xilinx FPGA 原语解析(二):IBUFDS差分输入缓冲器(示例源码及仿真)

目录 前言&#xff1a; 一、原语使用说明 二、原语实例化代码模版 三、使用示例 1.设计文件代码 2.仿真文件代码 3.仿真结果 前言&#xff1a; 本文主要参考资料xilinx手册&#xff0c;《Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for…

LeetCode 热题 100 回顾1

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

【Python 千题 —— 算法篇】词频统计

Python 千题持续更新中 …… 脑图地址 👉:⭐https://twilight-fanyi.gitee.io/mind-map/Python千题.html⭐ 题目背景 在日常开发和文本处理工作中,单词计数是一个非常基础但又极为重要的操作。无论是统计一篇文章的词频,还是分析一段文本的关键词,单词计数都起着关键作用…

Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能

文件预览功能是提升用户体验的重要部分,尤其是在文档管理系统中。本文将带你逐步实现如何在 Spring Boot 项目中集成 MinIO(一个对象存储系统)与 KKFileView(一个开源文件预览工具),以实现对各种类型文件的在线预览 项目准备 Java 11+ Spring Boot MinIO 服务器 KKFileV…

C语言 ——— 带副作用的宏参数

目录 带有副作用的代码 带有副作用的宏参数 结论 带有副作用的代码 代码演示&#xff1a; int a 10;int b a; 副作用解析&#xff1a; 变量 a 在赋值给 b 之前 a 的值自增了1&#xff0c;那么 int b a; 这条代码就带有副作用 带有副作用的宏参数 代码演示&#xff1a…

学会收纳,对“衣服山”说再见,我推荐你读这4本书

面对日积月累形成的“衣服山”&#xff0c;我们还是会经常苦恼“没有衣服穿”&#xff0c;主要原因是我们出门前&#xff0c;很难用手边的衣服对相应的场合进行搭配。 我们的衣柜存在这样一个怪圈&#xff1a;衣柜里的衣服不断增加&#xff0c;尽管数量多&#xff0c;但是“能…

CSS —— display属性

用于指定一个元素在页面中的显示方式 HTML中标签元素大体被分为三种类型&#xff1a;块元素、行内元素和行内块元素 块元素 &#xff1a;block 1.独占一行 2.水平方向&#xff0c;占满它父元素的可用空间&#xff08;宽度是父级的100%&#xff09; 3.垂直方向&#xff0c;占据的…

如何使用QT完成记事本程序的UI界面布局

每日QT技巧查询表-CSDN博客 会持续更新记事本编写的全部过程&#xff0c;关注不迷路 一、相关控件 ①水平和垂直布局 ②按键 ③文本框 ④水平弹簧 ⑤标签 ⑥Widget 二、控件使用方法 1、PushButton 拖出三个按键&#xff0c;并对其进行命名&#xff0c;两处地方命名可以不一…

亚马逊IP关联及其解决方案

在电子商务领域&#xff0c;亚马逊作为全球领先的在线购物平台&#xff0c;吸引了众多商家和个人的参与。然而&#xff0c;随着业务规模的扩大&#xff0c;商家在使用亚马逊服务时可能会遇到IP关联的问题&#xff0c;这不仅影响账户的正常运营&#xff0c;还可能带来一系列不利…

频谱图在频率为0附近有较大幅度,这是为什么

如下图所示&#xff0c;很明显看出&#xff0c;相比于其他频率段&#xff0c;在频率为0Hz左右&#xff0c;其幅值幅度较大。这是为什么呢&#xff1f; 在频谱图中&#xff0c;频率为0 Hz附近的幅值较大&#xff0c;通常意味着信号中存在较强的低频成分或直流分量&#xff08;D…

春日美食:基于SpringBoot的在线订餐系统

1 绪论 1.1 研究背景 随着互联网技术的快速发展&#xff0c;网络时代的到来&#xff0c;网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合[13]。电子商务必将成为未来商务的主流&#xff0c;因此对于餐饮行业来说&#xff0c;…

【动手学深度学习】05 线性代数(个人向笔记)

1. 线性代数 向量的一些公式 ∣ ∣ a ∣ ∣ ||a|| ∣∣a∣∣ 表示向量 a 的范数&#xff0c;课上没有讲范数的概念 其中第一条为求向量的二范数 第四条表示如果a为标量&#xff0c;那么向量 ∣ ∣ a ⋅ b ∣ ∣ ||ab|| ∣∣a⋅b∣∣ 的长度等于 ∣ a ∣ ⋅ ∣ ∣ b ∣ ∣…