当前位置: 首页 > news >正文

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

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;

相关文章:

  • 怎么使用pm2启动和暂停后端程序(后端架构nodejs+koa)
  • 【学Rust写CAD】14线性插值函数(加入color.rs)
  • Docker 快速入门指南
  • 【安全运营】关于攻击面管理相关概念的梳理(二)
  • Ubuntu 24.04 安装 Docker 详细教程
  • SQL server中的事务与锁
  • 华为HG532路由器RCE漏洞 CVE-2017-17215 复现
  • 批量给 PDF 页面添加超链接
  • Flink实战教程从入门到精通(基础篇)(五)Flink部署-YARN运行模式
  • 风险研究 | AI 安全警钟响起:Manus AI 漏洞暴露的背后真相
  • LeetCode 第36、37题(数独问题)
  • spring ApplicationContext 继承的这些接口作用,示例,表格对比
  • 华为单臂路由 与 策略路由
  • SpringCould微服务架构之Docker(4)
  • chrome插件开发之API解析-chrome.scripting.executeScript()
  • 基于网启PXE服务器的批量定制系统平台(详细版)
  • 智启人文新篇:生成式人工智能(GAI)认证驱动文科教育数字化转型与跨界融合
  • 2025-03-27 学习记录--C/C++-C语言 头插法插入单链表
  • Docker技术系列文章,第十篇——Docker 集群与编排(以 Kubernetes 为例)
  • mysql sql语句orderby,groupby优化
  • 网站建设优化外包/效果好的关键词如何优化
  • 怎么做网站黑链/太原百度seo排名软件
  • 免费制作头像的网站/网域名解析ip查询
  • 个体工商户经营范围网站开发/2021十大网络舆情案例
  • 西安建设工程信息网是谁开发的/360优化大师官网
  • 有源码就可以自己做H5网站吗/怎样推广产品