目录
时间查询
DAYOFWEEK ,DAYOFYEAR ,DAYOFMONTH
select now() # 取日期和时间
SELECT CURRENT_DATE #取日期
SELECT CURRENT_TIME #取时间
select DATE_FORMAT( NOW(),'%Y-%m-%e') # 提取 包含时间的日期 中的日期部分,不要时间部分
DATE_FORMAT函数是用于将日期时间值按特定格式进行格式化的MySQL函数。他允许你将日期时间值转换为你想要的自定义字符串格式。
DATE_SUB函数是用于在给定日期上进行日期减法运算的MySQL函数。它可以在指定的日期上减去一定的时间间隔,获取新的日期结果。
日期时间格式符号 | 描述 |
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与%X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
多表查询
account:
cart:
category:
goods:
1:火腿肠被谁买了?
SELECT goods.goods_name,account.name
FROM account,goods,cart
WHERE goods.good_no=cart.goods_no
AND account.id=cart.account_id
AND goods.goods_name='火腿肠'
2:零食被谁买了?
SELECT goods.goods_name,category.name,account.name
FROM account,cart,category,goods
WHERE goods.good_no=cart.goods_no
AND account.id=cart.account_id
AND goods.category_no=category.no
AND category.name='零食'
3:张三买了哪些商品?
SELECT goods.goods_name,account.name
FROM goods,account,cart
WHERE account.id=cart.account_id
AND goods.good_no=cart.goods_no
AND account.name='张三'
4:所有用户分别买了多少钱?
SELECT account.name,SUM((goods.price*cart.num)) AS 总价
FROM goods,account,cart
WHERE account.id=cart.account_id
AND cart.goods_no=goods.good_no
GROUP BY account.name
5:假设购物车东西全部销售,周几的营业额最高
SELECT DAYOFWEEK(cart.create_time) AS 星期,SUM(goods.pricecart.num) AS 营业额
FROM goods,cart WHERE goods.good_no=cart.goods_no
GROUP BY DATE_FORMAT( cart.create_time,'%Y-%m-%d')
ORDER BY SUM(goods.pricecart.num) DESC
LIMIT 0,1
6:张三在什么时候购物
方法一:等值查询
SELECT account.name,goods.goods_name,TIME(cart.create_time)
FROM account,cart,goods
WHERE account.id=cart.account_id
AND cart.goods_no=goods.good_no
AND account.name='张三'
方法二:内连接
SELECT account.name, cart.create_time
FROM account INNER JOIN cart
ON account.id=cart.account_id
WHERE account.name = '张三'
7:购物车里的商品销售后,赚了多少钱
方法一:等值查询
#分别赚的
SELECT goods.goods_name,goods.price,goods.cost,cart.num,(goods.price-goods.cost)cart.num AS 盈利
FROM cart,goods
WHERE cart.goods_no=goods.good_no
#共赚 SELECT SUM((goods.price-goods.cost)cart.num) AS 盈利
FROM cart,goods
WHERE cart.goods_no=goods.good_no
方法二:内连接
SELECT SUM((num*price)-(num * cost)) AS 利润
FROM cart INNER JOIN goods
ON cart.goods_no = goods.good_no
8:求哪个商品利润率最高
SELECT goods_name,CONCAT(((price-cost)/cost100),'%') AS 最高利润率
FROM goods
ORDER BY (price-cost)/cost100 DESC
LIMIT 0,1
9: 求2023年3月12日前一周上架的商品
SELECT *
FROM goods
WHERE DATE_FORMAT(create_time,'%Y-%m-%d') >= DATE_SUB('2023-03-12',INTERVAL 1 WEEK)
AND DATE_FORMAT(create_time,'%Y-%m-%d')<='2023-03-12'