数据库相关-mysql

这篇博客主要介绍了MySQL的配置、SQL操作技巧,包括单表查询、多表连接以及事务处理的基本概念和示例,同时提到了阿里巴巴的数据连接池相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

主要关于mysql相关的一些知识

一、配置
mysql://127.0.0.1:3306/ftp_server?connectTimeout=1000&useSSL=false&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC
二、SQL相关
(1)单表相关

1、将所有数据按时间段进行分组统计条数,例:
求出1-3年以及3-5年数据注册的用户总数

SELECT create_time_temp,count(*) as total from (
	SELECT create_time,
	CASE
	WHEN create_time > DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN '1年以内'
	WHEN create_time > DATE_SUB(NOW(), INTERVAL 3 YEAR) AND create_time <= DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN '1-3年'
	WHEN create_time > DATE_SUB(NOW(), INTERVAL 5 YEAR) AND create_time <= DATE_SUB(NOW(), INTERVAL 3 YEAR) THEN '3-5年'
  ELSE '8年以上'
END as create_time_temp
from `test`
)t_test GROUP BY create_time_temp;

2、排序

order by asc : 正序(默认) 从小到大 
order by desc : 逆序 从大到小

例:以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

搜索结果如下:

CompanyOrderNumber
deepwise2356
deepwise6953
alibaba3532

注意:在以上的结果中有两个相等的公司名称 (deepwise)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。

3、关于字符匹配

LIKE '_eorge' : 匹配查找第一个任意字符,后面为eorge
LIKE '[ALN]%' : 匹配以字符 A 或 L 或 N 开头的 
LIKE '[!ALN]%' : 匹配不以字符 A 或 L 或 N 开头的 

4、关于范围匹配

(1)between and

where id between 1 and 7 : 表示id存在于该区间情况, 不同数据库对于该操作支持是不一样的,闭合区间可能不一致,[1,7],(1,7],[1,7),(1,7)都有可能,注意区分。
where id not between in 1 and 7 :表示id不在这区间,范围闭合情况同上。

(2)使用 <(小于)、 >(大于)、 <>(不等于)

由于每个数据库对于 `between and` 支持不一致,所以最好还是使用 >、<、<> 用于区间判断比较合适。

5、关于null

查找name为空数据

SELECT name
FROM user
WHERE name IS NULL;

6、关于时间

(1)Date函数

函数描述
now()返回当前时间
curdate()返回当前日期
curtime()返回当前时间
date()提取日期或者日期/时间表达式的日期部分
extract()返回日期/时间的单独部分
date_add()向日期添加指定的时间间隔
date_sub()向日期减去指定的时间间隔
datediff()返回两个日期之间的天数
date_format()用不同的格式显示日期/时间

(2)Date数据类型

DATE - 格式:YYYY-MM-DD
DATETIME - 格式:YYYY-MM-DD HH:MM:SS
TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
YEAR - 格式:YYYY 或 YY

7、sql约束

(1)创建约束,可以在建表的时候创建字段相关约束。
(2)删除约束,任何现有约束都可以通过在 ALTER TABLE 命令中指定 DROP CONSTRAINT 选项的方法删除掉。

例:要去除 EMPLOYEES 表中的主键约束,可以使用下述命令:

ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK;

说明:某些数据库实现允许禁用约束。这样与其从数据库中永久删除约束,你可以只是临时禁用掉它,过一段时间后再重新启用。

(2)多表相关

1、连接

内部连接:inner join、join

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;

注释:如果表中至少有一个匹配项,INNER JOIN 关键字将返回一行。如果 “Customers” 表中的行与"Orders" 不匹配,则不会列出行。

左连接:left join、left outer join

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

注释:LEFT JOIN 关键字返回左表(Customers)中的所有行,即使在右边表(Orders)中没有匹配。

右连接:right join、right outer join

SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

注释:RIGHT JOIN 关键字返回右表(Employees)的所有行,即使在左表(Orders)中没有匹配。

完整外部连接:full outer join

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

注意: FULL OUTER JOIN关键字返回左表(Customers)中的所有行,以及右表(Orders)中的所有行。如果 "Customers"中的行中没有"Orders"中的匹配项,或者"Orders"中的行中没有 "Customers"中的匹配项,那么这些行也会列出。 FULL OUTER JOIN可能会返回非常大的结果集!

自然连接

SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City 
ORDER BY A.City;

连接总结:

inner join:如果表中有至少一个匹配,则返回行
left join:即使右表中没有匹配,也从左表返回所有的行
right join:即使左表中没有匹配,也从右表返回所有的行
full join:只要其中一个表中存在匹配,则返回行

(3)事务

事务具有四个标准特性,通常使用ACID来表示

  • 原子性:保证任务中的所有操作都执行完毕;否则,事务会在出现错误时终止,并回滚之前所有操作到原始状态。
  • 致性:如果事务成功执行,则数据库的状态得到了进行了正确的转变。
  • 隔离性:保证不同的事务相互独立、透明地执行。
  • 持久性:即使出现系统故障,之前成功执行的事务的结果也会持久存在。
三、alibaba连接池相关
相关配置参数解释 : https://blog.youkuaiyun.com/shenzhennba/article/details/20855149
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值