zoukankan      html  css  js  c++  java
  • mysql-检索数据(select)

    一、select的基本检索

    1、检索单个列:select columnname from markname;

           并没有过滤以及排序等操作,字节返回。

    2、检索多个列:select columnname1,columnname2,columnname3 from markname;

            检索多个列,在列名之间加上逗号

    3、检索所有列:select * from markname;

               *为通配符,匹配所有,使用通配符,返回表中所有列,列的顺序一般是列在表定          义中出现的顺序

    4、检索不同的行:select distinct columnname from markname;

            使用distinct关键字,使Mysql只返回不同的值,也就是去重。

            使用distinct还可以应用于多列,诸如:

            select distinct columnname1,columnname2 from markname;

            那么以上语句的结果是除非指定的两个列内容都不同,后者所有行都将被检索出来(即必须所有列中的内容都不同才会被去重)

    5、限制结果:select columnname from markname limit num;

            使用以上语句返回不多于num行的数据。但是如果你想得到下一个5行,可以指定检索的开始行和行数:

           select columnname from markname limit num1,num2;

           从第num1行开始,去num2行

           也可以这样:

           select columnname form markname limit num1 offset num2;

              从第num2行开始,取num1行

    6、使用完全限定的表名:

               select markname.columnname from markname;

           使用限定的列名可以避免同名带来的问题

    二、排序检索数据order by

        使用order by关键字,取一个或多个列的名字,据此对输出进行排序,如下:

        select columnname from markname order by columnname;

        这条语句指定了对columnname进行排序(字符串的话按字母顺序排)

        也可以按照多个列排序,多个列之间用逗号隔开即可。如下:

        select columnname1,columnname2,columnname3 from markname order by  columnname1,columnname2;

        上述语句只会在columnname1相同时才会按columnname2进行排序。

        默认为升序(ASC),也可以调成降序(DESC)如下:

        select columnname1,columnname2,columnname3 from markname order by columnname1 desc,columnname2;(对columnname1进行降序排序,对columnname2进行默认的升序排序)

        select columnname1 from mark order by columnname1 desc limit 1;

        仅仅返回一行最少的那一个。

    三、过滤数据where

       我们可以再select语句中,通过在where子句中使用指定的搜索条件进行过滤:

       select columnname1,columnname2 from markname where columnname1=1.0;

       该语句可以从mark表中检索出两个列,但不会返回所有行,仅仅返回columnname为1.0的数据。

       在同时使用order by 和where子句时,应该让order位于where之后。

       Mysql支持的所有条件操作符:

        操作符                                                        说明

         =                                                             等于

         <>                                                         不等于

           !=                                                         不等于

            <                   小于

           <=                小于等于

         BETWEEN           在两者之间 

       1、检查单个值

        select prod_name,prod_price from products where prod_name='Fuses';

        上述语句是通过检查prod_name='Fuses',返回prod_name的值为Fuses的一行数据,Mysql在执行匹配时,数据是区分大小的。

       2、不匹配检查:

        select vend_id,prod_name form products where vend_id<>1003;(或使用!=)

       3、范围值检查:为了检查某个范围的值,我们使用between...and操作符,他需要两个值,即范围的开始和结束值,如下:

        select prod_name,prod_price from products where prod_proce between 5 and 10;

       4、空值检查:在创建表时,表设计人员可以指定其中的列是否可以不包含值,在一个列不包含值时,称其为包含空值NULL。

        select prod_name from products where prod_price is null;(用is 不用=)

       5、我们可以使用以AND子句或OR子句的方式使其具备多个where子句。

         AND(与操作符):为了通过不止一个列进行过滤,可以使用AND操作符和where子句附加条件,表示多个条件必须同时满足如下:

        select prod_id,prod_price,prod_name from products where vend_id =1003 and prod_price <=10;

        OR同理

        

       6、计算次序:where可以包含任意数目的and和or操作符,并且允许两者结合以进行复杂和高级的过滤。

        但是组合的时候会出现次序问题,and的优先级高于or。

        可以利用括号来改变计算的优先级关系

     

       7、in操作符:in操作符从来指定条件范围,范围中的每个条件都可以进行匹配,in取合法值的由逗号分割的清单,全都括在括号中。 

        select prod_name,prod_price from products where vend_id in(1002,1003) order by prod_name;

        in中还可以包含其他的select语句,使得更动态的建立where子句。

       8、not操作符:用它来否定它之后说跟的任何条件

        select rod_name,prod_price form products where vend_id not in(1002,1003) order by prod_name;

        与7中的in功能相反

      

    四、用通配符进行过滤

      1、like操作符:通配符用来匹配值的一部分的特殊字符。通配符本身实际是SQL的where子句中有特殊含义的字符,sql支持的通配符如下:

        a.百分号(%)通配符:%表示任何字符出现的任意次数。

          select prod_id,prod_name from products where prod_name like 'jet%';

        以上语句使用了搜索模式‘jet%’,在执行这条子句时,将检索任意jet开头的词,%告诉mysql接收jet之后的任意字符,不管他有多少个字符。%区分大小写。

        %123:表示以123结尾的;   %123%:表示词中包含123的;  123%:以123开头的

      2、下划线_通配符:

        它只陪陪单个字符而不是多个字符。

        select prod_id,prod_name from products where prod_name like '_ton anvil'

        可以匹配到prod_name中带有?ton anvil的数据

      

  • 相关阅读:
    正则表达式匹配
    最长回文子串
    无重复字符的最长子串
    n个骰子的点数之和
    关于模型选择
    最小堆
    kmeans++
    Dijkstra 算法
    mapreduce中获取输入文件的路径
    mapreduce数据不平衡时的处理方法
  • 原文地址:https://www.cnblogs.com/television/p/8342262.html
Copyright © 2011-2022 走看看