一.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. Shell重定向与exec

    前言 首先我们需要知道exec是什么,exec是linux下面一个创建进程的方法,详情请参考:https://www.cnblogs.com/guge-94/p/11016176.html 重定向 概 ...

  2. python 学习笔记2 匿名函数

    # 匿名函数 lambda a,b : a+b# a.j.from functools import reduce students = [{'name': '张三', 'age': 18, 'hei ...

  3. 导弹拦截(dp复习)

    题目描述:求最长下降子序列的长度 in: 71 7 3 5 9 4 8 out: 4 解释:1 3 4 8/1 3 5 8 长度为四 这让我想到了hdu上导弹拦截那道题,是求最长上升子序列长度 其转移 ...

  4. Visual Studio 2015 配置 Python 环境

    Visual Studio 2015可以在安装时选择安装Python环境,首次使用VS2015执行python时需要配置环境变量: 配置VS2015的环境前需要先下载Python并安装: https: ...

  5. 腾讯云Centos服务器部署问题

    在Centos7上部署Tomcat过程 下载并安装JDK 下载并部署Tomcat 打开Centos中对应的端口(默认80) 这几步操作很清楚,但首次使用Centos7时遇到了一个问题,外网无法访问服务 ...

  6. 《Head First Java(第二版)》中文版 分享下载

    书籍信息 书名:<Head First Java(第二版)>中文版 作者: Kathy Sierra,Bert Bates 著 / 杨尊一 编译 张然等 改编 豆瓣评分:8.7分 内容简介 ...

  7. MapReduce清洗数据进行可视化

    继上篇第一阶段清洗数据并导入hive 本篇是剩下的两阶段 2.数据处理: ·统计最受欢迎的视频/文章的Top10访问次数 (video/article) ·按照地市统计最受欢迎的Top10课程 (ip ...

  8. Linux系统之LVS+Keepalived实现

    1.简述lvs四种集群特点及使用场景 LVS集群有4种类型,分别是NAT.DR.TUN.FULLNAT 从工作方式来讲,NAT和FULLNAT都要修改请求报文的目标IP和目标端口(NAT)或源IP目标 ...

  9. VFP调整本机日期时间与服务器日期时间一致

    *!*调整本机日期时间与服务器日期时间一致( YYYY-MM-DD HH:MM:SS.FFF )*!*以下cSqlStr及nCon为SQL查询串及连接句柄cSqlStr="Select Sy ...

  10. python常用模块集合

    python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...