字符,日期函数
1、字符函数
01、CONCAT
==java中的+号==
-
描述用于连接多个字符串。
-
语法
CONCAT(string1, string2, ...)
示例:
SELECT CONCAT('Hello', ' ', 'World') AS greeting; -- 返回 'Hello World'
02、UPPER
-
描述将字符串转换为大写。
-
语法
UPPER(string)
示例:
SELECT UPPER('hello') AS upper_case; -- 返回 'HELLO'
03、LOWER
-
描述将字符串转换为小写。
-
语法
LOWER(string)
示例:
SELECT LOWER('HELLO') AS lower_case; -- 返回 'hello'
04、LENGTH
-
描述返回字符串的长度。
-
语法
LENGTH(string)
示例:
SELECT LENGTH('hello') AS string_length; -- 返回 5
05、SUBSTRING
-
描述提取字符串的子字符串。
-
语法
SUBSTRING(string, start, length)
示例:
SELECT SUBSTRING('Hello World', 1, 5) AS sub_string; -- 返回 'Hello'
06、REPLACE
-
描述替换字符串中的子字符串。
-
语法
REPLACE(string, old_substring, new_substring)
示例:
SELECT REPLACE('Hello World', 'World', 'SQL') AS replaced_string; -- 返回 'Hello SQL'
07、TRIM
-
描述去除字符串两端的空格。
-
语法
TRIM(string)
示例:
SELECT TRIM(' Hello ') AS trimmed_string; -- 返回 'Hello'
2、日期函数
01、CURDATE
-
描述返回当前日期。
-
语法
CURDATE()
示例:
SELECT CURDATE() AS current_date; -- 返回当前日期
02、DATEDIFF
-
描述计算两个日期之间的天数差。
-
语法
DATEDIFF(date1, date2)
示例:
SELECT DATEDIFF(CURDATE(), '2023-01-01') AS days_difference; -- 返回从 2023-01-01 到今天的天数
03、YEAR
-
描述提取日期中的年份。
-
语法
YEAR(date)
示例:
SELECT YEAR('2023-01-01') AS year; -- 返回 2023
04、MONTH
-
描述提取日期中的月份。
-
语法
MONTH(date) -
示例:
SELECT MONTH('2023-01-01') AS month; -- 返回 1
05、DAY
-
描述提取日期中的天。
-
语法
DAY(date) -
示例:
SELECT DAY('2023-01-01') AS day; -- 返回 1
06、NOW
-
描述返回当前日期和时间。
-
语法
NOW() -
示例:
SELECT NOW() AS current_datetime; -- 返回当前的日期和时间
07、CURTIME
-
描述返回当前时间。
-
语法
CURTIME() -
示例:
SELECT CURTIME() AS current_time; -- 返回当前时间
08、DATE_ADD
-
描述在日期上加上一个时间间隔。
-
语法
DATE_ADD(date, INTERVAL value unit) -
示例:
SELECT DATE_ADD('2023-01-01', INTERVAL 1 YEAR) AS next_year; -- 返回 '2024-01-01'
09、DATE_SUB
-
描述从日期中减去一个时间间隔。
-
语法
DATE_SUB(date, INTERVAL value unit)
示例:
SELECT DATE_SUB('2023-01-01', INTERVAL 1 MONTH) AS last_month; -- 返回 '2022-12-01'
3、案例
INSERT INTO emp (name, salary, hire, dept) VALUES
('张三', 60000, '2020-01-15', '技术部'),
('李四', 75000, '2019-03-22', '市场部'),
('王五', 50000, '2021-06-30', '人事部'),
('赵六', 80000, '2018-11-11', '财务部'),
('钱七', 90000, '2022-02-01', '技术部'),
('孙八', 65000, '2020-05-20', '市场部');
CREATE TABLE emp (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2),
hire DATE,
dept VARCHAR(50)
);
- 查询所有emp的name和salary。
Select name, salary From emp; - 查询salary大于60000的empname。
select name from emp where salary > 60000; - 查询所有emp的入职年份。
select name, year(hire) as 入职年份 from emp; - 查询所有emp的dept。
-
select distinct dept from emp; - 查询所有emp的name长度。
-
select namr,length(name) as name长度 from emp; - 查询所有emp的name,转换为大写。
-
select upper(name) as name大写 from emp; - 查询所有emp的dept,去除空格。
-
select trim(dept) as 清理dept from emp; - 查询所有emp的name,提取前两个字符。
-
select name, substring(name,1,2) as name前两个字符 from emp; - 查询所有emp的name,转换为小写。
-
select lower(name) as name小写 from emp; - 查询所有emp的name,替换其中的"张"为"李"。
-
select replace(name,'张','李') as 替换name from emp; - 查询当前日期。
-
select curdate() as 当前日期; - 查询从hire到现在的天数。
-
select name, datediff(curdate(),hire) as 在职天数 from emp; - 查询入职超过一年的empname。
-
select name from emp where hire < date_sub(curdate(),interval 1 year); - 查询hire在2021年之后的empname。
-
select name from emp where hire > '2021-01-01'; - 查询当前时间。
-
select ccurtime() as 当前时间 - 查询hire加上两年后的日期。
-
select name,date_add(hire,interval 2 year) as 两年后hire from emp; - 查询emp总数。
-
select count(*) as emp总数 from emp; - 查询平均salary。
-
select avg(salary) as 平均salary from emp; - 查询最高salary和最低salary。
-
select max(salary) as 最高salary,min(salary) as 最低salary from emp; - 查询salary大于80000的emp数量。
-
select count(*) as 高salaryemp数量 from emp where salary > 80000; - 按dept分组,查询每个dept的emp数量。
-
select dept, count(*) as emp数量 from emp group by dept; - 按dept分组,查询每个dept的平均salary。
-
select dept, avg(salary)as 平均salary from emp group by dept; - 按dept分组,查询每个dept的最高salary。
-
select dept, max(salary) as 最高salary from emp group by dept; - 按入职年份分组,查询每年入职的emp数量。
-
select year(hire) as 入职年份, count(*) as emp数量 from emp group by 入职年份; - 查询每个dept的最高salary和最低salary。
-
select dept, max(salary) as 最高salary, min(salary) as 最低salary from emp group by dept; - 查询每个dept的emp数量和平均salary,按平均salary降序排列。
-
select dept,count(*) as emp数量,avg(salary) as 平均salary from emp group by dept order by 平均salary desc; - 查询hire在2020年之后的empname和dept。
-
select name, dept from emp emp where hire > '2020-01-01'; - 查询empname、入职年份和在职天数。
-
select name, year(hire) as 入职年份, datediff(curdate(0, hire) as 在职天数 from emp; - 查询所有emp的name和salary,按salary降序排列。
-
select name, salary from emp order by salary desc; - 查询salary在50000到80000之间的empname和dept。
-
select name, dept from emp where salary between 50000 and 80000; - 查询hire在2020年和2021年之间的empname。
-
select name from emp where hire between '2020-01-01' and '2021-12-31'; - 查询所有emp的name和hire,按hire升序排列。
-
select name, hire from emp emp order by hire asc; - 查询每个dept的emp数量和最高salary,按emp数量降序排列。
select dept, count(*) as emp数量,max(salary) as 最高salary from emp group by dept order by emp数量 desc;
1万+

被折叠的 条评论
为什么被折叠?



