问题: 不知道如何将一段需求用sql语句实现
需要关注
没有 null ,is null,is not null,ifnull
去重 distinct
不等于 <>
大于 >
小于 <
逻辑运算 and 和 or
范围 between ... and ...,not between ... and ...
取反 not
不在一个集合 not in()
排序 order by 列名 默认升序,asc 升序,desc降序
含有,有 like,not like
每个 group by
相同类型 使用count
在SQL中,分组(GROUP BY)的主要目的是为了对数据进行聚合操作,以便能够对数据集进行汇总、分析和报告。
表内数据关联: 自连接(Self Join)是SQL中的一种连接操作,它允许一个表与其自身进行连接。这种连接通常用于查询表中与另一行相关联的数据,例如,查找同一表中具有某种关系(如上下级关系、父子关系等)的行
#null值的特性
#1.任何与null做算术运算的结果都为null
#2.null值不可以使用比较运算符判断 不可以使用 = 或者 <> 判断是否为空
# 使用 is 或 is not 判断是否为null
#3.在mysql中 null被认为是无穷小 在oracle中 null被认为是无穷大
# 排序过程中一般要对null值做处理
#4.null值会被组函数忽略
SELECT 1 FROM DUAL;
SELECT "Hello World!";
#运算函数
#求绝对值
SELECT ABS(-10);
#开方
SELECT SQRT(9);
#乘方
SELECT POW(2,3);
#随机数
SELECT RAND();
#四舍五入
SELECT ROUND(3.14);
#向上取整
SELECT CEIL(3.14);
#向下取整
SELECT FLOOR(3.5);
#字符串函数
#拼接
SELECT CONCAT("abc","def");
#查看指定字符下标 数据库中函数 下标从1开始 找到返回指定下标 找不到返回0
SELECT INSTR("abc","a");
#转大写
SELECT UPPER("abc");
#转小写
SELECT LOWER("ABC");
#时间函数
#数据库中的时间类型 分为
# time 存储的是时分秒 hh:mm:ss
# date 存储的是年月日 yyyy-MM-dd
# datetime 存储的是年月日时分秒 yyyy-MM-dd hh:mm:ss
# timestamp 存储的是时间戳 yyyyMMddhhmmss
#获取当前time
SELECT CURTIME();
#获取当前date
SELECT CURDATE();
#获取当前datetime
#now也代表timestamp
SELECT NOW();
#日期不可以直接使用运算符运算 大部分结果是无效的
#使用datediff函数进行计算 两个日期之间的相差时间 结果按照 天返回
SELECT id,NAME,price,DATEDIFF(CURDATE() , create_date) livedate FROM product;
评论 (0)