MySQL、创建数据库、表、SQL 函数:数学函数、字符串函数、日期函数、聚合函数

news2025/3/31 19:01:44

DAY18.1 Java核心基础

MySQL

创建数据库

数据库是一个服务,实际开发需要根据具体的项目创建对应的数据库实例

create database mytest1 default character set utf8 collate utf8_general_ci;
create database mytest2 default character set utf8 collate utf8_bin;	

collate 设置数据库的校验字符集:如何给数据库中的数据进行排序,不在 SQL 中添加任何排序语句的情况下,默认的排序值

utf8_general_ci:不区分大小写

utf8_bin:区分大小写

现在将a和B插入到两个数据库的users表中,两个表中的字段都是a和B,现在我们来查询试试

use mytest1;
insert into users(name) VALUES('a');
insert into users(name) VALUES('B');

image-20250327160108825

mytest1:a B

mytest2:B a

use mytest1;
SELECT * FROM users ORDER BY name;

mytest1结果:

image-20250327160326793

mytest1 校验字符集不区分大小写,所以 B 排在 a 后面

use mytest2;
SELECT * FROM users ORDER BY name;

mytest2结果:
image-20250327160310299

mytest2 校验字符集区分大小写,所以比较的是字母的二进制编码,

二进制编码中

B:66

a:97

默认是升序排列,所以越小的排在前面,所以 B a

创建数据表

create table 表名(字段列表);
-- 示例:
create table users(
	name varchar(20)
);

MySQL 中的数据类型

整数类型:tinyint(1 个字节 byte)smallint(2 个字节)mediumint(3 个字节)int(4 个字节)bigint(8 个字节)

浮点类型:float(4 个字节)double(8 个字节)

定点类型:decimal(M,D) M 数字的最大值(精度)D 小数点后数字的长度(标度)

日期和时间类型:datetime、date、timestamp、time、year

  1. year:1 个字节,取值范围:1901~2155
  2. time:3 个字节,取值范围:-838:59:59 ~ 838:59:59 负数是因为它可以表示时间间隔
  3. date:3 个字节,取值范围:1000-01-01 ~ 9999-12-31
  4. datetime:8 个字节,取值范围:1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
  5. timestamp:4 个字节,表示 1970 年 1 月 1 号到现在的毫秒数
  6. 字符串类型:char(M) M 个字节、varchar(M) M+1 个字节、text(M) M + 2 个字节
  7. 二进制类型:bit、binary、varbinary、tinyblob、blob、mediumblob、longblob
  8. bit(M) M 个字节
  9. binary(M) M 个字节
  10. varbinary(M) M 个字节
  11. tinyblob 255 个字节
  12. blob 2^16-1 个字节
  13. mediumblob 2^24-1 个字节
  14. longblob 2^32-1 个字节

创建数据库

1、创建数据库

create database 数据库名 default character set utf8 collate utf8_general_ci;

2、删除数据库

drop database 数据库名;

3、查看数据库

show databases;	

4、选择数据库(在需要操作数据的时候选择一个数据库操作,不然不知道你要操作哪一个数据库)

use 数据库名;

5、创建数据表

create table 数据表名(字段列表);
-- 示例:
create table users(
	name varchar(20)
);

6、删除数据表

drop table 数据表名;

7、查看数据表

show tables;

8、查看表结构

desc 数据表名;

9、修改表结构

  • 新增一个字段

    -- 在student表中新增一个字段sex varchar(2)类型
    alter table student add sex varchar(2);
    
  • 修改一个字段

    -- 修改student表中的sex字段,改为字段名为gender int类型
    alter table student change sex gender int;
    
  • 删除一个字段

    -- 删除student表中的gender字段
    alter table student drop gender;
    

SQL 函数

SQL 提供了很多函数,可以完成很复杂的功能

业务尽可能使用 Java 来完成,SQL 一般只负责对数据的管理

MySQL 本身是一种检索机制,消耗很多资源

SQL 只是针对查询出来的结果进行了处理,而不会影响到原数据的值

数学函数

abs() 求绝对值

select abs(score) from student;

image-20250327161251828

返回结果

image-20250327161306408

floor() 返回小于参数的最大整数(分数是90.1,返回的是90)

