一.where和having

  1.where 后不能跟聚合函数,因为where执行顺序大于聚合函数。

  2. where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

  3.having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

二.视图

1.概念

  • 视图是一种虚拟存在的表,行和列的数据来自自定义视图的查询中使用的表,并且在使用视图时动态生成的,只保存SQL的逻辑,不保存查询结果。

2.应用场景

  • 多个地方用到同样的查询结果

  • 该查询结果使用的SQL语句比较复杂

3.使用

(1)创建视图

  • 语法:

    create view 视图名
    as
    查询语句;
  • 例子:

    # 查询邮箱中包含a字符的员工名、部门名和工种信息
    
    # 创建
    create view myv1
    as
    select last_name,department_name,job_title
    from employees e
    join departments d on e.department_id = d.department_id
    join jobs j on j.job_id = e.job_id; #使用
    select * from myv1 where last_name like '%a%';

(2)修改视图

  • 方式一:

    • 语法:

      create or replace view 视图名
      as
      查询语句;
    • 例子:

      create or replace view myv3
      as
      select AVG(salary) , job_id
      from employees
      group by job_id;
  • 方式二:

    • 语法:

      alter view 视图名
      as
      查询语句;
    • 例子:

      alter view myv3
      as
      select * from employees;

(3)删除视图

  • 语法:

    drop view 视图名1, 视图名2, ...;
  • 例子:

    drop view myv1,myv2,myv3;

(4)查看视图

  • 方式一:

    desc myv3;
  • 方式二:

    show create view myv3;

4.视图的好处

  • 重用SQL语句

  • 简化复杂的SQL操作,不必知道它的查询细节

  • 保护数据,提高安全性

三.SQL执行顺序

1.手写顺序

2.机器读顺序

四.MySQL逻辑架构简介

  • 和其他数据库相比,MySQL与众不同。它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上。插件式的存储引擎架构将查询处理和其他的系统以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

五.SQL-JIONS

六.索引

1.概念

  • 索引是一种高效获取数据的数据结构

  • 除了数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构是索引。

  • 一般来说索引本身也很大,不能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上

  • 我们平时说的索引没有特别指明一般都是B树

2.优势

  • 提高数据检索的效率,降低数据库的IO成本

  • 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗

3.劣势

  • 多占用了内存空间

  • 索引提高了查询速度,降低了更新速度

  • 根据业务变化,要改变索引建立更加优化的索引

4.索引的分类

  • 单值索引:一个索引只包含单个列,一个表可以有多个单列索引

  • 唯一索引:索引列的值必须唯一,但是允许有空值

  • 复合索引:一个索引包含多个列

  • 基本语法:

    • 创建:

      • 创建语法: create [unique] index indesName on tableName(columnName1,....);

      • 例子:

        create index UQ_Clu_StuNo        --索引名称
        on Student(S_StuNo); --数据表名称(建立索引的列名)
      • 添加语法: alter tableName add [unique] index [indexName] on (columnName1,...);

    • 删除: drop index [indexName] on tableName;

    • 查看: show index [indexName] on tableName\G;

    • 使用alter命令:

5.索引结构:

  • BTree索引

  • Hash索引

  • full-text索引

  • R-Tree索引

6.需要建立索引的情况

7.不需要创建索引的情况

