肥涵

导航

Mysql-2 查询操作

Select 查询语句

  a、Mysql 使用select 语句查询数据

  b、select 语句的作用是从一个或多个表中查询信息

  c、使用select语句,必须至少给出两条信息

    1) 选择什么

    2) 从什么地方选择

  注意: SQL语言中,不区分大小写,每一句的SQL语句,使用”;“表示结尾

 

  以下语法说明: 数据库名:mydb

          表名:stu  

  1、查询特定列

    格式:

    select 列名 from mydb.stu;

 

    select 列名 from stu;

    说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

 

    查询多列

    格式:

    select 列1,列2,... from mydb.stu;

    select 列1,列2,....from stu;

    说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

    

    查询所有列

    格式:

    select * from mydb.stu;

    select * from stu;

    说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

 

    避免查询到重复的内容

      如果查询到的两行内容一样,默认情况下,Mysql 会显示这些重复的行,如果需要相同的行只显示一次,可使用 distinct 关键字

    格式:

    select distinct 列名 from mydb.stu;

    select distinct 列名 from stu;

    说明:如果在from后面直接使用表名的话,需要先指定使用的数据库

 

  2、设定查询结果返回的行数

    a、如果一个表的行非常多,客园使用limit关键字,指定需要返回多少行

    格式:

    select  列名 from stu limit n;     #显示查询结果的前 n 行

    select 列名 from stu limit n,m;  #只显示查询结果第 n 行开始后面的m 行

    说明:mysql 中的行号是从 0 开始计算的,limit 2,3 是从第3行往后数3行,也是就 3、4、5行

 

  3、查询结果排序

    a、为了明确地排序用select 语句查询出的数据,可使用order by 语句

    order by 语句取一个或多个列的名字,根据这些列进行排序

    格式:

    select 列名 from stu order by 列名;

    说明:根据列名排列的可以是 select对应的列也可以是本身数据有的列表

    select 列名 from stu order by 列1,列2;

    说明:列1全部相同时,才会采取列2再次进行排序

    排序是根据ASCII码进行排序

 

    b、指定排序方向

    order by 语句默认是按照升序排序(从A到Z),关键字是ASC

    可以给order by 语句指定降序(从Z到A),关键字是DESC

    说明:DESC关键字只应用到直接位于其前面的列

    格式:

    select 列1 from mydb.stu order by 列1 desc;

    select 列1 from mydb.stu order by 列1 desc,列2;   #只针对列1 进行降序

    select 列1 from mydb.stu order by 列1 asc;

    

  4、order by 与 limit 组合

    a、使用order by 和limit 组合,能够找出一个列中最高或者最低的值

      格式:

      select 列1 from mydb.stu order by 列1 desc limit 1;

      说明:order by 子句位于from 子句后面,如果使用limit ,那么limit 必须位于order by 之后

         可理解为,排序之后进行取值

 

  5、条件查询与通配符

    a、查询结果过滤

      1) 数据库表中一般包含大量的数据,很少需要查询表中所有的行,通常只会根据特定的需要提取表中的一部分数据。这个hi和需要指定查询条                            件,即过滤条件

      2)在select 语句中,数据库根据where 子句中指定的查询条件进行过滤。where 子句位于表名之后

      格式:

        select 列名 from 表名 where 列 满足的条件;

      实例:

      从 stu 表中查询两列,只返回 列uid 值为 001的行

      select * from stu where uid = 001;

      注意:在同时使用order by 和 where 子句时,order by 应位于 where 之后,否则将会产生错误

      where 语句支持的操作符

       

 

       实例:

       从表stu 中查找名字为 张三的数据

       select * from stu where name = '张三';

       从表stu 中查找用户id 小于 10的数据

       select * from stu where id <10;

         从表stu 中查找 电话号码为空的数据

       select * from stu where phonenum IS NULL;

         从表stu 中查找 电话号码为不空的数据

       select * from stu where phonenum IS NOT NULL;

         从表stu 中查找 用户id 不等于 001的数据

         select * from stu where id <> 001;

         select * from stu where id != 001;

         从表stu 中查找用户id 在50到100 的范围内的数据

       select * from stu where id between 50 and 100;

       说明: between ... and ... 包含边界值

    

    b、and 操作符

      1) Mysql 支持在where 子句中给出多个条件,这些条件可以使用and 子句表示条件都满足时返回指定的行

      格式:

      select 列名 from stu where '列1满足条件' and ‘列2满足的条件’;

      实例:

      从表stu 查询 id 为001 且名字叫 张三的数据

      select * from stu where id = 001 and name = ‘张三’;

 

    c、or 操作符

      1) Mysql 支持在where子句中给出多个条件,这些条件可以使用or子句表示条件中只需要有一个条件满足时返回指定的行

      格式:

      select 列名 from stu where ‘列1满足条件’ or ‘列2 满足的条件’;

      实例:

      从表 stu 查询id 为001 或者名字叫张三的数据

      select * from stu where id= 001 or name = '张三';

   AND/OR 条件组合中的顺序

      1) and/or 条件组合中的顺序

      2)and的优先级高于or,当 and/or 中有多个条件的时候,需要使用()把各个条件明确的分组,防止条件的错误组合导致返回的结果不正确

      说明:圆括号 > and > or (>代表优先级)

      实例

      从表stu 查询id 为 001 或 002 且学历为 本科的

      select * from stu where (id = 001 or id= 002) and edu = ‘本科’;

      注意: 在使用 and / or 操作符的 where 子句中,都应该使用圆括号明确的分组操作符,以达到期望的查询目的

 

     d、IN操作符

      1) in 操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取值包含在圆括号内,以逗号分隔

      格式:

      select 列 from 表 where 列 in (value1,value2 ,....)

      实例

      从表stu 中查询 用户id 在(001 到 010)范围中

      select * from stu where id in (001,010);     

      IN 操作符特点:

        -1: in操作符的语法清晰直观

        -2:计算次序容易管理

        -3:in操作符一般比or 操作符执行速度更快

        -4:in可以包含其他select 语句,使得能够动态地建立where 子句

 

    e、NOT操作符

      1) where 子句中的not 操作符只有一个功能,即否定它之后所跟的任何条件

      2) 使用not 很容易找到与条件列表不匹配的行

      实例

      从表stu 中找不 id 不为 001和010 的数据

      select * from stu id not in (001,010);

      注意:Mysql 只支持使用not 对in 、between和exists 子句取反

 

    f、LIKE操作符

      1) 通配符是用来匹配值的一部分的特殊字符

      2) 为了在查找子句中使用通配符,必须使用like 操作符,like指示Mysql 后跟的查找模式利用通配符匹配而不是直接相等匹配进行比较

 

      -1:百分号(%)通配符

        百分号(%)在查出串中,%表示任何字符出现任意次数,但是不能匹配null

        实例

        从表stu查找出生年月为1996-04所有人的数据

        select * from stu where birth like ‘1996-04%’  

        -2:下划线 (_)通配符

        下划线的用途与% 一样,但是下划线只匹配单个字符而不是多个字符

        实例

        从表stu 查找名字为‘三’,姓可不同的数据

        select * from stu where name like ‘_三’;

    通配符的特点:

      a、与%不一样,_总是匹配一个字符,不能多也不能少

      b、使用通配符会比没有通配符更小孩数据库执行查询的时间,应该在需要使用通配符的地方才使用       

  

posted on 2021-01-10 19:29  肥涵  阅读(144)  评论(0编辑  收藏  举报