sql面试题学习
https://www.nowcoder.com/discuss/95812
餐馆菜单输出最贵的五道菜
CREATE TABLE `menu` ( `MENU_ID` decimal(16,0) NOT NULL COMMENT '菜单名', `MENU_NAME` varchar(250) NOT NULL COMMENT '菜名', `PRICE` decimal(16,0) DEFAULT NULL COMMENT '价格', PRIMARY KEY (`MENU_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='菜单表'
SELECT menu_name from menu ORDER BY price desc limit 5 ;
/* top 是sql server中的语法,如果想在mysql实现分页查询通过limit */
学校中有一个年级表,有两个核心字段,student_id和class_id,把年级中大于30人的班级查出来?
CREATE TABLE `grade` ( `grade_id` decimal(16,0) NOT NULL COMMENT 'ID', `student_id` varchar(250) NOT NULL COMMENT '姓名', `class_id` decimal(16,0) DEFAULT NULL COMMENT '班级', PRIMARY KEY (`grade_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='年级表' select class_id from grade GROUP BY class_id having count(class_id)>1
SQL有哪些聚合函数?
SQL基本函数,聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,
聚合函数都会忽略空值。 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
- 平均值:SELECT AVG(column_name) FROM table_name
- 总和:SELECT SUM(column_name) FROM table_name;
-
最大:SELECT MAX(column_name) FROM table_name
-
分组:group by
-
条件:增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用,HAVING 子句可以让我们筛选分组后的各组数据。
- 运算符EXISTS: SELECT column_name(s) FROM table_name WHERE EXISTS(SELECT column_name FROM table_name WHERE condition);
- 提取字符:SELECT MID(column_name,start[,length]) FROM table_name;
- round() 函数用于数据的四舍五入
- TIMESTAMPDIFF - 计算两个
DATE
或DATETIME
值之间的差异-
TIMESTAMPDIFF( day, '2010-01-01', NOW( ) ) ddiff;
-
-
IF - 如果条件为TRUE则返回“YES”,如果条件为FALSE则返回“NO”
-
SELECT IF(500<1000, "YES", "NO");
-
https://zhuanlan.zhihu.com/p/583107731