1,查询出last_name 为 'Chen' 的 manager 的信息. 
  1. select *
  2. fromwhere employee_id = (
  3. selectfrom employees
  4. where'Chen')
2,查询每个月倒数第2 天入职的员工的信息
select last_name, hire_date  
  1. where hire_date = last_day(hire_date) – 1
 
3,查询平均工资高于 8000 的部门 id 和它的平均工资. 
SELECT department_id, avg(salary)   
    1. FROMGROUP BY department_id
    2. HAVINGavg
      查询工资最低的员工信息:last_name, salary 
      SELECT last_name, salary   
      1. FROMWHERE salary = ( SELECT min(salary)  FROM employees  )
       
      查询出 1999 年来公司的所有的员工的salary
      SELECT salary   
      1. FROMWHERE to_char(hire_date,'yyyy') = '1999'
       
      用一个SQL语句选出每个部门工资最高的员工
      select A.*
      from tab_salary A inner join 
      (select max(salary) as salary,departid as departid from tab_depart
      group by departid) B
      on A.salary=B.salary and A.departid=B.departid
       
      1. select name from Employee where Salary=(
      2. selecttopfrom  (select distinct top 2  salary from Employee order by Salary desc) as temp1
      3. orderby
      4. select  Name from [Employee]  where Salary =(
      5. selectMAXfromwherenotinselectMAXfrom
        selectb.dname,round((nvl(a.sal,2)),0) sal fromemp a,dept b wherea.deptno(+)=b.deptno groupbyb.dname;
         
         
        索引:
         
        首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'
        一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nickname='css'的数据,是不是感觉性能提升了好多咧....
        mysql的索引分为单列索引(主键索引,唯索引,普通索引)和组合索引.
        单列索引:一个索引只包含一个列,一个表可以有多个单列索引.
        组合索引:一个组合索引包含两个或两个以上的列,
         
         
        CREATE INDEX account_Index ON `award`(`account`);
         
         唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,
         
        CREATE UNIQUE INDEX account_UNIQUE_Index ON `award`(`account`);
         
        组合索引
         
        一个表中含有多个单列索引不代表是组合索引,通俗一点讲 组合索引是:包含多个字段但是只有索引名称
        CREATE INDEX nickname_account_createdTime_Index ON `award`(`nickname`, `account`, `created_time`);
        如果你建立了 组合索引(nickname_account_createdTime_Index) 那么他实际包含的是3个索引 (nickname) (nickname,account)(nickname,account,created_time)
         
        删除索引的mysql格式 :DORP INDEX IndexName ON `TableName`
         
        使用索引的优点:
        1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性.
        2.建立索引可以大大提高检索的数据,以及减少表的检索行数
        3.在表连接的连接条件 可以加速表与表直接的相连 
        4.在分组和排序字句进行数据检索,可以减少查询时间中 分组 和 排序时所消耗的时间(数据库的记录会重新排序)
        5.建立索引,在查询中使用索引 可以提高性能
         
        使用索引缺点:
        1.在创建索引和维护索引 会耗费时间,随着数据量的增加而增加
        2.索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间
        3.当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快)。
         
        什么情况下不创建索引
        1.查询中很少使用到的列 不应该创建索引,如果建立了索引然而还会降低mysql的性能和增大了空间需求.
        2.很少数据的列也不应该建立索引,比如 一个性别字段 0或者1,在查询中,结果集的数据占了表中数据行的比例比较大,mysql需要扫描的行数很多,增加索引,并不能提高效率
        3.定义为text和image和bit数据类型的列不应该增加索引,
        4.当表的修改(UPDATE,INSERT,DELETE)操作远远大于检索(SELECT)操作时不应该创建索引,这两个操作是互斥的关系
         
        B-tree
      6. where filename like '%?%'
      7. select *
        from table
        where title='21' or title like '%,21' or title like '%,21,%' or title like '21,%'

sql语句学习及索引学习,未完待续,补充增删改查的更多相关文章

  1. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  2. Es学习第三课, ElasticSearch基本的增删改查

    前面两课我们了解了ES的基本概念并且学会了安装ES,这节课我们就来讲讲ES基本的增删改查:ES主要对外界提供的是REST风格的API,我们通过客户端操作ES本质上就是API的调用.在第一课我们就讲了索 ...

  3. Java开发中的23+2种设计模式学习个人笔记(未完待续)

    注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

  4. 【EF6学习笔记】(二)操练 CRUD 增删改查

    本篇原文链接: Implementing Basic CRUD Functionality 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根 ...

  5. EF6 学习笔记(二):操练 CRUD 增删改查

    EF6学习笔记总目录 ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 接上篇: EF6 学习笔记(一):Code First 方式生成数据库及初始化数据库实际操作 本篇原文链接: I ...

  6. mongodb的学习笔记一(集合和文档的增删改查)

    1数据库的增删改查 一.增加一个数据库: use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的) 二.删除一个数据 ...

  7. spring学习(四)spring的jdbcTemplate(增删改查封装)

    Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...

  8. Elasticsearch学习系列之单模式下API的增删改查操作

    这里我们通过Elasticsearch的marvel插件实现单模式下API的增删改查操作 索引的初始化操作 创建索引之前可以对索引进行初始化操作,比如先指定shard数量以及replicas的数量 代 ...

  9. Go组件学习——gorm四步带你搞定DB增删改查

    1.简介 ORM Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作 ...

