数据库(3)--针对列的CRUD操作

1.Create 新增

语法:

insert into 表名 (列名)values (列)...

创建一个学生表用于演示:

create table if not exists student(
id bigint comment '编号',
name varchar(20) comment '姓名'
);

1.1直接增加

insert into student values (1,'张三');

不在into 与 表名间声明列名

1.2声明增加单列

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

 1.3声明增加多列

 

insert into (id,name) values (1,'张三'),(2,'李四');

2.Retrieve 检索

语法:

SELECT
[ DISTINCT ]
select_expr [, select_expr ] ...
[ FROM table_references ]
[ WHERE where_condition ]
[ GROUP BY { col_name | expr }, ...]
[ HAVING where_condition ]
[ ORDER BY { col_name | expr } [ ASC | DESC ], ... ]
[LIMIT {[ offset ,] row_count | row_count OFFSET offset }]

 功能较多,我们一个一个介绍

2.1select

先介绍普通查询

2.1.1全列查询

 

select * from 表名;

能打印出表中存储信息

注意desc tables;是打印表的属性 

2.2.2指定列查询 

select id from 表名;

 

在指定列查询时,可以对打印的数据进行微调,具体是:

对数据进行运算(即表达式)

对属性起别名

 2.2.2.1对数据进行运算
select id+1 from student;

也可以把类型相同的属性相加 :

select id+id from student;

2.2.2.2 对属性起别名
select id+id as 表达式 from student;

 加上as 后跟别名(as也可以省略)

 

2.2.3结果去重查询 

语法:

