当前位置:   article > 正文

mysql 子查询添加索引_mysql 子查询 可以加索引优化吗

mysql子查询加索引

mysql 子查询 可以加索引优化吗

374d93bde7e1c1dbc5b9a2c974a1c1f1.png

mysql 子 可以加索引代码如下:

CREATE INDEX indexName ON mytable(username(length));

如果是CHARVARCHAR,length可以小于字段实际;如果是BLOB和TEXT类型,必须 length,下同。吗

mysql中主查询和子查询关系是什么?

cbb39b96bc7f1bef38d9fb33ab60aafc.png

主查询是在他给你的表里面查询,

子查询的意思是你先对他给你的表做一些筛选、增改等其他操作,

创造一个新的表,

再在你这个子表里面查询

那个mysql 子查询和连接查询 一般常用哪个 谁效率高些

ff6779d528a134893d1d15314685e3b9.png

1、SQL语言

SQL,英文全称:Structured Query Language,是可以对数据进行操定义等多种功能的语言。语言的特点,具有交互性,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。

2、数据库分类

现在企业常用的数据库分为两大类:

关系型数据库:Mysql、Oracle、DB2、SQLite、Teradata等。

非关系型数据库:Redis、MongoDB、Splunk、Hbase等。

3、子查询和连接查询

子查询和连接查询都涉及两个表或多个表,属于多表查询中的方式语句。

子查询是在一个子表查询的结果的基础上进行目的查询的,并且在子查询中会遍历整个子表。

连接查询是通过找到两个或多个表的连接点,通常是表中的共同的列实现连接查询的。查询效率更高,但是不易掌握。

通常认为,连接查询比子查询更快。但是,连接查询对SQL语句的书写要求也更高,而子查询更容易理解,也更容易编写。

4、Mysql子查询

在Mysql数据库中查询语句的结构:

SELECT 查询内容 FROM 查询范围 WHERE 查询条件 GROUP BY 分组条件 HAVING 查询条件 LIMIT 限制条件;

在Mysql中的查询条件中可以添加的子查询的位置:

FROM

WHERE

HAVING

LIMIT等

实例1:

题目1:查询“yezhi”的成绩。

mysql> SELECT score FROM grades WHERE name='yezhi';

题目2:查询比“yezhi”的分数高的学生的信息。

mysql> SELECT * FROM grades WHERE score > (SELECT score from grades WHERE name='yezhi');

实例2:

题目1:查询科目名称是:math或IT的学生id。

mysql> SELECT stu_id FROM courses WHERE course IN (math,IT);

题目2:查询科目id在题目1的学生的信息。

mysql> SELECT * FROM grades WHERE stu_id IN (SELECT DISTINCT stu_id FROM courses WHERE course IN (math,IT));

5、Mysql连接查询

Mysql的连接查询是通过JOIN关键词来实现的,不同的JOIN有:

INNER JOIN:如果表中存在至少一个匹配项,就返回行数据。

LEFT JOIN:即使右表没有匹配项,也会返回左表的所有行。

RIGHT JOIN:即使左表没有匹配项,也会返回右表的所有行。

:只要任意一张表有匹配项,就返回行数据。

在Mysql中的查询中连接查询的位置:

内连接:SELECT 查询内容 FROM 查询范围 (INNER) JOIN 条件;

外连接:SELECT 查询内容 FROM 查询范围 LEFT JOIN 条件;

外连接:SELECT 查询内容 FROM 查询范围 RIGHT JOIN 条件;

全连接:SELECT 查询内容 FROM 查询范围 条件;

实例1:

题目1:查询所有学生的sno、cname和degree列。

mysql> SELECT g.sno,c.cname,g.degree FROM course c INNER JOIN grade g ON c.cno=g.cno;

实例2:

题目2:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)。

mysql> SELECT s.sid,s.sname,sc.count,sc.sum FROM student s LEFT JOIN (SELECT sid id, count(sid) count, sum(score) sum FROM score GROUP BY sid) sc ON s.sid=sc.id;

实例3:

题目3:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩。

mysql> SELECT s.sid,s.sname,sc.count,sc.sum FROM student s RIGHT JOIN (SELECT sid id, count(sid) count, sum(score) sum FROM score GROUP BY sid) sc ON s.sid=sc.id;

实例4:

题目:4:查询所有学生和所有老师的全部信息。

mysql> SELECT * FROM students SELECT * FROM teachers;

相关标签推荐:

延展阅读:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/959577
推荐阅读
相关标签
  

闽ICP备14008679号