随机推荐

  1. 信步漫谈之Redis—Linux下环境搭建

    一.环境 Linux 系统:Suse11(SLES-11-SP3-DVD-x86_64-GM-DVD1)Redis 安装包:redis-4.0.11.tar.gz      下载地址:http://d ...

  2. Python中的7种可调用对象

    Python中有七种可调用对象,可调用对象可使用内置函数callable来检测 一.用户自定义的函数: 使用def语句或者lambda表达式创建的函数. 二.内置函数: 使用C语言实现的函数,如len ...

  3. java.sql.SQLException: ORA-28000: the account is locked

    解决方式:参考博客https://blog.csdn.net/java280580332/article/details/70756533

  4. 【Django模板进阶007】

    本节主要讲 Django模板中的循环,条件判断,常用的标签,过滤器的使用 列表,字典,类的实例的使用 循环:迭代显示列表,字典等中的内容 条件判断:判断是否显示该内容,比如判断是手机访问,还是电脑访问 ...

  5. c# 集合去重并筛选

    (from context in retDataList group context by context.ResourceId into g select g.OrderByDescending(b ...

  6. 使用ODP.NET连接Oracle数据库

    项目需要和第三方进行对接,奇葩的是地方没给提供接口,却提供了一个Oracle的视图 所以有了C#访问Oracle数据库的需求 1.打开nuget,安装驱动 https://www.nuget.org/ ...

  7. gcc 无法编译c17程序解决办法

    1.保证将gcc程序升级到7.1以上. 2.如果用命令行手工编译,就多加个参数-std=c++17,例如命令应该是: "g++" -std=c++17  "text.cp ...

  8. Valotile关键字详解

    在了解valotile关键字之前.我们先来了解其他相关概念. 1.1  java内存模型: 不同的平台,内存模型是不一样的,我们可以把内存模型理解为在特定操作协议下,对特定的内存或高速缓存进行读写访问 ...

  9. visual studio常用技法相关

    (1)查看dll里面包含了那些函数(dumpbin是visual studio内置工具)dumpbin -exports user32.lib (2)#include "stdlib.h&q ...

  10. Asp.net core 学习笔记 Razor Page

    更新 2019-04-27 最近做了更多的 research 发现微软视乎有意发展 razor page. razor page 的定位是 mvvm, 现在还有个叫 blazor 的东西, 类似用 c ...