SQL内容补充的更多相关文章

  1. python 全栈开发,Day93(vue内容补充,VueX)

    昨日内容回顾 1. 页面的布局 Vue中使用Bootstrap搭页面 1. 安装 1. npm install bootstrap@3.3.7 -S 2. 使用 1. import 'bootstra ...

  2. day10上节内容补充和初始函数

    1.上节内容补充 文件的删除和修改: #文件的删除和修改 #文件中全部都要修改 # with open('歌词',encoding='utf-8') as f1,open('歌词.bak','w',e ...

  3. ASP.NET Core 2.2 WebApi 系列【九】使用SignalR (作者:tenghao510 ) 学习及内容补充

    原文地址:  ASP.NET Core 2.2 WebApi 系列[九]使用SignalR 今天,看到了大牛的这篇博文,  发了一下评论, 我很惊喜, 没想到他很快就回复了我,  而且通过QQ帮助了S ...

  4. git内容补充-Git零基础快速入门-苏玲

    https://git-scm.com/book/zh/v2 git历史 集中式版本控制管理:cvs.svn 分布式版本控制管理:git 基本命令 git config --list --global ...

  5. DOTNET CORE源码分析之IOC容器结果获取内容补充

    补充一下ServiceProvider的内容 可能上一篇文章DOTNET CORE源码分析之IServiceProvider.ServiceProvider.IServiceProviderEngin ...

  6. Django学习路32_创建管理员及内容补充+前面内容复习

    创建管理员 python manage.py createsuperuser   数据库属性命名限制 1.不能是python的保留关键字 2.不允许使用连续的下划线,这是由django的查询方式决定的 ...

  7. python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数

    python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...

  8. CSS应用内容补充及小实例

    一.clear 清除浮动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  9. spark 分析sql内容再插入到sql表中

    package cn.spark.study.core.mycode_dataFrame; import java.sql.DriverManager;import java.util.ArrayLi ...

随机推荐

  1. 【WPF学习】第二十六章 Application类——应用程序的生命周期

    在WPF中,应用程序会经历简单的生命周期.在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件.最后,当释放应用程序对象时,应用程序将结束. 一 ...

  2. 每日一技|巧用 Telnet 调试 Dubbo 服务

    个人博客地址 studyidea.cn,点击查看更多原创文章 0x00. 前言 想象这样一个场景,线上某个服务突发异常,导致上游服务调用异常,数据处于中间状态.服务恢复之后,我们需要修复这笔数据至正常 ...

  3. SpringBoot缓存篇Ⅰ--- 缓存抽象

    缓存是每一个系统应该考虑的功能,它可以用来加速系统的访问,提升系统性能,例如要经常访问的高频热点数据,例如某一个商品网站的商品信息,商品信息存储在数据库中,若每次访问都要查询数据库的话,这样的操作耗时 ...

  4. Exception:Request processing failed; nested exception is org.apache.ibatis.binding.BindingException

    异常 在测试Spring MVC+Mybatis整合时,运行 Maven build -> tomcat7:Run 遇到如下异常 从异常信息上看,是找不到mapper对应的xml文件,于是我到t ...

  5. 曹工说Spring Boot源码(13)-- AspectJ的运行时织入(Load-Time-Weaving),基本内容是讲清楚了(附源码)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  6. react 获取input的值 ref 和 this.setState({})

    1.ref //class my_filter(reg){          const inpVal = this.input.value;          console.log(inpVal) ...

  7. sql serverDB运维实用sql大全

    运维sql server的sql总结,包含阻塞语句.等待语句.某个时间段的sql性能查询等等常用sql语句 ##断开库的连接,记得修改库名 USE masterGOALTER DATABASE [DB ...

  8. Hexo+coding实现自动化部署

    前言 昨天写了一篇利于云环境写博客,但是让群里大佬们看了下.评论道:"写的不错,但还是觉得这个云环境太繁琐了,没有CI/CD自动化部署方便".于是我便百度查了下,网上文章大部分是通 ...

  9. 西门子PLC在自动浇灌系统中的应用

    西门子PLC在自动浇灌系统中的应用(鸿控整理) 2020-02-07 22:50:48 1 自动浇灌系统简介 系统采用自行研制的湿度传感器监测土壤的湿度情况,当土壤湿度低于所要求的值后,自动开启水泵电 ...

  10. java核心技术----接口

    接口:用来描述类具有什么功能,而并不给出每个功能的具体实现. 一个类可以实现一个或多个接口. 克隆(深拷贝):创建一个新对象,且新的对象的状态与原始对象的状态相同.当对克隆的新对象进行修改时,不会影响 ...