zoukankan      html  css  js  c++  java
  • mysql 检索信息

    select语句用来从数据表中检索信息;其一般格式为:

    SELECT what_to_select FROW which_table WHERE conditions_to_satisfy;

    what_to_select :指出你想要看见的内容,可以是列的一个表,或*表示“所有的列”。

    which_table :指出你要检索数据的表。

    conditions_to_satisfy :WHERE子句是可选项,如果选择该项,则conditions_to_satify指定行必须满足的检索条件。

    1,查看整张表的数据

    mysql>select * from student;
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    | id | fName | lName | age  | sex  | phone       | city   | state  | createDate          |
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    |  1 | 四    | 李    |   22 | 女   | 13223231123 | 成都市 | 四川省 | 2017-05-29 00:00:00 |
    |  2 | 五    | 王    |   33 | 男   | 13900002222 | 成都市 | 四川省 | 2017-05-29 00:00:00 |
    |  3 | Joy   | Mark  |   18 | 女   | 17620201010 | 成都市 | 四川省 | 2017-05-29 00:00:00 |
    |  4 | Wong  | Kiwin |   18 | 男   | 13528282323 | 成都市 | 四川省 | 2017-05-29 00:00:00 |
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    4 rows in set (0.00 sec)

    2,查看指定行的数据(查看的是lName列中‘李’所在行的整行数据)

    mysql> select * from student where lName='李';
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    | id | fName | lName | age  | sex  | phone       | city   | state  | createDate          |
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    |  1 | 四    | 李    |   22 | 女   | 13223231123 | 成都市 | 四川省 | 2017-05-29 00:00:00 |
    +----+-------+-------+------+------+-------------+--------+--------+---------------------+
    1 row in set (0.00 sec)

     3,查看指定列的数据(查看的是lName列的整列数据)

    mysql> select lName from student;
    +-------+
    | lName |
    +-------+
    | 李    |
    | 王    |
    | Mark  |
    | Kiwin |
    +-------+
    4 rows in set (0.00 sec)

     4,查看具体位置的数据(查看的是lName列中的'王')

    mysql> select lName from student where lName='王';
    +-------+
    | lName |
    +-------+
    | 王   |
    +-------+
    1 row in set (0.00 sec)

     5,查看满足一定条件限制的数据(查看的是age>20对应的fName和lName的数据)

    mysql> select fName,lName from student where age>20;
    +-------+-------+
    | fName | lName |
    +-------+-------+
    |||
    |||
    +-------+-------+
    2 rows in set (0.00 sec)

     6,查看满足组合条件的数据(age>20 的 女生)

    mysql> select fName,lName from student where (age>20 and sex='');
    +-------+-------+
    | fName | lName |
    +-------+-------+
    | ||
    +-------+-------+
    1 row in set (0.00 sec)

     7,去除重复数据的关键字:distinct(当distinct关键字同时修饰几个字段时,以重复数据最少的字段为准)

    mysql> select distinct createDate from student;
    +---------------------+
    | createDate          |
    +---------------------+
    | 2017-05-29 00:00:00 |
    +---------------------+
    1 row in set (0.00 sec)
    mysql> select distinct sex from student; +------+ | sex | +------+ || || +------+ 2 rows in set (0.00 sec)
    mysql> select distinct sex,lName from student;
    +------+-------+
    | sex  | lName |
    +------+-------+
    | 女   | 李    |
    | 男   | 王    |
    | 女   | Mark  |
    | 男   | Kiwin |
    +------+-------+
    4 rows in set (0.00 sec)

    mysql> select distinct sex,createDate from student;
    +------+---------------------+
    | sex  | createDate          |
    +------+---------------------+
    | 女   | 2017-05-29 00:00:00 |
    | 男   | 2017-05-29 00:00:00 |
    +------+---------------------+
    2 rows in set (0.00 sec)

    mysql> select distinct createDate,sex from student;
    +---------------------+------+
    | createDate          | sex  |
    +---------------------+------+
    | 2017-05-29 00:00:00 | 女   |
    | 2017-05-29 00:00:00 | 男   |
    +---------------------+------+
    2 rows in set (0.00 sec)

     8,以某个字段排序:order by(binary区分大小写)字段 desc(降序)/asc(升序)

    mysql> select fName,age,createDate from student order by age;//默认为升序
    +-------+------+---------------------+
    | fName | age  | createDate          |
    +-------+------+---------------------+
    | Joy   |   18 | 2017-05-29 00:00:00 |
    | Wong  |   18 | 2017-05-29 00:00:00 |
    ||   22 | 2017-05-29 00:00:00 |
    ||   33 | 2017-05-29 00:00:00 |
    +-------+------+---------------------+
    4 rows in set (0.00 sec)
    
    mysql> select fName,age,createDate from student order by age desc;
    +-------+------+---------------------+
    | fName | age  | createDate          |
    +-------+------+---------------------+
    ||   33 | 2017-05-29 00:00:00 |
    ||   22 | 2017-05-29 00:00:00 |
    | Joy   |   18 | 2017-05-29 00:00:00 |
    | Wong  |   18 | 2017-05-29 00:00:00 |
    +-------+------+---------------------+
    4 rows in set (0.00 sec)
    //其中会先将age按照默认的升序排列,再在age相同的范围内对createDate按降序排序
    mysql> select age,phone,createDate from student order by age,createDate desc;
    +------+-------------+---------------------+
    | age  | phone       | createDate          |
    +------+-------------+---------------------+
    |   18 | 17620201010 | 2015-09-19 00:00:00 |
    |   18 | 13528282323 | 2007-12-30 00:00:00 |
    |   22 | 13223231123 | 2017-05-29 00:00:00 |
    |   33 | 13900002222 | 2016-08-20 00:00:00 |
    +------+-------------+---------------------+
    4 rows in set (0.00 sec)
    //先将age按默认升序排列,再在age相同的情况下对createDate按降序排序,最后在createDate相同的情况下对phone按升序排序
    mysql> select age,phone,createDate from student order by age,createDate desc,phone asc;
    +------+-------------+---------------------+
    | age  | phone       | createDate          |
    +------+-------------+---------------------+
    |   18 | 13223231123 | 2017-05-29 00:00:00 |
    |   18 | 17620201010 | 2017-05-29 00:00:00 |
    |   18 | 13528282323 | 2007-12-30 00:00:00 |
    |   33 | 13900002222 | 2016-08-20 00:00:00 |
    +------+-------------+---------------------+
    4 rows in set (0.00 sec)

     9,日期计算

    mysql> SELECT name, birth, CURDATE(),
     -> (YEAR(CURDATE())-YEAR(birth))
     -> - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
     -> AS age
     -> FROM pet;
    +----------+------------+------------+------+
    |   name   |    birth   |  CURDATE() |  age |
    +----------+------------+------------+------+
    |  Fluffy  | 1993-02-04 | 2003-08-19 |  10  |
    |  Claws   | 1994-03-17 | 2003-08-19 |   9  |
    |  Buffy   | 1989-05-13 | 2003-08-19 |  14  |
    |  Fang    | 1990-08-27 | 2003-08-19 |  12  |
    |  Bowser  | 1989-08-31 | 2003-08-19 |  13  |
    |  Chirpy  | 1998-09-11 | 2003-08-19 |   4  |
    |  Whistler| 1997-12-09 | 2003-08-19 |   5  |
    |  Slim    | 1996-04-29 | 2003-08-19 |   7  |
    |  Puffball| 1999-03-30 | 2003-08-19 |   4  |
    +----------+------------+------------+------+
    此处,YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值
    的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。整个表达式有些难懂,
    使用alias (age)来使输出的列标记更有意义。
  • 相关阅读:
    OSPF协议 LSAs
    OSPF协议基础
    交换机Access Trunk Hybrid端口
    网络地址转换 NAT
    访问控制列表 ACL
    路由协议 RIP
    动态路由协议
    static 变量
    Unix网络编程 -- ubuntu下搭建编译环境( 解决unp.h 编译等问题)
    linux 错误处理
  • 原文地址:https://www.cnblogs.com/Jfh389987366/p/6930100.html
Copyright © 2011-2022 走看看