精华内容
下载资源
问答
  • 关于DH劳伦斯及其最有争议的作品特利夫人的情人》,存在着各种理论。 本文首先介绍了DH劳伦斯及其作品《特利夫人的情人》,然后试图从传统批评和心理批评的角度对作者和作品进行审查。 主要通过传统方法和心理...
  • 作者:刘运、杨逸谋 登陆页面 后台系统设置页面  本考生查询系统是一个方便、快捷、科学考生成绩查询管理软件,其所有功能均为招生就业处考生查询工作量身定做,以达到系统优质化管理。 根据考生查询...

    广西师范学院艺术成绩查询系统

    作者:刘运、杨逸谋

    登陆页面

    后台系统设置页面

           本考生查询系统是一个方便、快捷、科学的考生成绩查询管理软件,其所有功能均为招生就业处考生查询工作量身定做,以达到系统的优质化管理。
    根据考生查询系统需求分析说明书,其功能共分为三大模块,

    1,数据管理,数据查询和权限设置,其中数据管理包括数据导入,修改基本信息和清空。

    2,设定查分类型,包括总分查询和各科分数查询

     

     

    展开全文
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yangfei520.blog.51cto.com/1041581/287380 在hibernate使用中,大家多数时间都在讨论...

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yangfei520.blog.51cto.com/1041581/287380
        在hibernate的使用中,大家多数时间都在讨论一级缓存和二级缓存,而往往忽略了查询缓存。其实hibernate的查询缓存在使用过程中也起着同样重要的作用。hibernate的查询缓存是主要是针对普通属性结果集的缓存, 而对于实体对象的结果集只缓存id。在一级缓存,二级缓存和查询缓存都打开的情况下作查询操作时这样的:查询普通属性,会先到查询缓存中取,如果没有,则查询数据库;查询实体,会先到查询缓存中取id,如果有,则根据id到缓存(一级/二级)中取实体,如果缓存中取不到实体,再查询数据库。
     
        和一级/二级缓存不同,查询缓存的生命周期 ,是不确定的,当前关联的表发生改变时,查询缓存的生命周期结束。
     
         查询缓存的配置和使用也是很简单的:
             1>查询缓存的启用不但要在配置文件中进行配置
                 <property name="hibernate.cache.use_query_cache">true</property>
             2>还要在程序中显示的进行启用
                 query.setCacheable(true);
     
    1.实体类:
      Student.jsva
    public class Student { 
      private Integer id; 
      private String name; 
      //一系列的setter.getter方法 
    }
     
    2.映射文件
      Student.hbm.xml
      <class name="com.sxt.hibernate.cache.entity.Student" table="sxt_hibernate_student"> 
             
        <!-- 指定本类的对象使用二级缓存(这也可以放在hibernate.cfg.xml中统一指定) --> 
        <!-- 
        <cache usage="read-only"/> 
         
    --> 
        <id name="id" length="4"> 
          <generator class="native"></generator> 
        </id> 
        <property name="name" length="10"></property> 
      </class>
     
    3.hibernate配置文件:
      hibernate.cfg.xml
    <hibernate-configuration> 
      <session-factory> 
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:ORCL10</property> 
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
        <property name="hibernate.connection.username">scott</property> 
        <property name="hibernate.connection.password">yf123</property> 
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property> 
        <property name="hibernate.show_sql">true</property> 
         
        <!-- 开启二级缓存,其实hibernate默认就是开启的,这里显示的指定一下 --> 
        <property name="hibernate.cache.use_second_level_cache">true</property> 
        <!-- 指定二级缓存产品的提供商 --> 
        <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> 
         
        <!-- 启用查询缓存 --> 
        <property name="hibernate.cache.use_query_cache">true</property> 
         
        <mapping resource="com/sxt/hibernate/cache/entity/Student.hbm.xml"/> 
         
        <!-- 指定那些类使用二级缓存 --> 
        <class-cache usage="read-only" class="com.sxt.hibernate.cache.entity.Student"/> 
      </session-factory> 
    </hibernate-configuration>
     
    4.测试方法:
      public static void main(String[] args) { 
        Session session = null
        Transaction t = null

        *//** 
         * 开启查询缓存,关闭二级缓存, 开启一个session,分别调用query.list 
         */
     
      //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
      /* 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          List<String> names = query.list(); 
          for (Iterator<String> it = names.iterator(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 
          System.out.println("================================"); 
          query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存 
          query.setCacheable(true); 
          //没有发出查询语句,因为这里使用的查询缓存 
          names = query.list(); 
          for (Iterator<String> it = names.iterator(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }*/
     
        
    /*  @SuppressWarnings("unchecked") 
      public static void main(String[] args) { 
        Session session = null; 
        Transaction t = null; 

        *//** 
         * 开启查询缓存,关闭二级缓存, 开启两个session,分别调用query.list 
         *//* 
        //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存    
          //query.setCacheable(true); 
          List<String> names = query.list(); 
          for (Iterator<String> it = names.iterator(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 

          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
         
        System.out.println("================================"); 
         
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存    
          //query.setCacheable(true); 
          //不会发出查询语句,因为查询缓存和session无关. 
          List<String> names = query.list(); 
          for (Iterator<String> it = names.iterator(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }*/
     
        
    /*  @SuppressWarnings("unchecked") 
      public static void main(String[] args) { 
        Session session = null; 
        Transaction t = null; 

        *//** 
         * 开启查询缓存,关闭二级缓存, 开启两个session,分别调用query.iterate 
         *//* 
        //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          for (Iterator<String> it = query.iterate(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
         
        System.out.println("================================"); 
         
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s.name from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          //会发出查询语句,因为query.iterate不使用查询缓存 
          for (Iterator<String> it = query.iterate(); it.hasNext();) { 
            String name = it.next(); 
            System.out.println(name); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }*/
     
        
    /*    @SuppressWarnings("unchecked") 
      public static void main(String[] args) { 
        Session session = null; 
        Transaction t = null; 

        *//** 
         * 关闭查询缓存,关闭二级缓存, 开启两个session,分别调用query.list查询实体对象 
         *//* 
        //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          //query.setCacheable(true); 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
         
        System.out.println("================================"); 
         
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          //query.setCacheable(true); 
          //会发出查询语句,因为list默认每次都会发出sql语句 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }*/
     
        
    /*  @SuppressWarnings("unchecked") 
      public static void main(String[] args) { 
        Session session = null; 
        Transaction t = null; 

        *//** 
         * 开启查询缓存,关闭二级缓存, 开启两个session,分别调用query.list查询实体对象 
         *//* 
        //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
         
        System.out.println("================================"); 
         
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          //会发出根据id查询实体的n条查询语句,因为这种情况下,查询过程是这样的: 
          // 在第一次执行list时,会把查询对象的id缓存到查询缓存里 
          // 第二次执行list时, 会遍历查询缓存里的id到缓存里去找实体对象,由于这里没找到实体对象, 
          //所以就发出n条查询语句到数据库中查询. 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }*/
     
        
      @SuppressWarnings("unchecked"
      public static void main(String[] args) { 
        Session session = null
        Transaction t = null

        /** 
         * 开启查询缓存,开启二级缓存, 开启两个session,分别调用query.list查询实体对象 
         */
     
        //如果不用查询缓存的话,那两个都发出查询语句,这也是默认的情况. 
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
         
        System.out.println("================================"); 
         
        try { 
          session = HibernateUtils.getSession(); 
          t = session.beginTransaction(); 
          Query query = session.createQuery("select s from Student s"); 
          //启用查询缓存    
          query.setCacheable(true); 
          //不会发出查询语句,因为这种情况下,查询过程是这样的: 
          // 在第一次执行list时,会把查询对象的id缓存到查询缓存里 
          // 第二次执行list时, 会遍历查询缓存里的id到缓存里去找实体对象,由于这里开启了二级缓存,可以找到目标实体对象, 
          //所以就不会再发出n条查询语句. 
          List<Student> students = query.list(); 
          for (Iterator<Student> it = students.iterator(); it.hasNext();) { 
            Student s = it.next(); 
            System.out.println(s.getName()); 
          } 
          t.commit(); 
        } catch (Exception e) { 
          e.printStackTrace(); 
          t.rollback(); 
        } finally { 
          HibernateUtils.closeSession(session); 
        } 
      }

    本文出自 “夜狼” 博客,请务必保留此出处http://yangfei520.blog.51cto.com/1041581/287380

    展开全文
  •  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.查询执行路径  一条SQL查询语句执行过程大致如下图所示:  1>.客户端和服务端通过mysql协议进行通信,mysql服务器...

                         MySQL简单查询详解-单表查询

                                            作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

     

    一.查询的执行路径
      一条SQL查询语句的执行过程大致如下图所示:
      1>.客户端和服务端通过mysql协议进行通信,mysql服务器通过某种客户端发送来的查询语句的时候,首先会去本地检验缓存是否命中,如果请求的SQL语句之前有本查询过,就会把之前的查询结果直接返回给用户(查询缓存的功能最少要满足三成以上才有意义,如果所有的查询都去用缓存且所有的SQL没有一次被命中的话就毫无意义啦。);
      2>.如果查询的SQL没有命中,就会将SQL的请求交给解析器进行解析操作。必要时在预处理器的配合下,解析器会生成一个解析树,这个解析树会有很多条执行路径去查询我们想要得到的SQL结果;
      3>.如此多的执行路径就会交给查询优化器进行查询操作,查询优化器会选择资源开销最少的路径去执行SQL语句,与此同时,它还可能改写SQL语句,只要改写的结果和用户要查询的结果一致即可,查询优化器选择最优的一条执行路径之后又将这个结果交给查询执行计划进行排队(注意,MySQL的用户同时查询可能不止一个,因此并发的时候需要给它一个队列,哪些查询比较先进的会优先被查询到返回给用户);
      4>.以上的所有操作都没有执行的权限,最终执行查询操作的还是查询执行引擎。但是查询引擎并不能直接到磁盘上取数据,查询引擎本事只是把查询请求转换成对应表的存储引擎的API调用;
      5>.我们知道存储引擎其实是表类型,存储引擎根据查询执行引擎的API调用从磁盘上获取对方所需要的数据并层层返回给用户,在返回的途中,mysql还要考虑是否将查询结果进行缓存操作。
    二.选择和投影
    1.投影和选择
      投影其实就是挑选要符合的字段,选择就是挑选符合条件的行。
      投影:select 字段1,字段2,... from tb_name;
        常用语法格式:selcet * from tb_name;
      选择:select 字段1,字段2,.... from tb_name where 子句(布尔条件表达式);
     
    2.布尔条件表达式操作符
      = 等值比较
      <=>:跟空值比较不会产生额外信息
      <>:不等值
      <:
      <=
      >
      >=
      IS NULL:是否为空
      IS NOT NULL:是否不空
      LIKE:支持的通配符%(任意长度的任意字符) _(任意单个字符)
      RLIKE,REGEXP:支持使用正则表达式作为条件(注意LIKE和RLIKE都是用来做字符比较的,如果用来做数值比较的话性能就相当低了。)
      IN:判断某行的某一字段的值是否在给定的列表中
      BETWEEN...AND....:判断指定的值是否位于指定的范围之间(比如,判断一个数值在10和20之间,我们就可以这样写"X BETWEEN 10 AND 20")
    案例展示:
      1 mysql> create table stars(SID int unsigned auto_increment not null unique key,Name char(50) not null,Age tinyint unsigned not null,Gender Enum('boy','girl') not null, Tearch char(50));
      2 Query OK, 0 rows affected (0.01 sec)
      3 
      4 mysql>
      5 mysql> desc stars;
      6 +--------+---------------------+------+-----+---------+----------------+
      7 | Field  | Type                | Null | Key | Default | Extra          |
      8 +--------+---------------------+------+-----+---------+----------------+
      9 | SID    | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
     10 | Name   | char(50)            | NO   |     | NULL    |                |
     11 | Age    | tinyint(3) unsigned | NO   |     | NULL    |                |
     12 | Gender | enum('boy','girl')  | NO   |     | NULL    |                |
     13 | Tearch | char(50)            | YES  |     | NULL    |                |
     14 +--------+---------------------+------+-----+---------+----------------+
     15 5 rows in set (0.00 sec)
     16 
     17 mysql> 
     18 mysql> insert into stars values (1,"sun wukong",27,'boy','putilaozu'),(2,'yinzhengjie',18,'boy','himslef'),(3,'liufei',21,'boy','jia baoyu');
     19 Query OK, 3 rows affected (0.00 sec)
     20 Records: 3  Duplicates: 0  Warnings: 0
     21 
     22 mysql> 
     23 mysql> insert into stars values (4,"han senyu",17,'boy','cang laoshi'),(5,'jia shanpeng',16,'boy','ji laosi'),(6,'wu zhiguang',21,'boy','ma laoshi');
     24 Query OK, 3 rows affected (0.00 sec)
     25 Records: 3  Duplicates: 0  Warnings: 0
     26 
     27 mysql> 
     28 mysql> select * from stars;
     29 +-----+--------------+-----+--------+-------------+
     30 | SID | Name         | Age | Gender | Tearch      |
     31 +-----+--------------+-----+--------+-------------+
     32 |   1 | sun wukong   |  27 | boy    | putilaozu   |
     33 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     34 |   3 | liufei       |  21 | boy    | jia baoyu   |
     35 |   4 | han senyu    |  17 | boy    | cang laoshi |
     36 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
     37 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
     38 +-----+--------------+-----+--------+-------------+
     39 6 rows in set (0.00 sec)
     40 mysql> select * from stars where Age between 16 and 20;
     41 +-----+--------------+-----+--------+-------------+
     42 | SID | Name         | Age | Gender | Tearch      |
     43 +-----+--------------+-----+--------+-------------+
     44 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     45 |   4 | han senyu    |  17 | boy    | cang laoshi |
     46 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
     47 +-----+--------------+-----+--------+-------------+
     48 3 rows in set (0.00 sec)
     49 
     50 mysql> 
     51 mysql> select Name,Age from stars where Age in (18,21);
     52 +-------------+-----+
     53 | Name        | Age |
     54 +-------------+-----+
     55 | yinzhengjie |  18 |
     56 | liufei      |  21 |
     57 | wu zhiguang |  21 |
     58 +-------------+-----+
     59 3 rows in set (0.00 sec)
     60 
     61 mysql> 
     62 mysql> select Name,Age from stars where Name rlike '^y.*';
     63 +-------------+-----+
     64 | Name        | Age |
     65 +-------------+-----+
     66 | yinzhengjie |  18 |
     67 +-------------+-----+
     68 1 row in set (0.00 sec)
     69 
     70 mysql> 
     71 mysql> insert into stars values(7,'jenny',11,'girl','Li ming'),(8,'danny',14,'boy',NULL);
     72 Query OK, 2 rows affected (0.00 sec)
     73 Records: 2  Duplicates: 0  Warnings: 0
     74 
     75 mysql> select * from stars;
     76 +-----+--------------+-----+--------+-------------+
     77 | SID | Name         | Age | Gender | Tearch      |
     78 +-----+--------------+-----+--------+-------------+
     79 |   1 | sun wukong   |  27 | boy    | putilaozu   |
     80 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     81 |   3 | liufei       |  21 | boy    | jia baoyu   |
     82 |   4 | han senyu    |  17 | boy    | cang laoshi |
     83 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
     84 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
     85 |   7 | jenny        |  11 | girl   | Li ming     |
     86 |   8 | danny        |  14 | boy    | NULL        |
     87 +-----+--------------+-----+--------+-------------+
     88 8 rows in set (0.00 sec)
     89 
     90 mysql> 
     91 mysql> select Name,Tearch from stars where Tearch is NULL;
     92 +-------+--------+
     93 | Name  | Tearch |
     94 +-------+--------+
     95 | danny | NULL   |
     96 +-------+--------+
     97 1 row in set (0.00 sec)
     98 
     99 mysql> select Name,Tearch from stars where Tearch is NOT NULL;
    100 +--------------+-------------+
    101 | Name         | Tearch      |
    102 +--------------+-------------+
    103 | sun wukong   | putilaozu   |
    104 | yinzhengjie  | himslef     |
    105 | liufei       | jia baoyu   |
    106 | han senyu    | cang laoshi |
    107 | jia shanpeng | ji laosi    |
    108 | wu zhiguang  | ma laoshi   |
    109 | jenny        | Li ming     |
    110 +--------------+-------------+
    111 7 rows in set (0.00 sec)
    112 
    113 mysql> 
    3.组合条件测试
      NOT !
      AND &&
      OR ||
    案例展示:
     1 mysql> select database();
     2 +-------------+
     3 | database()  |
     4 +-------------+
     5 | yinzhengjie |
     6 +-------------+
     7 1 row in set (0.00 sec)
     8 
     9 mysql> show tables;
    10 +-----------------------+
    11 | Tables_in_yinzhengjie |
    12 +-----------------------+
    13 | stars                 |
    14 | t1                    |
    15 +-----------------------+
    16 2 rows in set (0.01 sec)
    17 
    18 mysql> 
    19 mysql> select * from stars;
    20 +-----+--------------+-----+--------+-------------+
    21 | SID | Name         | Age | Gender | Tearch      |
    22 +-----+--------------+-----+--------+-------------+
    23 |   1 | sun wukong   |  27 | boy    | putilaozu   |
    24 |   2 | yinzhengjie  |  18 | boy    | himslef     |
    25 |   3 | liufei       |  21 | boy    | jia baoyu   |
    26 |   4 | han senyu    |  17 | boy    | cang laoshi |
    27 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
    28 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
    29 |   7 | jenny        |  11 | girl   | Li ming     |
    30 |   8 | danny        |  14 | boy    | NULL        |
    31 +-----+--------------+-----+--------+-------------+
    32 8 rows in set (0.00 sec)
    33 
    34 mysql> select Name,Age from stars where Age > 16 and Gender = 'boy';
    35 +-------------+-----+
    36 | Name        | Age |
    37 +-------------+-----+
    38 | sun wukong  |  27 |
    39 | yinzhengjie |  18 |
    40 | liufei      |  21 |
    41 | han senyu   |  17 |
    42 | wu zhiguang |  21 |
    43 +-------------+-----+
    44 5 rows in set (0.00 sec)
    45 
    46 mysql> 
    4.排序
      order by ‘排序字段’
      默认为升序:ASC
      降序:DESC
    案例展示:
     1 mysql> select * from stars;
     2 +-----+--------------+-----+--------+-------------+
     3 | SID | Name         | Age | Gender | Tearch      |
     4 +-----+--------------+-----+--------+-------------+
     5 |   1 | sun wukong   |  27 | boy    | putilaozu   |
     6 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     7 |   3 | liufei       |  21 | boy    | jia baoyu   |
     8 |   4 | han senyu    |  17 | boy    | cang laoshi |
     9 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
    10 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
    11 |   7 | jenny        |  11 | girl   | Li ming     |
    12 |   8 | danny        |  14 | boy    | NULL        |
    13 +-----+--------------+-----+--------+-------------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> 
    17 mysql> select Name,Age from stars where Age > 16 and Gender = 'boy' order by Name desc;
    18 +-------------+-----+
    19 | Name        | Age |
    20 +-------------+-----+
    21 | yinzhengjie |  18 |
    22 | wu zhiguang |  21 |
    23 | sun wukong  |  27 |
    24 | liufei      |  21 |
    25 | han senyu   |  17 |
    26 +-------------+-----+
    27 5 rows in set (0.00 sec)
    28 
    29 mysql> select Name,Age from stars where Age > 16 and Gender = 'boy' order by Name asc;
    30 +-------------+-----+
    31 | Name        | Age |
    32 +-------------+-----+
    33 | han senyu   |  17 |
    34 | liufei      |  21 |
    35 | sun wukong  |  27 |
    36 | wu zhiguang |  21 |
    37 | yinzhengjie |  18 |
    38 +-------------+-----+
    39 5 rows in set (0.00 sec)
    40 
    41 mysql> 
    5.常用内置的聚合函数
      关键字如下:
        1>.SUM():运算和
        2>.AVG():运算平均值
        3>.MAX():运算最大值
        5>.MIN():运算最小值
        6>.COUNT():运算个数统计
    案例展示:
     1 mysql> select * from stars;
     2 +-----+--------------+-----+--------+-------------+
     3 | SID | Name         | Age | Gender | Tearch      |
     4 +-----+--------------+-----+--------+-------------+
     5 |   1 | sun wukong   |  27 | boy    | putilaozu   |
     6 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     7 |   3 | liufei       |  21 | boy    | jia baoyu   |
     8 |   4 | han senyu    |  17 | boy    | cang laoshi |
     9 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
    10 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
    11 |   7 | jenny        |  11 | girl   | Li ming     |
    12 |   8 | danny        |  14 | boy    | NULL        |
    13 +-----+--------------+-----+--------+-------------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> select SUM(Age) from stars;
    17 +----------+
    18 | SUM(Age) |
    19 +----------+
    20 |      145 |
    21 +----------+
    22 1 row in set (0.00 sec)
    23 
    24 mysql> select MAX(Age) from stars;
    25 +----------+
    26 | MAX(Age) |
    27 +----------+
    28 |       27 |
    29 +----------+
    30 1 row in set (0.00 sec)
    31 
    32 mysql> select MIN(Age) from stars;
    33 +----------+
    34 | MIN(Age) |
    35 +----------+
    36 |       11 |
    37 +----------+
    38 1 row in set (0.00 sec)
    39 
    40 mysql> select COUNT(Age) from stars;
    41 +------------+
    42 | COUNT(Age) |
    43 +------------+
    44 |          8 |
    45 +------------+
    46 1 row in set (0.00 sec)
    47 
    48 mysql> select COUNT(*) from stars;            #这种用法不建议,“*”的效率是非常低的,不如加入一个字段进去!
    49 +----------+
    50 | COUNT(*) |
    51 +----------+
    52 |        8 |
    53 +----------+
    54 1 row in set (0.00 sec)
    55 
    56 mysql> 
    57 mysql> select SUM(Age) from stars where Age > 21;
    58 +----------+
    59 | SUM(Age) |
    60 +----------+
    61 |       27 |
    62 +----------+
    63 1 row in set (0.00 sec)
    64 
    65 mysql> 
    6.分组
      关键字:group by
    案例展示:
     1 mysql> select * from stars;
     2 +-----+--------------+-----+--------+-------------+
     3 | SID | Name         | Age | Gender | Tearch      |
     4 +-----+--------------+-----+--------+-------------+
     5 |   1 | sun wukong   |  27 | boy    | putilaozu   |
     6 |   2 | yinzhengjie  |  18 | boy    | himslef     |
     7 |   3 | liufei       |  21 | boy    | jia baoyu   |
     8 |   4 | han senyu    |  17 | boy    | cang laoshi |
     9 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
    10 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
    11 |   7 | jenny        |  11 | girl   | Li ming     |
    12 |   8 | danny        |  14 | boy    | NULL        |
    13 +-----+--------------+-----+--------+-------------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> 
    17 mysql> 
    18 mysql> select Gender,SUM(Age) from stars group by Gender;
    19 +--------+----------+
    20 | Gender | SUM(Age) |
    21 +--------+----------+
    22 | boy    |      134 |
    23 | girl   |       11 |
    24 +--------+----------+
    25 2 rows in set (0.00 sec)
    26 
    27 mysql> 
    7.对分组的条件过滤
      关键字:having
    案例展示:
      1 mysql> select * from stars;
      2 +-----+--------------+-----+--------+-------------+
      3 | SID | Name         | Age | Gender | Tearch      |
      4 +-----+--------------+-----+--------+-------------+
      5 |   1 | sun wukong   |  27 | boy    | putilaozu   |
      6 |   2 | yinzhengjie  |  18 | boy    | himslef     |
      7 |   3 | liufei       |  21 | boy    | jia baoyu   |
      8 |   4 | han senyu    |  17 | boy    | cang laoshi |
      9 |   5 | jia shanpeng |  16 | boy    | ji laosi    |
     10 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |
     11 |   7 | jenny        |  11 | girl   | Li ming     |
     12 |   8 | danny        |  14 | boy    | NULL        |
     13 +-----+--------------+-----+--------+-------------+
     14 8 rows in set (0.00 sec)
     15 
     16 mysql> 
     17 mysql> alter table stars add ClassID tinyint unsigned;
     18 Query OK, 8 rows affected (0.00 sec)
     19 Records: 8  Duplicates: 0  Warnings: 0
     20 
     21 mysql> 
     22 mysql> select * from stars;
     23 +-----+--------------+-----+--------+-------------+---------+
     24 | SID | Name         | Age | Gender | Tearch      | ClassID |
     25 +-----+--------------+-----+--------+-------------+---------+
     26 |   1 | sun wukong   |  27 | boy    | putilaozu   |    NULL |
     27 |   2 | yinzhengjie  |  18 | boy    | himslef     |    NULL |
     28 |   3 | liufei       |  21 | boy    | jia baoyu   |    NULL |
     29 |   4 | han senyu    |  17 | boy    | cang laoshi |    NULL |
     30 |   5 | jia shanpeng |  16 | boy    | ji laosi    |    NULL |
     31 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |    NULL |
     32 |   7 | jenny        |  11 | girl   | Li ming     |    NULL |
     33 |   8 | danny        |  14 | boy    | NULL        |    NULL |
     34 +-----+--------------+-----+--------+-------------+---------+
     35 8 rows in set (0.00 sec)
     36 
     37 mysql> update stars set ClassID = 1 where SID = 1;
     38 Query OK, 1 row affected (0.00 sec)
     39 Rows matched: 1  Changed: 1  Warnings: 0
     40 
     41 mysql> update stars set ClassID = 3 where SID = 2;
     42 Query OK, 1 row affected (0.00 sec)
     43 Rows matched: 1  Changed: 1  Warnings: 0
     44 
     45 mysql> update stars set ClassID = 5 where SID = 3;
     46 Query OK, 1 row affected (0.00 sec)
     47 Rows matched: 1  Changed: 1  Warnings: 0
     48 
     49 mysql> update stars set ClassID = 2 where SID = 4;
     50 Query OK, 1 row affected (0.01 sec)
     51 Rows matched: 1  Changed: 1  Warnings: 0
     52 
     53 mysql> update stars set ClassID = 4 where SID = 5;
     54 Query OK, 1 row affected (0.00 sec)
     55 Rows matched: 1  Changed: 1  Warnings: 0
     56 
     57 mysql> update stars set ClassID = 2 where SID = 6;
     58 Query OK, 1 row affected (0.00 sec)
     59 Rows matched: 1  Changed: 1  Warnings: 0
     60 
     61 mysql> update stars set ClassID = 3 where SID = 7;
     62 Query OK, 1 row affected (0.00 sec)
     63 Rows matched: 1  Changed: 1  Warnings: 0
     64 
     65 mysql> update stars set ClassID = 2 where SID = 8;
     66 Query OK, 1 row affected (0.00 sec)
     67 Rows matched: 1  Changed: 1  Warnings: 0
     68 
     69 mysql> 
     70 mysql> select * from stars;
     71 +-----+--------------+-----+--------+-------------+---------+
     72 | SID | Name         | Age | Gender | Tearch      | ClassID |
     73 +-----+--------------+-----+--------+-------------+---------+
     74 |   1 | sun wukong   |  27 | boy    | putilaozu   |       1 |
     75 |   2 | yinzhengjie  |  18 | boy    | himslef     |       3 |
     76 |   3 | liufei       |  21 | boy    | jia baoyu   |       5 |
     77 |   4 | han senyu    |  17 | boy    | cang laoshi |       2 |
     78 |   5 | jia shanpeng |  16 | boy    | ji laosi    |       4 |
     79 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |       2 |
     80 |   7 | jenny        |  11 | girl   | Li ming     |       3 |
     81 |   8 | danny        |  14 | boy    | NULL        |       2 |
     82 +-----+--------------+-----+--------+-------------+---------+
     83 8 rows in set (0.00 sec)
     84 
     85 mysql> 
     86 mysql> select ClassID,Count(Name),sum(Age) from stars group by ClassID;
     87 +---------+-------------+----------+
     88 | ClassID | Count(Name) | sum(Age) |
     89 +---------+-------------+----------+
     90 |       1 |           1 |       27 |
     91 |       2 |           3 |       52 |
     92 |       3 |           2 |       29 |
     93 |       4 |           1 |       16 |
     94 |       5 |           1 |       21 |
     95 +---------+-------------+----------+
     96 5 rows in set (0.00 sec)
     97 
     98 mysql> 
     99 mysql> select ClassID,Count(Name) from stars group by ClassID having Count(Name) >=2;
    100 +---------+-------------+
    101 | ClassID | Count(Name) |
    102 +---------+-------------+
    103 |       2 |           3 |
    104 |       3 |           2 |
    105 +---------+-------------+
    106 2 rows in set (0.00 sec)
    107 
    108 mysql> 
    109 mysql> select ClassID from stars group by ClassID having sum(Age) >=50;
    110 +---------+
    111 | ClassID |
    112 +---------+
    113 |       2 |
    114 +---------+
    115 1 row in set (0.00 sec)
    116 
    117 mysql> 
    8.只返回有用的行
      关键字:LIMIT(一个数为显示的行数,两个数字为偏移第一个数字行,显示第二个数字)
    案例展示:
     
     1 mysql> select * from stars ;
     2 +-----+--------------+-----+--------+-------------+---------+
     3 | SID | Name         | Age | Gender | Tearch      | ClassID |
     4 +-----+--------------+-----+--------+-------------+---------+
     5 |   1 | sun wukong   |  27 | boy    | putilaozu   |       1 |
     6 |   2 | yinzhengjie  |  18 | boy    | himslef     |       3 |
     7 |   3 | liufei       |  21 | boy    | jia baoyu   |       5 |
     8 |   4 | han senyu    |  17 | boy    | cang laoshi |       2 |
     9 |   5 | jia shanpeng |  16 | boy    | ji laosi    |       4 |
    10 |   6 | wu zhiguang  |  21 | boy    | ma laoshi   |       2 |
    11 |   7 | jenny        |  11 | girl   | Li ming     |       3 |
    12 |   8 | danny        |  14 | boy    | NULL        |       2 |
    13 +-----+--------------+-----+--------+-------------+---------+
    14 8 rows in set (0.00 sec)
    15 
    16 mysql> 
    17 mysql> select * from stars limit 2;
    18 +-----+-------------+-----+--------+-----------+---------+
    19 | SID | Name        | Age | Gender | Tearch    | ClassID |
    20 +-----+-------------+-----+--------+-----------+---------+
    21 |   1 | sun wukong  |  27 | boy    | putilaozu |       1 |
    22 |   2 | yinzhengjie |  18 | boy    | himslef   |       3 |
    23 +-----+-------------+-----+--------+-----------+---------+
    24 2 rows in set (0.00 sec)
    25 
    26 mysql> select * from stars limit 2,3;
    27 +-----+--------------+-----+--------+-------------+---------+
    28 | SID | Name         | Age | Gender | Tearch      | ClassID |
    29 +-----+--------------+-----+--------+-------------+---------+
    30 |   3 | liufei       |  21 | boy    | jia baoyu   |       5 |
    31 |   4 | han senyu    |  17 | boy    | cang laoshi |       2 |
    32 |   5 | jia shanpeng |  16 | boy    | ji laosi    |       4 |
    33 +-----+--------------+-----+--------+-------------+---------+
    34 3 rows in set (0.00 sec)
    35 
    36 mysql> 
    9.select语句的执行流程
      from clause --> where clause --> group by --> having clause -->order by --> select -->limit
    select常用的修饰符:
      distinct 重复的只显示一次
      SQL_CACHE 缓存查询结果
      SQL_NO_CACHE 不缓存查询结果
     
    10.小试牛刀
      我比较喜欢看日本的一个动漫叫《火影忍者》,如果要存储一些人员信息的话,我们应该如何搞呢?请用多张表将下面表格的信息保存。相信这对大家来说应该都是小case,如果你忘记如何写SQL语句的话,可以参考:http://www.cnblogs.com/yinzhengjie/p/7862654.html

     

    转载于:https://www.cnblogs.com/yinzhengjie/p/7858304.html

    展开全文
  • 问题:有一张作品表和作者表,需要找出每个作者的某一个条件(点赞)最大的作品,作品对应这作者,所以作品需要按照作者进行分类,然后查找出每个作者作品集里面点赞最大的作品!  刚开始写的代码很简单:我的思路...

    问题:有一张作品表和作者表,需要找出每个作者的某一个条件(点赞)最大的作品,作品对应这作者,所以作品需要按照作者进行分类,然后查找出每个作者作品集里面点赞最大的作品!

           刚开始写的代码很简单:我的思路是查询两张表,一张作品表先以作者group by;然后以max(点赞)进行排序,查出对应的作者信息。但是问题来啦,这种方法可以实现每个作者排序,但是查询不出每个作者相对应的最大点赞数的作品,只能查询到该作者的第一个作品(作品时间最早的,也就是作品id最小的)。由于没有对SQL深入了解,我也不清楚什么原因;代码如下

    <pre name="code" class="sql">select users.user_name,
    users.user_id,
    users.openid,
    users.province,
    users.city,
    max(products.product_prainse)as max_prainse
    from users,products where users.user_id=products.user_id group by users.user_id order by max_prainse 


    
    

    
    
    后来在网上搜资料查到了


    参考了之后瞎编出来了


    然而竟然实现了!




    以上代码都是小生自己zhengli的有啥不对的地方请多多指教!


    展开全文
  • 整理一下Entity Framework查询 2012-08-30 13:41:59 标签:Entity Framework 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。...
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenpiaoping.blog.51cto.com/5631143/1365106 HttpSM.cc DNS查询(包括hostdb查询)...
  • Java基础-SSM之mybatis统计函数和分页查询  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。...
  • Hadoop基础-HDFSAPI实现增删改  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。  本篇博客开发IDE使用是Idea,如果没有安装Idea软件可以去下载安装,如何安装IDE可以参考我...
  • MySQL查询缓存

    2017-11-26 09:23:00
     作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.什么是MySQL查询缓存  用于保存MySQL查询语句返回完整结果,被命中时,MySQL会立即返回结果,省去解析、优化和执行等操作。把...
  • 作者:熔 岩日期:2007-01-09MSN :[email]leizhimin@126.com[/email]声明:原创作品,未经授权,谢绝转载!     目标:通过一个简单例子演示PreparedStatement用法!   /** * File Name: ...
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://fengyp.blog.51cto.com/276754/53456 我在使用数据库查询语句时,出现了乱码,为了解决这...
  • 汽车之家是国内早期的关于汽车行业的一个热门网站,里面有各种汽车的介绍图文和视频,那么当我们有的时候需要用到借鉴下里面某个作者的视频的时候,该如何快速批量去导出视频呢。 我们打开汽车之家的网站,去上面...
  • 汽车之家是关于介绍汽车的一个热门网站,里面有各种汽车的介绍图文和视频,那么当我们有的时候需要用到借鉴下里面某个作者的视频的时候,该如何快速批量去导出视频呢。 准备工具 【【视.频.批.量.下.载.高.手】】 ...
  • 并不能查询所有的PowerBuilder函数,一些最常用的都能到,自己收集整理的,不管PB发展的什么时候,基础的始终是基础的,因此不会落后哦,chm制作的不是太好,希望大家能多支持作者,都会有更好的作品出来哦。
  • 原创作品,允许转载,转载时请务必标明作者信息和声明本文章==》http://www.cnblogs.com/zhu520/p/7774144.html 这边文章是接刚刚前一遍基础上敲SSH框架多表查询和增删查改 (方法一)上 一: 现在...
  • 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://chenpiaoping.blog.51cto.com/5631143/1369287  上面说过类ICPProcessorExt对外提供...
  • 基于Spark1.6,使用Spark SQL框架和sqlite数据库,把唐诗三百首,宋诗三百首和元明清诗精选导入数据库,可以按来源,体裁及作者,方便地查出诗句或试题中包含某个关键字的作品,还可以在选中作品后,进行五绝,七绝...
  • 幼儿园 将 Shadertoys 打包成桌面可执行文件。 目的 对于懒惰/想成为演示编码器人,...将着色器名称、作者和描述写入目录中 README 文件 调用 CMake 和 Visual Studio 来创建可执行文件 将exe复制到新目录 将 SD
  • 如何进行CIP查询

    千次阅读 2012-12-31 13:53:44
    正规出版物都有一个ISBN号,可以通过国家正规的途径查询到,书籍如何进行CIP查询就是许多出书人关心的问题,作者或者出书人进行CIP查询,查询出版社或者代理机构为自己出版的作品,是否是正规的就非常重要。...
  • 作品集-源码

    2021-02-10 04:43:28
    作品集 我使用jQuery和Bootstrap创建网站组合第一个版本。 决定采用一页设计,以便于观看,并更好地展示我希望观众看到信息。 我打算在该站点下一个版本中探索不同CSS框架并使用React。 在该站点博客部分...
  • 原创作品,允许转载,转载时请务必标明作者信息和声明本文章==》 http://www.cnblogs.com/zhu520/p/7772823.html 因为最近在做Android 练习项目,使用增删查改时候还是使用jdbc增删查改 发现实在是太麻烦了...
  • SQL DISTINCT 多字段查询用法

    千次阅读 2016-02-17 18:18:01
    使用distinct 的困惑: 我现在有一个表book有两个字段 作者 作品 auther article 记录值如下 ...张三 作品一 ...李四 作品二 ...张三 作品三 ...张三 作品四 ...我现在想读取每位作者的代表作和作者姓名 也就是如下

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 301
精华内容 120
关键字:

查作者的作品