基本的查询sql语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本的查询sql语句相关的知识,希望对你有一定的参考价值。

day03  基本的查询sql语句

一、概述:

    学习mysql数据库中一定要学会sql的查询功能,说白了,使用数据库就是存储数据,查询数据,使用这些数据的一个过程。只有查看了才知道我们是否存储成功,是否可以直接使用这些数据。


二、具体的sql

    1、查询数据库的基本语法:

        select 需要查询的字段名和内容
        from  指定相关的表名
        where  查询时所需要的条件
        group by  如何对结果分组
        order by  如何对结果瓶排序
        having   查询时满足的第二个条件
        limit 限定查询输出的结果

    (一):单表查询

        1、查询所有字段

        select * from 表名;

        2、查询指定字段

        select 字段名  from 表名;

        3、查询指定数据

        select  *  from  表名  where 条件;

        4、带“in”关键字的查询

         select  *  from  表名  where 条件  [not] IN(元素1,...元素n);
         译:not:是一个可选参数,加上not表示不在集合内满足条件
             元素:表示集合中的元素,各元素之间用逗号分开

        5、带“Between  And”的范围查询

          select * from 表名 where 条件 [not] between 取值1  and 取值2;   
          译:not:是一个可选参数,表示不在指定范围内满足条件
              取值1:表示范围的起始值
              取值2:表示范围的终止值

        6、带“like”的字符匹配查询【实现模糊查询】

            like字符来实现模糊查询,一般在我们网页的搜索、检索等部分就要使用到模糊查询
            而使用的两种通配符:“%”和“_”两个。
            “%”:可以匹配一个或多个字符,可以代表任意长的字符串
            “_”:只匹配一个字符,如m_n;以m开头,n结尾的3个字符
          select * from 表名 where 条件  like ‘%a’;
          译:查询这个表中包含a字符的所有数据。

        7、带“And”的多条件查询

          select * from 表名  where 条件1 and 条件2;
          译:使用and关键字连接多个条件

        8、带“Or”的多条件查询

          select * from 表名 where 条件1 or 条件2;
           译:只要满足条件的其中之一都会被查询到

        9、使用“distinct”关键字取消重复的数据

          select distinct 字段名 from 表名;
            译:取消查询结果中重复的记录行

        10、使用“order by”关键字排序

          select * from 表名 order by [asc][desc];
            译:order by:是指使用什么方式来排序
                asc:是指“升序”排序
                desc:是指“降序”排序

        11、使用“group by”关键字分组

           select 字段1,字段2,... from  表名  group by 某个字段1或字段2分组查;
            同时还可以多个字段进行分组

        12、使用“limit”限制查询结果的数量

           select * from order by asc  limit 3;
            译:查询的结果显示前3条记录

    (二)聚合函数查询

        1、使用“count()”函数

          select count(*) from 表名;
          译,统计表中所有的记录

        2、使用“sum()”函数

          select sum(row) from 表名;
          译:求出表中行的总数。

        3、使用“avg()”函数

          select avg(row) from 表名;
          译:求出表中行的一个平均值

        4、使用“max()”函数

          select max(row) from 表名;
          译:查询表中row字段的最大值

        5、使用“min()”函数

          select min(row) from 表名;
          译:查询表中row字段的最小值

    (三)连接查询

        1、内连接查询

          select 字段1,字段2,字段3 from 表名1,表名2 where 表名1.字段1=表名2.字段2;
        实现表与表之间的连接查询就是要确定两张表中都有相同的字段名。

        2、外连接查询

             外连接与内连接不同,外连接时指使用“outer join”关键字将两张表连接起来。

          分为左外连接“left join”、右外连接“right join”、全连接3种类型

        语法:

        select 字段名称 from 表名1 left/right join 表名2 on 表名1.字段1=表名2.字段2;

         2.1、左外连接“left join”

            左外连接:是指将左表的所有数据分别于右表的每一条数据进行连接组合,返回的结果除内连接的数据外,还包括左表中不符合的数据,并在右表的相应列中添加null值。

        select 字段名称 from 表名1 left join 表名2 on 表名1.字段1=表名2.字段2;

         2.2、右外连接“right join”

            右外连接是指将右表中的所有数据分别于左表中的每一条数据进行连接组合,返回的结果除内连接的数据外,还包括右表中不符合的条件的数据,并在左表的相应列中添加null值。

        select 字段名称 from 表名1 right join 表名2 on 表名1.字段1=表名2.字段2;

        2.3、交叉连接“cross join”:笛卡尔积

        select * from 表1 cross join 表2


    (四)子查询

        子查询:就是select查询是另一个查询的附属。什么是附属关系,就是一个查询语句查询出来的结果是为第二个查询的一个条件或一个基础、前提等、只有当它查询出来以后才能够查询出第二个的结果。

        1、带“in”关键字的子查询

        使用in运算符是可以检测结果集中是否存在某个特定的值,如果检测成功就执行外部查询语句。

        select * from 表名1 where 字段1 in(select 字段1 from 表名2);
        译:查询表1的所有记录,但是字段1必须要在表2中出现过。

        2、带比较运算符的子查询

        子查询使用运算符是比较平凡的,包括“=、!=、> 、< 、>=、<=”

        

        3、带“exists”关键字的子查询

        使用exists关键字时,内层查询语句不返回查询的记录,而是返回的是一个真假值。

        select * from 表名1 where exists (select * from 表名2 where 字段名);
        译:使用子查询查询表2中对否存在某个限定条件的数据,如果有,执行外层的查询数据,
            如果没有,就只执行内层的查询数据

         4、带“any”关键字的字查询

            使用any关键字是指只要满足其中任意一个条件,就可以通过改条件来执行外层的查询语句。

         5、带“all”关键字的子查询

            使用all关键字是指内层的查询语句都必须要满足所有的条件,使用all关键字时,只有满足内层查询的所有条件才能够执行外层查询。


    (五)合并查询结果

        合并查询结果是将多个select语句查询的结果合并在一个。         

        1、使用“union”关键字

            select * from 表1
            union
            select * from 表2;

        使用union关键字是将查询出来的结果合并在一个,然后去除相同的、重复的记录。

        

        2、使用“union all”关键字

            select * from 表1
            union all
            select * from 表2;

        使用union all关键字只是将结果合并在一个,不取消重复的记录。


   (六)定义表和字段的别名

        1、定义表的别名

        select * from 表名1 a  where a . 字段1;
        译、定义的这个 a 就是表的别名,可以减少写表名的时间。

        2、定义字段的别名

            基本形式:字段名 [AS] 别名

        select 字段1  as  A ,字段2  as  B  from  表名;

    (七)使用正则表达式查询

           基本形式:字段名 regexp ‘匹配方式’

        1、模式字符

       模式字符                    含 义
           ^匹配以特定字符或字符串开头的记录
           $匹配以特定字符或字符串结尾的记录
           .匹配字符串的任意一个字符,包括回车和换行
          []匹配字符集合中的任意一个字符
          [^ ]匹配除字符集合以外的任意一个字符
          s1|s2|s3匹配其中任意一个字符
          *匹配多个该符号之前的字符,包括1和0个
         字符串{N}匹配字符串出现N次
          +匹配多个该字符之前的字符,包括1个
         字符串{M,N}匹配字符串出现至少M次,最多N次

本文出自 “孤独一夜” 博客,转载请与作者联系!

以上是关于基本的查询sql语句的主要内容,如果未能解决你的问题,请参考以下文章

sql语句 嵌套查询 排序

程序中使用嵌套的sql语句和在数据库中写存储过程调用它,有啥区别?

使用 with as 优化SQL

.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

SQL Select 语句的用法

MyBatis高级特性