mysql语法口诀?
mysql 口诀
全值匹配我最爱,最左前缀要遵守
带头大哥不能死,中间兄弟不能断
索引列上少计算,范围之后全失效
LIKE符号写最右,覆盖索引不写星
不等空值还有or,索引失效要少用
var引号不能丢,SQL高级也不难
分组之前必排序,一定要上索引啊
hive和mysql语法区别?
Hive和MySQL是两种数据库系统,虽然它们有一些相似之处,但也有一些语法上的差异。以下是一些Hive和MySQL语法之间的主要区别:
1. 数据定义语言(DDL):在Hive中,创建表的语法类似于SQL语言,但使用的是HiveQL,而不是MySQL的DDL语句。此外,Hive支持内部表和外部表的概念,这与MySQL不同。
2. 数据操作语言(DML):HiveQL和MySQL的DML语言非常相似,它们都支持基本的查询语句(如SELECT,GROUP BY,JOIN等)。但是,由于Hive是基于Hadoop的,所以它的查询语法通常需要更多的函数和语句来处理大型数据集。
3. 数据控制语言(DCL):HiveQL没有内置的DCL功能,而MySQL具有授权和撤销功能。
4. 数据类型:虽然Hive和MySQL都具有基本的数据类型,如字符串,数字和日期等,但它们的数据类型有所不同。例如,Hive有ARRAY和MAP类型,而MySQL没有。
5. 分区和桶操作:Hive具有在表中使用分区和桶的内置支持,这是在Hadoop中进行高效查询的关键。但是,在MySQL中,这需要手动创建分区和桶表。
学了一阵Sql语法,想具体实践一下,有没有一些附带答案和练习数据的mysql练习题?
最近刚好在头条写了三篇关于MySQL的SQL语法实战文章,这里大概列举其中部分练习题,文末附全部文章链接,有兴趣的可以跳转阅读。
演示数据
我们将以下面演示数据为例开展相关SQL语法练习,演示数据涉及学生信息表、教师信息表、课程信息表、成绩信息表,具体建表语句及数据如下:
学生信息表
我们向学生信息表中插入如下4条数据:
教师信息表
我们向教师信息表中插入如下3条数据:
课程信息表
我们向课程信息表中插入如下3条数据:
成绩信息表
我们向成绩信息表中插入如下11条数据:
通过上述SQL我们可以创建 学生、教师、课程、成绩信息表,并插入样例数据,产生如下演示数据:练习如下
1 查询所有同学的学生编号、学生姓名、选课总数、所有课程的平均成绩。
上述SQL执行结果如下:
2 查询平均成绩高于60 分的学生编号和学生姓名和平均成绩。
上述SQL执行结果如下:
在该例子中用到了 any_value 函数,该函数有什么作用呢,如下:
- 自 MySQL5.7版本之后,sql_mode 中 only_full_group_by 模式默认为打开状态。
- only_full_group_by 就是确定 select target list 中的所有字段都是明确语义,即在此模式下 select target list 中的字段 要么是来自于聚合函数(sum、avg、max等)的结果,要么是来自于 group by 中的表达式的值,除此之外都将触发异常。
- 因此,MySQL提供了any_value 函数来抑制 only_full_group_by 值被拒绝,any_value 会选择被分到同一组的数据里第一条数据的指定字段值作为返回数据。
使用内连接,同样可以实现查询平均成绩高于60 分的学生编号和学生姓名和平均成绩,如下。
3 获取各课程的平均成绩,降序排列,若平均成绩相同时,按课程编号升序排列。
上述SQL执行结果如下:
4 获取数学(Math)课程成绩不低于90分的学生学号、姓名班级、成绩信息。
上述SQL执行结果如下:
5 获取语文(Chinese)课程成绩不超过60分的学生学号、姓名班级、成绩信息,按分数降序排列的学生信息。
上述SQL执行结果如下:
6 获取班级的数学(Math)课程平均成绩大于90分的班级。
上述SQL执行结果如下:
7 获取没有缺考的学生的学号、姓名、班级信息。
上述SQL执行结果如下:
8 获取所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
相关阅读:
学以致用,语法基础实战:
学以致用,语法进阶实战:
学以致用,语法强化实战: