MySQL--增、删、改、查,

  • 数据库的概述、发展、现状、历史、分类

  • MySQL关系型数据库、架构(C/S)

  • window系统安装MySQL数据库

  • Linux系统【选学】

  • 数据库对象——数据库(database)

  • show、create、drop命令

  • 数据库对象——表(table)

  • 数据类型

  • 数据库表的约束

  • 表结构的调整(alter)

  • 数据库授权和权限管理(grant)

  • 数据库的编码情况【编码一致,建议统一采用utf8mb4】

今日目标

  1. 数据库的CRUD

  2. 单表的增删改查

  3. 多表的关联查询

SQL分类

  • DDL 数据定义语言 create drop

  • DML 数据管理语言 CRUD

    • 增删改 (更新)

    • DQL 数据查询语言

  • DCL 数据控制语言

DML语句

添加数据

insert指令

注意:SQL语句不区分大小写,也就是大小写一致!!

# 语法结构
insert into  表名称[(字段1 [,字段2, ……])] {values|value}(字段值, [……]) [,()];
​
​
# 注意:如果主键自增,可以使用null或者default关键字填充
# 其他字段,如果存在默认值,则使用default关键字填充
INSERT INTO t_user values(null, "刘建宏", 20, "陕西西安", "110", default);
# 也可以自己指定默认值存在项
INSERT INTO t_user values(7, "刘建宏", 20, "陕西西安", "110", 30);
​
INSERT INTO t_user value(8, "赵帅", 25, "陕西安康", "120", 25);
​
insert into t_user(name) values ("流川枫");

删除数据

DELETE指令

注意:where关键字,必须存在条件时才能出现

SQL中,单引号和双引号是一样的

delete from 表名称 [where 一个或者多个条件];

truncate指令

该指令也可以删除数据,注意:这种数据删除不通过数据字典,是无法恢复的,请慎用!!!!

主要使用场景:清除测试数据!!!!

增加数据

update指令