select floor(score) from student;

ceil() 返回大于参数的最小整数(分数是90.1,返回的是91)

select ceil(score) from student;
字符串函数

insert(s1,index,len,s2)

s1 中 index 位置开始,长度为 len 的字符替换成 s2,index 从 1 开始

select insert(name,1,2,"小红") from student;

upper()、ucase() 将字母变为大写

select ucase(name) from student;
select upper(name) from student;

lower()、lcase() 将字母变为小写

select lower(name) from student;
select lcase(name) from student;

left(s,len) 返回 s 字符串的前 len 个字符

select left(name,1) from student;

right(s,len) 返回 s 字符串的后 len 个字符

select right(name,2) from student;

substring(s,index,len) 截取 s 字符串,从 index 位置开始,长度为 len

select substring(name,2,1) from student;

reverse() 反序输出

select reverse(name) from student;
日期函数

curdate() current_date() 获取当前日期

select current_date();

curtime() current_time() 获取当前时间

select current_time() from student;

now() 获取当前日期+时间

select now();

datediff(d1,d2) d1 和 d2 之间相隔的天数

select datediff("2024-05-01","2021-06-23");

adddate(d,n) 返回 d 日期之后 n 天的日期

select adddate("2024-05-01",1000);

subdate(d,n) 返回 d 日期之前 n 天的日期

select subdate("2024-05-01",1000);
聚合函数

count() 根据某个字段统计数量

select count(id) from student;

sum() 计算某个字段值的总和

select sum(score) from student;

avg() 求某个字段值的平均值

select avg(score) from student;

max() 求某个字段的最大值

select max(score) from student;

min() 求某个字段的最小值

select min(score) from student;

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

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

相关文章

关于我对接了deepseek之后部署到本地将数据存储到mysql的过程

写在前面 今天写一下使用nodejs作为服务端,vue作为客户端,mysql的数据库,对接deepseek的全过程,要实现一个很简单的效果就是,可以自由的询问,然后可以将询问的过程存储到mysql的数据库中。 文档对接 deeps…

23种设计模式-策略(Strategy)设计模式

策略设计模式 🚩什么是策略设计模式?🚩策略设计模式的特点🚩策略设计模式的结构🚩策略设计模式的优缺点🚩策略设计模式的Java实现🚩代码总结🚩总结 🚩什么是策略设计模式…

vue ts+Windi CSS

1、创建vue项目 trae(字节)打开一个空文件夹 npm install -g vue/cli vue create my-project cd my-project vue add typescript npm run serve vue项目创建完成 2、安装windicss vue add windicss vue.config.js配置 npm install vue-router …

Angular由一个bug说起之十五:自定义基于Overlay的Tooltip

背景 工具提示(tooltip)是一个常见的 UI 组件,用于在用户与页面元素交互时提供额外的信息。由于angular/material/tooltip的matTooltip只能显示纯文本,所以我们可以通过自定义Directive来实现一个灵活且功能丰富的tooltip Overlay…

GPT-SoVITS本地部署:低成本实现语音克隆远程生成音频全流程实战

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 今天要给大家安利一个绝对能让你大呼过瘾的声音黑科技——GPT-SoVITS!这款由花儿不哭大佬精心打造的语音克隆神…

Flutter视频播放优化

在Flutter中实现流畅视频播放,选择合适的播放器插件是关键。推荐使用以下两类插件: 跨平台低延迟方案 flutter_vlc_player:基于VLC引擎,支持RTSP/RTMP协议,通过hwAcc: HwAcc.full启用硬件加速,配合setOpti…

嵌入式学习第二十八天--顺序栈

栈的基本代码 栈是限定仅在表尾进行插入和删除操作的线性表。 先进后出、后进先出 栈顶:允许操作的一端 栈底:不允许操作的一端 入栈,出栈。 顺序栈 链式栈 302\5 1.创建 CreateSeqStack 2.销毁 DestroySeqStack 3.判断是否为空栈 IsEmptySeqStack 4.判断是否为满…

基于MCP协议的多模态模型优化在医疗3D打印精密人工关节制造中的研究

