sql常见函数和操作

常见函数 (1)单行函数

字符函数
NameDescription
LENGTH()返回字符串的长度(以字节为单位)
CONCAT()返回连接的字符串
SUBSTRING(), SUBSTR()返回指定的子字符串
INSTR()返回第一次出现子字符串的索引
TRIM()删除前导和尾随空格
UPPER()转换为大写
LOWER()以小写返回参数
LPAD()返回字符串参数,用指定的字符串向左填充
RPAD()追加字符串指定的次数
REPLACE()替换指定字符串的出现
数学函数
NameDescription
ROUND()ROUND(X)将参数 X 四舍五入到最近的整数,然后返回。两个参数的形式是将一个数字四舍五入到 D 个小数后返回
RAND()RAND(N)返回一个范围在 0 到 1.0 之间的随机浮点值。如果一个整数参数 N 被指定,它被当做种子值使用(用于产生一个可重复的数值)
TRUNCATE()TRUNCATE(X,D)将数值 X 截到 D 个小数,然后返回。如果 D 为 0,结果将不包含小数点和小数部分
FLOOR()返回小于或等于指定数值表达式的最大整数
CEILING()返回大于或等于指定数值表达式的最小整数
MOD()MOD(X, Y) 返回X被Y除后的余数,MOD() 对于带有小数部分的数值也起作用,它返回除法运算后的余数
日期函数
NameDescription
CURTIME()返回当前时间
CURDATE()返回当前日期
NOW()返回当前日期和时间
DAY(), DAYOFMONTH()返回某天是当月的第几天 (1-31)
YEAR()返回日期参数中的年份
MONTH()返回日期参数的月份
MONTHNAME()返回月份的名字
HOUR()提取小时
MINUTE()由参数返回分钟
SECOND()返回参数中的秒数 (0-59)
STR_TO_DATE()将字符串转换为日期数据
DATE_FORMAT()按照指定格式格式化日期
DATEDIFF()将两个日期相减

常见函数 (2)分组函数

用作统计使用,又称为聚合函数或统计函数、组函数。

处理数值型处理任何类型共同点
SUM()、AVG()MAX()、MIN()、COUNT()① 都忽略null值;②可以和DISTINCT搭配实现去重的运算;③ 和分组函数一同查询的字段要求是GROUP BY 后的字段
分类数据源位置关键字
分组前筛选原始表GROUP BY 子句的前面WHERE
分组后筛选分组后的结果集GROUP BY 子句的后面HAVING

分组函数做条件时放在HAVING子句中

查询

连接查询

分类特点
内连接①表的顺序可以调换;②内连接的结果=多表的交集;③n表连接至少需要n-1个连接条件;④可以实现等值连接、非等值连接、自连接
外连接①查询的结果=主表中所有的行,其中从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null;②LEFT JOIN 左边的就是主表,RIGHT JOIN 右边的就是主表,FULL JOIN 两边都是主表;③一般用于查询除了交集部分的剩余的不匹配的行
交叉连接类似于笛卡尔乘积

子查询

出现在其他语句中的select语句,成为子查询或内查询;外部的查询语句称为主查询或外查询。

分类结果集行列数
标量子查询一行一列
列子查询一列多行
行子查询一行多列
表子查询多行多列
子查询的位置支持查询类型特点
SELECT语句后面量子查询
FROM语句后面表子查询
WHERE或HAVING语句后面❤️标量子查询、列子查询、行子查询①标量子查询一般搭配单行操作符使用:> < >= <= = <> ;②列子查询一般搭配多行操作符使用:IN ANY/SOME ALL
EXISTS语句后面表子查询

分页查询

-----【语法】-----
SELECT 查询列表
FROMJOIN TYPE JOIN2
ON 连接条件
WHERE 筛选条件
GROUP BY 分组字段
HAVING 分组后的筛选
ORDER BY 排序的字段
LIMIT offset, size;

offset:要显示条目的起始索引(从0开始)
size:要显示的条目个数

特点:①LIMIT语句放在查询语句的最后
②公式

要显示的页数 page,每页的条目数size
SELECT 查询列表
FROMLIMIT (page-1)*size,size;

联合查询

将多条查询语句的结果合并成一个结果。应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。

【语法】
查询语句1
UNION 
查询语句2

概念区分

delete和truncate

DELETETRUNCATE
可以加WHERE条件不可以加WHERE条件
效率更高
删除后再插入数据,自增长列的值从断点开始删除后再插入数据,自增长列的值从1开始
有返回值无返回值
可以回滚不能回滚

列级约束和表级约束

位置支持的约束类型是否可以起约束名
列级约束列的后面语法都支持,但外键没有效果不可以
表级约束所有列的下面默认和非空不支持,其他支持可以(主键没有效果)

事务

一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。

事务的ACID属性

属性特征
原子性(Atomicity)事务中的操作要么都发生,要么都不发生
一致性(Consistency)事务必须使数据库从一个一致性状态变换到另外一个一致性状态
隔离性(Isolation)一个事务内部的操作及使用的数据对并发的其他事务是隔离的
持久性(Durability)一个事务一旦被提交,它对数据库中数据的改变是永久性的

事务的创建
隐式事务:事务没有明显的开启和结束的标记。如insert、update、delete语句。
显示事务:事务具有明显的开启和结束的标记。前提必须先设置自动提交功能为禁用。

-- 步骤一:开启事务
set autocommit = 0;
start transaction; -- 可选的

-- 步骤二: 编写事务中的sql语句(select insert update delete)
语句1;
语句2;

-- 步骤三:结束事务
commit; -- 提交事务
rollback; -- 回滚事务

视图

一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。应用场景:1)多个地方用到同样的查询结果;2)该查询结果使用的sql语句较复杂。
作用:实现sql语句的重用;简化复杂的sql操作;保护数据,提高安全性。
注:视图一般用于查询,而不是更新,具备以下特点的视图都不允许更新。
①包含分组函数、GROUP BY、DISTINCT、HAVING、UNION
②JOIN
③常量视图
④WHERE后的子查询用到了FROM中的表
⑤用到了不可更新的视图

【语法】
-- (1)视图的创建
create view 视图名
as
查询语句;

-- (2)视图的修改_方法1
create or replace view 视图名
as
查询语句;
-- (2)视图的修改_方法2
alter view 视图名
as
查询语句;

-- (3)删除视图
drop view 视图名1,视图名2...

-- (4)查看视图
desc 视图名;
show create view 视图名;

存储过程

类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字
好处:1.提高重用性 2.sql语句简单 3.减少了和数据库服务器连接的次数,提高了效率

  1. 创建
CREATE PROCEDURE 存储过程名(参数模式 参数名 参数类型)
BEGIN  
	存储过程体
END

注:参数模式: IN、OUT、INOUT ,其中IN可以省略;
存储过程体中的每一条sql语句都需要用分号结尾。

  1. 调用
CALL 存储过程名(实参列表)

举例:
调用IN模式的参数:CALL spl('值');
调用OUT模式的参数:SET @name; CALL spl(@name); SELECT @name;
调用INOUT模式的参数:SET @name=; CALL spl(@name); SELECT @name;
  1. 查看
SHOW CREATE PROCEDURE 存储过程名;
  1. 删除
DROP PROCEDURE 存储过程名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛江清

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值