一.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. js之new的原理

    在调用new的过程中会发生以上四件事情: 1.新生成了一个对象 2.链接到原型 3.绑定this 4.返回新对象 function create() { let obj = {} //创建一个新对象 ...

  2. Git详解之内部原理

    前言 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认 ...

  3. springIOC源码接口分析(五):ListableBeanFactory

    一 继承关系 该接口是对BeanFactory的扩展,允许预加载bean定义的BeanFactory可以实现此接口 其目的在于使实现它的BeanFactory能够枚举所有的Bean 该接口不支持分层结 ...

  4. innobackupex 恢复脚本

    此脚本需要与我前几天写的备份脚本配套才能使用 这里也对innobackupex吐槽下,当使用innobackupex进行恢复的时候,必须要清除所有原数据文件,但是一旦恢复失败,则连实例都将丢失,不成功 ...

  5. ajax 后台java代码执行完毕 前端报404错误

    一个ajax请求,到java后台代码,后台成功接受并执行相应处理,但是返回的时候,success却没进去,前端报404错误. 因为是由于Controller忘记写spring的@Responsebod ...

  6. axure如何实现提示框3s后自动消失

    本示例基于axure8 实现 1.先做两个元件,一个按钮,一个提示框 2.将弹框“发布成功提示”设置为,页面载入时隐藏,这样预览页面时,该弹框是隐藏状态 3.给按钮添加交互样式,如下: 4.预览,点击 ...

  7. 15、WAN

    WAN wide area network 覆盖较大地理范围的数据通信网络使用网络提供商和电信公司所提供的传输设施传输数据 通过不同WAN协议,将LAN延伸到远程站点的其他LAN广域网接入处于OSI七 ...

  8. Rust语言Actix-web框架连接Redis数据库

    Rust语言Actix-web框架连接Redis数据库 actix-web2.0终于发布了,不再是测试版本,基于actor系统再加上异步支持,使得actix-web成为了目前响应速度最快的服务器框架, ...

  9. 内网ICMP隧道构建之icmpsh

    下载地址: https://github.com/inquisb/icmpsh#usage kali下载 git clone https://github.com/inquisb/icmpsh.git ...

  10. Nginx总结(八)Nginx服务器的日志管理及配置

    前面讲了如何配置Nginx虚拟主机,大家可以去这里看看nginx系列文章:https://www.cnblogs.com/zhangweizhong/category/1529997.html 今天要 ...