一、引言 1.1 研究背景与意义 在全球人口老龄化趋势愈发明显的当下,诸如骨关节炎、类风湿性关节炎这类关节疾病的发病率不断攀升,进而使得人工关节置换手术的需求呈现出激增态势。人工关节置换手术作为治疗终末期关节疾病的有效手段,能够显著缓解患者疼痛,提升关节功能与生…

【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典

更新日期:2025年3月26日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…

MATLAB绘图配色包说明

本栏目将分享MATLAB数据分析图表,该贴讲述配色包的使用 将配色包colormap_nclCM文件夹添加到路径close all(尽量不要删),使用map colormap(nclCM(309))时会多出来一张空白图片。配色资源来自slandarer;找不到合适颜色…

8路CXP相机采集系统介绍

8xCXP相机采集系统介绍 目录 1 系统概述 4 2 硬件架构 5 2.1 FPGA处理单元 5 2.2 CXP接口层 6 2.3 CXP相机说明与使用要求 7 2.4 SSI控制器板 8 3 FPGA方案 9 3.1 FPGA实现 9 3.2 Block Design说明 10 4 软件方案 14 4.1 嵌入式层 14 4.2 上位机软件(C…

Stable Diffusion 基础模型结构超级详解!

1. Transformer 第一个只用 Attention 机制来解决序列到序列问题的模型,最早被 Google 用来解决翻译问题 对于中英翻译而言,需要解决三个具体的问题: 如何用数字表示中文和英文 如何让神经网络理解语义 如何让神经网络生成英文 1.1 Tok…

【Linux网络(七)】数据链路层

目录 1、认识MAC地址 2、 mac帧格式 3、局域网的通信原理 4、ARP协议 浏览器输入url1后发生的事情:(面试题) 数据链路层解决的是:直接相连的主机(不仅仅包括电脑,还包括路由器)之间&#x…

2025年渗透测试面试题总结-某奇安信-Ateam(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 奇安信-Ateam 一、SQL注入攻防技术体系 1.1 SQL注入类型矩阵(基于利用方式) …

Windows 10 ARM64平台MFC串口程序开发

Windows 10 IoT ARM64平台除了支持新的UWP框架,也兼容支持老框架MFC。使得用户在Windows 10 IoT下可以对原MFC工程进行功能升级,不用在新框架下重写整个工程。熟悉MFC开发的工程师也可以在Windows 10 IoT平台下继续使用MFC进行开发。 本文展示MFC串口程序…

31天Python入门——第16天:模块与库详解

你好,我是安然无虞。 文章目录 Python模块模块之间的调用 Python包库的概念Python标准库安装第三方库 \_\_name\_\_ \_\_main\_\_ Python模块 在 Python 中, 模块是一个包含函数、变量和类等代码定义的py文件. 所以也可以说, 普通的py文件就是一个模块. 模块可以…

设计模式(创建型)- 原型模式

目录 定义 类图 角色 优缺点 优点 缺点 应用场景 案例展示 浅克隆 深克隆 定义 原型模式旨在创建重复的对象,同时确保良好的性能表现。它通过复制现有对象(原型)来创建新对象,而非使用传统的构造函数创建方式。这种设计…

【Linux】应用层协议 HTTP

应用层协议 HTTP 一. HTTP 协议1. URL 地址2. urlencode 和 urldecode3. 请求与响应格式 二. HTTP 请求方法1. GET 和 POST (重点) 三. HTTP 状态码四. HTTP 常见报头五. 手写 HTTP 服务器 HTTP(超文本传输协议)是一种应用层协议,用于在万维网…

数据可视化TensorboardX和tensorBoard安装及使用

tensorBoard 和TensorboardX 安装及使用指南 tensorBoard 和 TensorBoardX 是用于可视化机器学习实验和模型训练过程的工具。TensorBoard 是 TensorFlow 官方提供的可视化工具,而 TensorBoardX 是其社区驱动的替代品,支持 PyTorch 等其他框架。以下是它…

【Hugging Face 开源库】Diffusers 库 —— 扩散模型

Diffusers 的三个主要组件1. DiffusionPipeline:端到端推理工具__call__ 函数callback_on_step_end 管道回调函数 2. 预训练模型架构和模块UNetVAE(Variational AutoEncoder)图像尺寸与 UNet 和 VAE 的关系EMA(Exponential Moving…