-
字符串函数:
CONCAT(str1, str2, ...)
: 将多个字符串拼接在一起。UPPER(str)
: 将字符串转换为大写。LOWER(str)
: 将字符串转换为小写。SUBSTRING(str, start, length)
: 返回字符串的子串。LENGTH(str)
: 返回字符串的长度。TRIM(str)
: 去除字符串两端的空格。REPLACE(str, old_substring, new_substring)
: 替换字符串中的子串。
-
数学函数:
ABS(num)
: 返回数字的绝对值。ROUND(num, decimals)
: 将数字四舍五入到指定的小数位数。CEIL(num)
: 返回不小于数字的最小整数值。FLOOR(num)
: 返回不大于数字的最大整数值。RAND()
: 返回一个随机数。
-
日期时间函数:
NOW()
: 返回当前日期时间。DATE_FORMAT(date, format)
: 格式化日期时间。YEAR(date)
: 返回日期的年份。MONTH(date)
: 返回日期的月份。DAY(date)
: 返回日期的天数。DATEDIFF(date1, date2)
: 计算两个日期之间的天数差。
-
聚合函数:
SUM()
: 计算总和。AVG()
: 计算平均值。COUNT()
: 计算行数。MIN()
: 返回最小值。MAX()
: 返回最大值。- GROUP BY '分组的属性': 用于将具有相同值的行组合在一起,以便对每个组执行聚合函数(如SUM、COUNT、AVG等)。它通常与聚合函数一起使用.
- ORDER BY '排序的属性' DESC:用于对查询结果按照指定的列进行排序(
DESC
关键字表示降序排序,即从大到小排列,ASC是默认升序写法:ORDER BY '排序的属性' ASC或ORDER BY '排序的属性' )。
5. 其他函数
1.STR_TO_DATE():字符串格式化为时间。(这个函数接受两个参数:第一个参数是要转换的字符串,第二个参数是字符串的格式。)。
2.DISTINCT: 去除SQL查询结果中的重复行。
说明: %Y
表示4位数的年份,%m
表示月份,%d
表示天,%H
表示时,%i
表示分钟,%s
表示秒
3.HAVING ‘条件’:用于对分组后的结果进行筛选。它通常与GROUP BY子句一起使用,用于指定筛选条件。HAVING子句中的条件是基于聚合函数(如SUM、COUNT、AVG等)的结果进行的。(举例:
SELECT customer_id, SUM(total_amount) as total_spent
FROM orders
GROUP BY customer_id
HAVING total_spent > 1000;
)
4:FORMAT(‘数据’, ‘保留几位小数’)和ROUND(‘数据’, ‘保留几位小数’):
俩函数差不多(
ROUND()
和FORMAT()
都是SQL中的函数,用于处理数字的格式化和舍入。它们的主要区别在于它们的用途和行为:
-
ROUND()
函数主要用于四舍五入数字到指定的小数位数。它接受两个参数:第一个参数是要进行四舍五入的数字,第二个参数是要保留的小数位数。例如,ROUND(3.14159, 2)
将返回3.14。 -
FORMAT()
函数主要用于格式化数字为特定的格式字符串。它接受两个参数:第一个参数是要格式化的数字,第二个参数是格式字符串,指定了要使用的格式。例如,FORMAT(1234567.89, '#,###.00')
将返回"1,234,567.89"。
总结起来,ROUND()
主要用于四舍五入数字到指定的小数位数,而FORMAT()
主要用于按照特定的格式字符串格式化数字。
)
6.sql示例:
1.时间的区间查询:
-- 1.使用BETWEEN子句:BETWEEN子句用于指定一个范围,可以用于日期和时间类型的列。例如,如果你想查询--- 某个表格中在特定时间区间内的所有记录,可以使用以下语法:
SELECT * FROM table_name
WHERE date_column BETWEEN 'start_date' AND 'end_date';
--2.使用比较运算符:你也可以使用比较运算符(如>=, <=)来指定时间区间。例如:
SELECT * FROM table_name
WHERE date_column >= 'start_date' AND date_column <= 'end_date';
-- 注意事项
-- 确保你的日期格式与数据库中的日期格式相匹配。
-- 时区可能会影响日期和时间的比较,特别是在涉及跨时区的应用时。
2.LIMIT 和 OFFSET 用法:
-- LIMIT 10 OFFSET 2是SQL语句中用于限制查询结果集的行数和起始位置的一种方式。它通常与SELECT语句---- 一起使用,以指定从结果集中返回多少行以及从哪一行开始返回。
-- 在这个例子中,LIMIT 10表示最多返回10行数据,而OFFSET 2表示从结果集的第3行开始返回(因为偏移量---- 是从0开始计数的)。
-- 下面是一个示例SQL查询,演示了如何使用LIMIT和OFFSET:
SELECT * FROM table_name
LIMIT 10 OFFSET 2;
-- 这将从名为table_name的表中选择所有列,并返回从第3行开始的10行数据。
3.OR
、AND
、IN
和ON:
在SQL中,OR
、AND
、IN
和ON
是四个非常关键的操作符,它们在构建查询条件和表连接时扮演着重要的角色。每个操作符都有其特定的功能和使用场景。
- 逻辑操作符
- OR:
OR
是一个逻辑运算符,用于在查询中组合多个条件。当至少一个条件满足时,整个表达式即视为真。它常用于从数据库中选取符合任一条件(或两者都符合)的记录。例如,SELECT * FROM table WHERE a = 1 OR b = 2;
会返回a等于1或者b等于2的所有行。 - AND:
AND
同样是逻辑运算符,但它要求所有组合的条件都必须同时为真,才会返回记录。这通常用于更精确地筛选数据。例如,SELECT * FROM table WHERE a = 1 AND b = 2;
仅返回同时满足a等于1且b等于2的行。
- OR:
- 集合操作符
- IN:
IN
操作符允许你指定一个值列表,用于匹配某个列的值是否在这个列表中。这是OR
操作的一种简化写法,特别是在有多个可能值时更加方便。例如,SELECT * FROM table WHERE a IN (1, 2, 3);
效果与使用多个OR
连接的条件相同,但语法更简洁。
- IN:
- 连接操作符
- ON:
ON
用于在JOIN
操作中指定连接条件。它定义了如何将两个表中的行结合起来。ON
子句在表连接时执行,无论连接条件是否满足,都会展示左表(对于左连接)的所有行。例如,在使用LEFT JOIN
时,ON
子句确定了如何根据共同的列将表格合并在一起。
- ON:
总结来说,OR
和AND
主要用于构造选择查询中的条件表达式,IN
提供了一种简洁的方式来处理多值匹配问题,而ON
则是物理连接两个表的关键所在。理解这些操作符的区别和适用场景,对于编写高效的SQL查询至关重要。
4.LIKE的用法:
在SQL中,LIKE是一个用于模糊匹配字符串的操作符。它通常与WHERE子句一起使用,以根据指定的模式来筛选数据。
LIKE操作符有两种通配符:
%:表示任意数量的字符(包括零个字符)。
_:表示一个单一的字符。
以下是一些示例用法:
1.查找所有以"A"开头的名字:
SELECT * FROM table_name WHERE name LIKE 'A%';
2.查找名字中包含"an"的所有记录:
SELECT * FROM table_name WHERE name LIKE '%an%';
3.查找名字长度为5的所有记录:
SELECT * FROM table_name WHERE name LIKE '_____';
4.查找名字以"a"结尾的所有记录:
SELECT * FROM table_name WHERE name LIKE '%a';
需要注意的是,LIKE操作符对大小写敏感,因此如果要进行不区分大小写的匹配,可以使用ILIKE(在某些数据库系统中可用)或者将字段和模式都转换为相同的大小写。
在SQL中,可以使用NOT LIKE、AND和OR等操作符来构建更复杂的查询条件。这些操作符可以组合使用,以实现更精确的筛选结果。
以下是一些示例:
1.结合NOT LIKE和AND:
SELECT * FROM table_name WHERE column1 NOT LIKE '%pattern%' AND column2 = 'value';
这个查询将返回满足以下条件的记录:column1的值不包含"pattern"字符串,并且column2的值等于"value"。
2.结合LIKE和OR:
SELECT * FROM table_name WHERE (column1 LIKE '%pattern1%' OR column2 LIKE '%pattern2%');
这个查询将返回满足以下条件的记录:column1的值包含"pattern1"字符串,或者column2的值包含"pattern2"字符串。
3.结合多个条件:
SELECT * FROM table_name WHERE column1 LIKE '%pattern%' AND (column2 = 'value1' OR column3 = 'value2');
这个查询将返回满足以下条件的记录:column1的值包含"pattern"字符串,并且column2的值等于"value1"或column3的值等于"value2"。
需要注意的是,在使用这些操作符时,要确保逻辑关系的正确性,并适当地使用括号来明确优先级。同时,不同的数据库系统可能对大小写敏感度有所不同,因此在进行模糊匹配时要注意大小写问题。