update 表名称 set 字段名称=新的值 [,字段=xxx [,……] [where 条件];

replace语句

replace语句结构和insert的语法结构一模一样

replace into 表名称[(字段1 [,字段2, ……])] {values|value}(字段值, [……]) [,()];
​

注意:replace 的sql语句,是集更新和插入于一体的一个SQL。

如果插入的数据不存在(主键、unqiue修饰的字段),执行insert执行

如果插入的数据存在(主键、unqiue修饰的字段),则先执行删除语句,再执行insert语句。

查询语句(select)

使用select查询数据库表中的某些数据。

select 语法结构

select {字段|函数|其他} from 表名称 [where]
​
​

select的特殊使用

select 可以用来计算数据,在开发中,如果数据类那些个不是数值,注意,从第一个位置它会尽可能转换为数值。

select 100 + 200;
​
select '100' + 200;
select '100' + '200';
​
select 100 + "刘建宏";
​
select 100 + "200刘建宏";
​
select 100 + "刘建宏200";
​
select 'a' + "b";   # 0
​
select null + 30 + '刘建宏';   # 只要其中一个为NULL,则结果为NULL
select也支持函数使用。select user();      # 查询当前登录用户
select database();  # 查询所属的数据库
select uuid()       # 生成一个UUID值, uuid值的特点是,永不重复的一个字符串
select查询数据select 字段  from 表名称
​
​
select * from user;
select id, name from user;
select id, name, gender, address, age from user;

早晨内容回顾

  1. 前三章的内容回顾

  2. 增删改查的基本语法

    insert into 表名称 values()

    delete from 表名称 [where 条件]

    truncate语句 truncate 表名称

    update 表名称 set 字段 = 新值 ,xxxx

    repalce into 表名称 values()

    select 表达式;

    select 函数()

    select {* | 字段名称 [, 字段名称..] } from 表名称

select条件查询
select * from t_user;
select id, name, age from t_user;
​
# 等值条件 =
select address from t_user where id = 1;
select age from user where name="刘建宏";
​
# 关系条件
-- >  <  >= <= != =   <>
​
​
# 判断是否为空
# is关键字  is null  is not null
select * from user where address is NULL;
select * from user where address is not NULL;
​
# <=> 符号
# 充当等号的作用
# 可以用来判断空
select * from user where age <=>18;
select * from user where gender <=> null;
​
# 多个条件
# 逻辑运算符 
# and   并且
# or    或者
# not   不是,取反
​
select * from user where age = 18 and gender = "男" and id > 10;
select * from user where age = 18 or gender = "女";
select name from user where gender is not null;
select name from user where not gender = "男";
​
# 范围
update user set age = 25 where id >= 6 and id <= 10;
update user set age = 16 where id between 12 and 15;select * from user where not (age < 20 or age > 25);# 注意:条件的执行顺序问题!!!select * from user where not age < 20 or age > 25;# 列举 in not inselect * from user where id in (1,3,8,10);select * from user where id not in (1,3,8,10);# 去重效果# 使用distinct关键字去掉重复值select distinct age from user;

日期的格式:使用字符串来表示

"yyyy-mm-dd"    如  '2000-03-30'
‘yyyy/mm/dd’    如   '2024/5/11'
'hh:mm:ss'      如   ‘12:12:21’
​
"yyyyy-mm-dd hh:mm:ss"  ‘2020-3-4 16:05:30’

模糊查询

使用like关键字进行模糊匹配

% 匹配0到多位

_ 匹配一个具体的位

select * from user where name like "%亮";
select * from user where name like "%亮%";
select * from user where name like "%张%";
select * from user where name like "张%";
​
# 表示第二个字是“绣”
select * from user where name like "_绣%";

正则查询
select * from user where name regexp "^张";
select * from user where name regexp "亮$";

复杂查询

分组查询

将数据相同的,会放在同一个组中,也就是,不会出现重复数据。往往是用来做数据分析。

select 字段
from  表名
[where 条件]
group by 字段 [, 字段 [,……]]
​

案例

-- 统计不同性别的人数
select count(gender), gender from user group by gender;
​
having语句

having语句,是配合分组使用,是分组后的筛选!!!!

select 字段
from  表名
[where 条件]
group by 字段 [, 字段 [,……]]
having 筛选条件

案例:

select gender, count(gender) from user group by gender having count(gender) > 8;
​
select gender, count(gender) from user where age >= 18 group by gender having count(gender) > 5;

聚会函数-count

统计数据

select count(id) from user;
select count(gender) from user;
select count(id) from user;
select count(1) from user;
select count(1) from user where gender="男";

排序

order by 字段 [{asc | desc }]

如果存在排序,必须是在分组之后

select 字段
from  表名
[where 条件]
[group by 字段 [, 字段 [,……]] ]
[having 筛选条件]
order by 字段 [{asc |  desc  }]  [, 字段 [{asc |  desc  }]]

案例

select * from user order by age ;
select * from user order by age desc;
select * from user order by age asc;
​
select * from user order by age , id desc;
​
别名的使用

别名(alias ),就是将原有名称,重新赋予一个新的名称

在查询SQL时,可以将查询的结果重新设置名称(字段、表名称)。

字段 as 别名 ,as可以省略

select count(*) as count from user;
​
select count(*) count from user;

分页查询

查询非常多,此时全部展示是不现实的,因此,需要通过分页展示部分数据

注意:不同的关系型数据库,实现分页效果,可能SQL不一样!!!

MySQL使用 limit关键字实现分页!!!

select 字段
from  表名
[where 条件]
[group by 字段 [, 字段 [,……]] ]
[having 筛选条件]
order by 字段 [{asc |  desc  }]  [, 字段 [{asc |  desc  }]]
​
limit num [, num2]; 

limit num :表示要截取num条数据。

limit num1, num2 :表示num1为起始位【从0开始】, num2表示一页共显示多少数据。

分页实现时的几个关键变量:

当前页:默认为1,用户决定这个值 pageNow

页面的条数:一般有开发者定义 pageSIze

共有多少页:这个是需要算出来 pageCount

总条数:查询得到 allCount

select * from user limit  pageSize * (pageNow - 1) , pageSize;

多表关联查询

为什么要设计多张表?不把数据存储在一张表上呢?

分表的必要性

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

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

相关文章

OFDM 802.11a的FPGA实现(十六)长训练序列:LTS(含Matlab和verilog代码)

目录 1.前言2.原理3.Matlab生成长训练序列4.硬件实现5.ModelSim仿真6.和Matlab仿真结果对比 原文链接&#xff08;相关文章合集&#xff09;&#xff1a; OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理&#xff0c;在构建整个802.11a OFDM数据帧的时…

Linux初学1

Unix unix和LInux的关系 LInux的吉祥物tux Nginx Directoryhttps://mirror.iscas.ac.cn/centos/7/isos/x86_64/redhat7 网络连接 桥接模式&#xff1a;虚拟系统可以和外部系统通讯&#xff0c; 你自家里折腾当然桥接没问题&#xff0c;如果一个教室里全都用桥接&#xff1…

fread fwrite fseek ftell使用

第一个案例 #include <stdio.h> #include <string.h>int main() {FILE *fp;char c[] "Thisisrunoob1";char buffer[20];/* 打开文件用于读写 */fp fopen("C:/Users/ACER/Desktop/rr.txt", "w"); /* 写入数据到文件 */fwrite(c, s…

2024年CSPM考试时间线梳理!

最近后台有朋友在问今年CSPM的考试安排&#xff0c;给大家整理一下&#xff0c;需要的朋友认真查看&#xff0c;不要错过考试。2024年5月12日举行了本年度第二次CSPM3级考试~接下来的考试安排如下&#xff1a; 1&#xff09;2024年CSPM考试安排 本次考试出成绩时间——2024年6…

go get和go get -u

在 Go&#xff08;Golang&#xff09;编程中&#xff0c;go get 和 go get -u 是用于管理依赖项和模块的命令。以下是每个命令的详细解释&#xff1a; go get 目的&#xff1a;go get 命令用于下载和安装 Go 项目所需的软件包和依赖项。它会获取指定的软件包及其依赖项。行为…

【大数据】计算引擎MapReduce

目录 1.概述 1.1.前言 1.2.大数据要怎么计算&#xff1f; 1.3.什么是MapReduce&#xff1f; 2.架构 3.工作流程 4.shuffle 4.1.map过程 4.2.reduce过程 1.概述 1.1.前言 本文是作者大数据系列专栏的其中一篇&#xff0c;专栏地址&#xff1a; https://blog.csdn.ne…

特征提取与深度神经网络DNN

OpenCV中的深度神经网络&#xff08;DNN&#xff09;模块&#xff0c;现在已经支持图像风格迁移、图像分类、对象检测、语义分割、实例分割、图像变换等。 只支持推理&#xff0c;不支持训练 支持主流的深度学习框架生成模型 推荐使用pytorch/onnx/tensorflow ResNet18的图像…

无代码无国界:我们正在走向软件安全的狂野西部吗?

我们使用的几乎所有东西都是基于代码构建的&#xff0c;从汽车到智能冰箱再到门铃。在企业中&#xff0c;无数的应用程序保持设备、工作流程和操作的运行。因此&#xff0c;当早期的无代码开发平台于 2010 年推出时&#xff0c;承诺为公民开发人员提供更易于访问的应用程序开发…

Redis加入系统服务,开机自启

vi /etc/systemd/system/redis.service i [Unit] Descriptionredis-server Afternetwork.target [Service] Typeforking #使用&#xff08;/usr/local/bin/redis-server&#xff09;运行&#xff08;/usr/local/src/redis-6.2.6/redis.conf&#xff09; ExecStart/usr/local/…

解决GitHub提交后不显示自己的头像 显示另一个没见过的账号?

问题说明 最近换了几台电脑开发项目&#xff0c;提交到github&#xff0c;看了下提交记录&#xff0c;怎么冒出来不是我的账号头像&#xff1f; 什么鬼i 原因分析 github是按照你注册时候填的邮箱来查找账号&#xff0c;并显示在提交记录上面的。如果账号找不到头像就出不来…

【Day3:JAVA运算符、方法的介绍】

目录 1、运算符1.1 赋值运算符1.2 比较运算符1.3 逻辑运算符1.3.1 逻辑运算符概述1.3.2 逻辑运算符分类1.3.3 短路的逻辑运算符 1.4 三元运算符1.5 运算符优先级 2、方法2.1 方法介绍2.2 方法的定义和调用格式2.2.1 方法的调用2.2.2 带参数方法的调用2.2.3 带返回值方法的调用2…

java如何处理大文件

Java中处理大文件时&#xff0c;通常需要采取一些特定的策略来避免内存溢出或性能问题。以下是一些处理大文件的建议&#xff1a; 使用流&#xff08;Streams&#xff09;&#xff1a; 使用InputStream和OutputStream的派生类&#xff08;如FileInputStream, BufferedInputStr…

具身智能论文(四)

目录 1. Alexa Arena: A User-Centric Interactive Platform for Embodied AI2. EDGI: Equivariant Diffusion for Planning with Embodied Agents3. Efficient Policy Adaptation with Contrastive Prompt Ensemble for Embodied Agents4. Egocentric Planning for Scalable E…

OceanBase集群如何进行OCP的替换

有OceanBase社区版的用户提出替换 OCP 管控平台的需求。举例来说&#xff0c;之前的OCP平台采用单节点&#xff0c;然而随着OceanBase集群的陆续上线和数量的不断增多&#xff0c;担心单节点的OCP可能面临故障风险&#xff0c;而丧失对OceanBase集群的管控能力。另此外&#xf…

掌握核心概念:Java高级面试难题精解(二)

Java 高级面试问题及答案 问题 1 **问题&#xff1a;**在Java中&#xff0c;HashMap和Hashtable有什么区别&#xff1f; 答案&#xff1a; HashMap和Hashtable都是实现了Map接口的类&#xff0c;用于存储键值对映射。主要区别在于&#xff1a; 线程安全性&#xff1a;Hasht…

so-vits-svc:AI翻唱,语音克隆

前言 这个项目是为了让开发者最喜欢的动画角色唱歌而开发的&#xff0c;任何涉及真人的东西都与开发者的意图背道而驰。 项目地址&#xff1a;https://github.com/svc-develop-team/so-vits-svc/blob/4.1-Stable/README_zh_CN.md 安装 可以自行配置&#xff0c;应该也不难 …

夯实spring(二十三): 父子容器

本文要点&#xff1a; 什么是父子容器为什么需要用父子容器父子容器如何使用 先来一个案例 系统中有2个模块&#xff1a;module1和module2&#xff0c;两个模块是独立开发的&#xff0c;module2会使用到module1中的一些类&#xff0c;module1会将自己打包为jar提供给module2…

Java05基础 数组

Java05数组 一、数组 数组指的是一种容器&#xff0c;可以用来存储同种数据类型的多个值。 1、数组的静态初始化 初始化&#xff1a;就是在内存中&#xff0c;为数组容器开辟空间&#xff0c;并将数据存入容器中的过程 1.1 数组定义格式 //格式一 数据类型[] 数组名 …

linux tar 压缩文件 排除对应的目录 exclude

有时候需要压缩多个目录,其中 有的目录中携带uploads 目录 如web里面有个uploads目录,我想要屏蔽掉 使用exclude 屏蔽目录 命令如下: tar -czvf archive.tar.gz --excludeweb/uploads/* --excludelogs/ web/ web1/* 错误的命令: tar -czvf archive.tar.gz --exclud…

rush 功能特性梳理

Rush 可以让 JavaScript 开发者更轻松地同时构建、发布多个 NPM 包&#xff0c;即将多个包或项目放到一个大仓库下管理。 仅需一次 NPM 安装 仅需一步&#xff0c;Rush 便可以将你项目的所有依赖安装到一个公共文件夹下&#xff0c;该文件夹并不像 “package.json” 一样位于项…