一.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. 使用nutz框架,找不到入口函数,访问Url报404

    案例 今天在跟着nutz框架教程去配置demo时,发现访问URL找不到入口函数,出现了Search mapping for path=/user/count : NOT Action match 异常 ...

  2. 【WPF学习】第三十六章 样式基础

    前面三章介绍了WPF资源系统,使用资源可在一个地方定义对象而在整个标记中重用他们.尽管可使用资源存储各种对象,但使用资源最常见的原因之一是通过他们的保存样式. 样式是可应用于元素的属性值集合.WPF样 ...

  3. CassandraAppender - distributed logging,分布式软件logback-appender

    农历年最后一场scala-meetup听刘颖分享专业软件开发经验,大受启发.突然意识到一直以来都没有完全按照任何标准的开发规范做事.诚然,在做技术调研和学习的过程中不会对规范操作有什么严格要求,一旦技 ...

  4. javabst1an

    (单选题)下列概念中不包括任何实现,与存储空间没有任何关系的是() A)类 B)接口 C)抽象类 D)对象 正确答案为:B解析:接口是一种只含有抽象方法或常量的一种特殊的抽象类,因为接口不包括任何实现 ...

  5. [JavaScript]AO对象

    1, 形式参数 2, 局部变量 3, 函数声明表达式

  6. 2020你还不会Java8新特性?

    Java8(1)新特性介绍及Lambda表达式 前言: 跟大娃一块看,把原来的电脑拿出来放中间看视频用 --- 以后会有的课程 难度 深入Java 8 难度1 并发与netty 难度3 JVM 难度4 ...

  7. ARTS Week 12

    Jan 13, 2020 ~ Jan 19, 2020 Algorithm Problem 112. Path Sum (路径总和) 题目链接 题目描述:给定一棵二叉树和一个值 sum ,检查二叉树是 ...

  8. 【题解】[P1045] 麦森数

    题目 题目描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1 不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=30213 ...

  9. SpringBoot、Spring MVC报错:Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    出现问题的原因: jdbc配置不正确 解决方案: 1.检查是否已添加数据库驱动jar包 2.检查数据库服务是否启动 3.检查数据库配置文件 主要为:dialect,driver_class,url,u ...

  10. 一文带你了解 C# DLR 的世界

    一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...