数据库查询语句总结(全网最详细,用的是MySQL和SQLyog)

首先创建两个表(用作测试):tb_student、tb_class 

        CREATE TABLE tb_class(
            cid INT PRIMARY KEY AUTO_INCREMENT,
            cname VARCHAR(20) NOT NULL
);

        CREATE TABLE tb_student(
            sid INT PRIMARY KEY AUTO_INCREMENT,
            sname VARCHAR(20) NOT NULL,

            gender CHAR(1),

            age INT,
            cid INT,
            FOREIGN KEY(cid) REFERENCES tb_class(cid)
);

一.DQL基础查询

关键字:select from

        1、查询学生表中所有的数据

        SELECT * FROM tb_student WHERE gender='男';

        2.查询所有年龄在18到20岁的学生信息

        SELECT * FROM tb_student WHERE age>=18 AND age<=20;

        或者

        SELECT   *      FROM   tb_student   WHERE age BETWEEN    18    AND   20;

        3.查询出所有没有录入年龄的学生的信息

        SELECT   *    FROM   tb_student    WHERE   age   IS   NULL;

  模糊查询关键字:like

 通配符:

  %: 代表任意个字符

   _:代表一个字符

        1.查询所有姓王的学生信息

        SELECT    *    FROM    tb_student    WHERE  sname    LIKE  '王%';

        2.查询所有名字第二个字是杰的学生信息

        SELECT    *    FROM    tb_student    WHERE    sname   LIKE   '_杰%';

        3.查询名字中有明的学生信息

        SELECT     *   FROM   tb_student    WHERE      sname     LIKE   '%明%';

二.DQL排序

        排序关键字:order by

        升序:默认/asc

        降序:desc

         1、查询所有学生的信息,要求按照学生的年龄从小到大的显示

        SELECT   *   FROM   tb_student    ORDER   BY  age  (ASC);

        2.  查询所有学生的信息,要求按照学生的年龄从大到小的显示

        SELECT   *   FROM  tb_student    ORDER   BY  age   DESC;

        3.查询年龄最大的三个学生信息

        SELECT   *    FROM   tb_student   ORDER  BY   age  DESC  LIMIT  3;

        前几个:limit    3;

        函数:

        

        

         聚合函数

             

                主要对数据进行统计计算,返回单个值。

                最大值:max()

                最小值:min()

                求和:sum()

                数据条数:count()

                平均值:avg()

                1.查询学生平均年龄

                     SELECT   AVG (age)  FROM   tb_student;

     

三.DQL分组查询

         

将表数据按照指定条件进行分组,再对分组后的数据进行汇总。分组查询通常会使用聚合函数,对分组后的数据进行统计计算。

关键字:group by [having]

语法:select 要查询的内容 from 表名 group by 分组列 [having 筛选条件];

1、查询出每个班的学生人数

分析:cid相同的学生是同班同学,所以以cid来进行分组。统计每个组的数据条数。

  SELECT   cid,COUNT(*)   FROM   tb_student    GROUP  BY   cid;

  

having和where的区别:

1、having是对分组后的数据进行筛选,where是对分组前的数据进行筛选

2、SQL语句中有having必定有group by,有group by不一定having

3、如果一个SQL语句中,既有where又有having,先执行where后执行having

4、where后面不能使用聚合函数,having只能使用聚合函数和分组列

四.DQL分页查询

        

关键字:limit

用法:

limit n:代表前n条数据

limit m,n:代表从第m条数据开始取n条数据,m是数据的索引

1、查询出学生表前三条数据

SELECT  *   FROM   tb_student   LIMIT   3;

2、如果每页显示3条数据,请查询出第二页的数据

SELECT   *   FROM   tb_student  LIMIT  3,3;

        

分页:现有条件,每页显示条数count,第几页page

计算:

page:1 2 3 4 5 ……

m: 0 3 6 9 12 ……

m = (page-1)*count

五.DQL连接查询

        

定义:通过连接条件同时查询出多张表的数据。

隐式内链接:把连接条件放到where关键字后面。

语法:select 要查询的内容 from 表1,表2 where 连接条件 [and 筛选条件];

显式内连接:使用inner join来连接,将连接条件放到on后面。

语法:select 要查询的内容 from 表1 inner join 表2 on 连接条件 [where 筛选条件];

外连接

两张表中一张表作为基表,查询出该表所有的数据,另外一张表作为连接表,查询出该表与基表能够匹配的数据。如果基表数据匹配不上,就用null来填充。

语法:select 要查询的内容 from 基表 left join 连接表 on 连接条件 [where 筛选条件];

右外连接:

        语法:select 要查询的内容 from 连接表 right join 基表 on 连接条件 [where 筛选条件];

六.子查询

        当一个查询的结果是另一个查询需要的条件时,就需要使用子查询。

        例如:

        查询出年龄比张三大的学生的信息

        方式一:

        SELECT   age  FROM   tb_student   WHERE  age >(SELECT   age  FROM  tb_student  WHERE  sname='张三' );

        方式二:

        SELECT  age  FROM   tb_student   WHERE  age>ANY(SELECT  age  FROM  tb_student  WHERE  sname='张三');

        

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值