select distinct 列名/* from 表名;

有 重复:

 使用去重查询后:

注意:只有全部属性都相同才会去重 

2.2 where条件查询

 语法:

select * from 表名 where 判断条件;

2.2.1比较运算符

运算符说明
>,    >=,    <,    <=
使用与其他语言无异
=

既可以赋值又可以判断是否相等

但是不可以判断null是否等于null

<=>专门用于null=null  返回值为1/0
!=, <>
不相等
value BETWEEN a0 AND a1
[a0, a1]  如果在这个范围中就返回1
NOT BETWEEN则取反
value IN (option, ...)
如果value 在optoin列表中,则返回TRUE(1),NOT IN则取反
IS NULL
是null返回1
IS NOT NULL
不是null返回1
LIKE
模糊匹配,% 表⽰任意多个(包括0个)字符;
_ 表⽰任意⼀个字符
NOT LIKE则取反

2.2.2逻辑运算符

运算符说明
AND
多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR
任意⼀个条件为 TRUE(1), 结果为 TRUE(1)
NOT
条件为 TRUE(1),结果为 FALSE(0)

 2.3order by排序

语法:

SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | 
DESC], ... ;

-- ASC 为升序(从⼩到⼤)
-- DESC 为降序(从⼤到⼩)
-- 默认为 ASC

 

注意:

MYSQL中会自动排序,如果没有order by返回的顺序仅参考,不可信。

如果比较对象中有null,默认null是最小的值(比所有数都小,包括负数)

order by 中可以使用别名

如:

这是因为order by 是对select后的对象排序,在select中起的别名可以在order by 中识别

但是where不可以,因为where是先判断再select 

2.4 分页查询

语法:

-- 起始下标为 0
-- 从 0 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从 start 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start, num;
-- 从 start 开始,筛选 num 条结果,⽐第⼆种⽤法更明确,建议使⽤
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;

作用:可以搭配order by排序成对取出前几个

3.Update修改

语法:

UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]

例如: 

注意:

不加where条件时,会导致全表数据被列新,谨慎操作 

4.Detele删除 

语法:

DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] 

比如:

注意:

执⾏Delete时不加条件会删除整张表的数据,谨慎操作 

 5.截断表

语法:

TRUNCATE [TABLE] 表名;

可以快速将整个表清空 

说明:

只能对整表操作,不能像 DELETE ⼀样针对部分数据
不对数据操作所以⽐DELETE更快,TRUNCATE在删除数据的时候,不经过真正的事物,所以⽆法回滚
会重置AUTO_INCREMENT 项

6. 插入查询结果

语法:

INSERT INTO table_name [(column [, column ...])] SELECT ...;

例如: 将  去重后  的表的原表互换 并保留原表

create table student_new like student;
insert into student_new (name,id,math,english)select distinct name,id,math,english from student;rename table student to student_new, student_new to student;

 7.聚合函数

函数说明
COUNT([DISTINCT] expr)
返回查询到的数据的 数量
SUM([DISTINCT] expr)
返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)
返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)
返回查询到的数据的 最⼤值,不是数字没有意义
MIN([DISTINCT] expr)
返回查询到的数据的 最⼩值,不是数字没有意义

例子:

select count(*) from student;
select count(math) from student where math >50;
select sum(math) from student;
select avg(math) from student;
select min(math) from student where math>70;
select min(math),max(math) from student;

8.Group by 分组查询

将有相同属性的对象分组,便于集中统计计算与分析

语法:

SELECT {col_name | expr} ,... ,aggregate_function (aggregate_expr)FROM table_referencesGROUP BY {col_name | expr}, ... [HAVING where_condition]

 例如:

select role,ROUND(avg(salary),1) from cmp group by role;
select role,count(salary) from cmp where salary>1000.00 group by role;
-- 3                        1       2                        4         

上面的数字是执行顺序   group by也可以使用别名

但是正因为where比group by先执行,所以无法对分组后的数据进行判断

MYSQL中引入了having关键字专门用于解决此问题

8.1having子句

例如:

select role,ROUND(avg(salary)) from cmp group by role having ROUND(avg(salary))>1000.00;
Having 与Where 的区别
Having ⽤于对分组结果的条件过滤
Where ⽤于对表中真实数据的条件过滤

9.内置函数 

9.1日期函数

函数说明
CURDATE()
返回当前⽇期,同义词 CURRENT_DATE CURRENT_DATE()
CURTIME()
返回当前时间,同义词 CURRENT_TIME CURRENT_TIME([fsp])
NOW()
返回当前⽇期和时间,同义语 CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
DATE(data)
提取date或datetime表达式的⽇期部分
ADDDATE(date,INTERVAL exprunit)
向⽇期值添加时间值(间隔),同义词 DATE_ADD()
SUBDATE(date,INTERVAL exprunit)
向⽇期值减去时间值(间隔),同义词 DATE_SUB()
DATEDIFF(expr1,expr2)
两个⽇期的差,以天为单位,expr1 - expr2
select curdate();
select curtime();
select now();
select date(now());
select adddate(curdate(),interval 31 day);
select subdate(curdate(),interval 1 month);
select datediff(curdate(),subdate(curdate(),interval 1 month));

9.2字符串处理函数

select name,char_length(name),length(name) from cmp;

select concat(name,'的工资为:',salary) as 工资 from cmp;

 

select concat_ws(',',name,ROUND(salary)) as 工资 from cmp;

 拼接后的字符串⽤逗号隔开

 

select lcase('ABC');

 

select ucase('abc');

9.3数学函数 

函数
ABS(X)
返回X的绝对值
CEIL(X)
返回不⼩于X的最⼩整数值,同义词是 CEILING(X)
FLOOR(X)
返回不⼤于X的最⼤整数值
CONV(N,from_base,to_base)
不同进制之间的转换
FORMAT(X,D)
将数字X格式化为“#,###,###”的格式。##',四舍五⼊到⼩数点后D位,并以字符串形式返回
RAND([N])
返回⼀个随机浮点值,取值范围 [0.0, 1.0)
ROUND(X), ROUND(X,D)
将参数X舍⼊到⼩数点后D位
CRC32(expr)
计算指定字符串的循环冗余校验值并返回⼀个32位⽆符号整数

例如:

select ROUND(RAND(),6);

 

select CRC32('MYSQL');

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

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

相关文章

【设计模式-1】软件设计模式概述

1. 软件设计模式的产生背景 “设计模式”这个术语最初并不是出现在软件设计中&#xff0c;而是被用于建筑领域的设计中。 1977 年&#xff0c;美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大&#xff08;Christopher Alexander&#xff09;在…

Python爬虫基础——认识网页结构(各种标签的使用)

1、添加<div>标签的代码定义了两个区块的宽度和高度均为100px&#xff0c;边框的格式也相同&#xff0c;只是区块中显示的内容不同&#xff1b; 2、添加<ul>和<ol>标签分别用于定义无序列表和有序列表。<il>标签位于<ul>标签或<ol>标签之…

Spring boot接入xxl-job

Spring boot接入xxl-job 导入maven包加入配置增加配置类创建执行器类&#xff08;写job的业务逻辑&#xff09;去控制台中配置job 导入maven包 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…

去掉el-table中自带的边框线

1.问题:el-table中自带的边框线 2.解决后的效果: 3.分析:明明在el-table中没有添加border,但是会出现边框线. 可能的原因: 由 Element UI 的默认样式或者表格的某些内置样式引起的。比如,<el-table> 会通过 border-collapse 或 border-spacing 等属性影响边框的显示。 4…

空间不足导致Oracle集群内存使用率暴增

一、现象 操作系统内存使用率告警&#xff0c;已达到98%,&#xff0c;告警内容如下&#xff1a; 【全景监控&#xff1a;Oracle主机内存使用监控】 【主机名】&#xff1a;XXXXX11 【主机IP】主机IP&#xff1a;*.126.15 【告警内容】当前内存使用率为98.9%&#xff0c;超警…

spark汇总

目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例&#xff08;并行化创建&#xff09;代码示例&#xff08;读取外部数据&#xff09;代码示例&#xff08;读取目录下的所有文件&#xff09; 算子DAGSparkSQLSparkStreaming…

React中的合成事件

合成事件与原生事件 区别&#xff1a; 1. 命名不一样&#xff0c;原生用纯小写方式&#xff0c;react用小驼峰的方式 原生&#xff1a;onclick React的&#xff1a;onClick 2. 事件处理函数的写法不一样 原生的是传入一个字符串&#xff0c;react写法传入一个回调函数 3.…

CSS——26. 伪元素2(“::before ,::after”)

::before伪类 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>伪元素</title><style type"text/css">div::before{content: "我最棒";}}</style></head><body><!--…

Openssl1.1.1s rpm包构建与升级

rpmbuild入门知识 openssh/ssl二进制升级 文章目录 前言一、资源准备1.下载openssh、openssl二进制包2.安装rpmbuild工具3.拷贝源码包到SOURCES目录下4.系统开启telnet&#xff0c;防止意外导致shh无法连接5.编译工具安装6.补充说明 二、制作 OpenSSL RPM 包1.编写 SPEC 文件2.…

patchwork++地面分割学习笔记

参考资料&#xff1a;古月居 - ROS机器人知识分享社区 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分内容&#xff1a;提出了以下四个部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪声消除 (RNR)&#xff…

基于Spring Boot的海滨体育馆管理系统的设计与实现

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨体育馆管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 宠物医院…

通过Android Studio修改第三方jar包并重新生成jar包

最近接手了来自公司其他同事的一个Unity项目,里面有一个封装的jar包要改动一下,无奈关于这个jar包的原工程文件丢失了,于是自己动手来修改下jar包,并做下记录。 一、导入第三方jar包 1、新建项目EditJarDemo(项目名随便取) 2、新建libs文件夹,把你要修改的third.jar 复制…

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备&#xff0c;它们主要处理数据的转换、信号的传输与接收&#xff0c;而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡&#xff08;N…

flink的EventTime和Watermark

时间机制 Flink中的时间机制主要用在判断是否触发时间窗口window的计算。 在Flink中有三种时间概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在数据抵达算子产生的时间&#xff08;Flink默认使用ProcessTime&#xff09; IngestionT…

Ubuntu 下测试 NVME SSD 的读写速度

在 Ubuntu 系统下&#xff0c;测试 NVME SSD 的读写速度&#xff0c;有好多种方法&#xff0c;常用的有如下几种&#xff1a; 1. Gnome-disks Gnome-disks&#xff08;也称为“Disks”&#xff09;是 GNOME 桌面环境中的磁盘管理工具&#xff0c;有图形界面&#xff0c;是测试…

SpringBoot之核心配置

学习目标&#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

后端服务集成ElasticSearch搜索功能技术方案

文章目录 一、为什么选用ElasticSearch二、ElasticSearch基本概念1、文档和字段2、索引和映射3、倒排索引、文档和词条4、分词器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高扩展性、高可用①高性…

【JavaEE进阶】获取Cookie/Session

&#x1f340;Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

《Spring Framework实战》3:概览

欢迎观看《Spring Framework实战》视频教程 Spring Framework 为基于现代 Java 的企业应用程序提供了全面的编程和配置模型 - 在任何类型的部署平台上。 Spring 的一个关键要素是应用程序级别的基础设施支持&#xff1a;Spring 专注于企业应用程序的 “管道”&#xff0c;以便…

借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换

在当今数字化浪潮下&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术日新月异&#xff0c;广泛渗透到城市规划、地质勘探、文化遗产保护等诸多领域。而 GISBox 作为一款功能强大且易用的 GIS 工具箱&#xff0c;以轻量级、免费使用、操作便捷等诸多优势&#xff0c;为…