MySQL常用函数复习

本文详细介绍了SQL中的各种功能,包括聚合函数如COUNT、MAX等,以及字符串、日期、数字和高级函数的使用,强调了大写命名以提高代码可读性和可维护性。

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

开发过程中,sql函数建议大写提高可读性和可维护性,以下均小写只是方便阅读记忆(大写英文有时看不懂)

常见sql语句中聚合函数有count统计数量、max最大值、min最小值、avg平均值、sum求和,除这些常见的函数之外还有:

1.字符串函数

1.select concat("1","2","3","4"),将多个字符串拼接合并成一个字符串

可将人的姓名与昵称拼接起来

2.select char_length("1234"),返回字符串的字符数

可用于统计人名几个字组成

3.select length("1234"),返回字符串的字节数

4.select upper("abcd"),将字符串转换为大写

5.select lower("ABCD"),将字符串转换为小写

6.select locate('cd','abcde'),从字符串abcde中获取cd位置,位置从1开始,也就是返回3

7select trim("a     bc   "),字符串去除空格

8.select replace('abc','a','*'),字符串abc中a被替换成*,即返回*bc

9.select substr("abcde",2,3),字符串abcde中,从2开始截取(从1开始计数),截取长度为3的字符串,即返回bc

可用于截取人名中的姓氏

2.日期函数

1.now()\curdate()\curtime();

获取系统当前日期时间\日期\时间

select now();

2.year(date)\month(date)\day(date)

从日期中获取年月日

select year(now());

3.last_day(date)

返回月份的最后一天

select last_day(now());

4.adddate(date,n)/subdate(date,n)

计算起始日期date加减n天的日期

select adddate(now(),10);

5.quarter(date)

返回日期date是第几季度,1到4

select quarter(now())

6.datediff(d1,d2)

计算日期d1->d2之间相隔的天数

select datediff('2024-02-06','2023-12-01');

数据库中有员工入职日期,可用于统计员工距今的入职天数,/365可计算员工的工龄,where datediff(now(),joindate)/365>10即可条件查询10年工龄以上员工

7.date_format(d,f)

按照表达式f显示日期d

select date_format(now(),'%Y-%m-%d')这里年月日区分大小写,含义不一样

where date_format(joindate,"%Y") = '2023',可截取年份统计2023年入职的员工

select * from emp where datediff(now,joindate)>365 and date_format(jiondate,"%m")='02'查找工龄超过10年且2月份入职的员工信息

select * from emp where date_formate(joindate,"%Y") =(select date_formate(jiondate,"%Y") from emp where ename = '张三') 查找与张三同一年入职的员工子查询

3.数字函数

1.abs(x)

返回x的绝对值

select abs(-1)

2.ceil(x)/floor(x)

向上向下取整

select ceil(1.5)

3.mod(x,y)

取余数

select mod(5,4)

4.rand()

返回0到1的随机数

select rand()

5.round(x)

四舍五入

select round(3.1415926)

统计工龄时超过半年为一年round(datediff(now(),joindate)/365)

6.truncate(x,y)

返回数值x保留到小数点后y位的值

select truncate(3.1415926,3)

统计部门平均薪资保留两位小数select dept_id,avg(salary),truncate(avg(salary),2) from emp group by dept_id,薪资也可以ceil向下取整,floor向上取整

4.高级函数

1.select if(布尔表达式,为真时的值,为假时的值) from 表名

select ename,salary+ifnull(bonus,0),if((salary+ifnull(bonus,0))>20000,"有钱人","穷B") from emp

这里ifnull表示有奖金就加没奖金就用0代替null,null不能做数学运算

2.select

        case[字段]

               where 判断条件1 then 希望得到的值1

               where 判断条件n then 希望得到的值n

               else 前面条件都没有满足情况下得到值

        else

   from

          表名

### MySQL 常用 SQL 语句及操作命令汇总 #### 数据库基本操作 创建数据库: ```sql CREATE DATABASE db_name; ``` 删除数据库: ```sql DROP DATABASE IF EXISTS db_name; ``` 选择当前使用的数据库: ```sql USE db_name; ``` 查看现有数据库列表: ```sql SHOW DATABASES; ``` #### 表的基本操作 创建新表: ```sql CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ); ``` 删除已有表: ```sql DROP TABLE IF EXISTS table_name; ``` 显示指定数据库中的所有表格: ```sql SHOW TABLES FROM db_name; ``` 描述表结构详情: ```sql DESCRIBE table_name; ``` #### 插入数据到表中 向单个字段插入记录: ```sql INSERT INTO table_name (column1) VALUES ('value'); ``` 一次性插入多条记录至多个字段: ```sql INSERT INTO table_name (column1, column2,...) VALUES (value1,value2,...),(value1,value2,...),...; ``` #### 更新与删除数据 更新特定条件下的一行或多行的数据项: ```sql UPDATE table_name SET column1=value WHERE condition; ``` 移除符合条件的某一行或几行: ```sql DELETE FROM table_name WHERE condition; ``` 清空整个表内全部内容而不影响其定义: ```sql TRUNCATE TABLE table_name; ``` #### 查询数据 简单检索所有列的信息: ```sql SELECT * FROM table_name; ``` 带有条件筛选的结果集提取: ```sql SELECT column_list FROM table_name WHERE conditions; ``` 对于年龄小于20岁学生的查询可以表示为[^1]: ```sql SELECT XM, SA FROM STUD WHERE SA < 20; ``` 组合不同表之间的关联信息展示: ```sql SELECT S.Sno,C.Cname,SC.Grade FROM S JOIN SC ON S.Sno = SC.Sno JOIN C ON SC.Cno = C.Cno WHERE S.Sname='S2'; ``` 此段代码实现了对学生选修课程的成绩查询[^2]. 利用逻辑运算符构建复杂查询条件: ```sql SELECT Sno FROM SC WHERE Cno='C2' AND Grade IS NOT NULL; ``` 上述例子展示了如何找出选择了编号为'C2'这门课并有成绩记录的同学学号集合. 处理缺失值的情况: ```sql SELECT * FROM table_name WHERE column IS NULL; ``` 或是相反情况,即寻找非空值实例: ```sql SELECT * FROM table_name WHERE column IS NOT NULL; ``` 范围匹配以及模式搜索也是重要的技巧之一: ```sql SELECT * FROM table_name WHERE column BETWEEN value1 AND value2; SELECT * FROM table_name WHERE column LIKE 'pattern%'; -- %代表任意数量字符 ``` 最后还有分组统计函数的应用场景非常广泛,在这里仅举一例说明平均分数计算方法: ```sql SELECT AVG(Grade) AS Average_Score FROM SC GROUP BY Cno; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值