mysql基础篇---mysql查询语句干货!!!

Mysql查询语句
 一,指定查询条件
              select 用来过滤字段的
              from  指定从那些表中查询数据
              where  用来过滤行
              例子:select 一个字段或多个字段 from 表名 where 条件;
 二,模糊查询 like--可以使用通配符
       1,—下划线,匹配单个字符;
            例子:查询名字是三个字符的人的全部信息
                       mysql> select 字段名1 from 表名 where 字段名1 like '___';     //三个下划线
        
       2,% ,匹配0个或多个字符
    例子: 
mysql> select * from 表名 where 字段 like 'j%';    //匹配字段中以j开头的

 三,分组  group by 字段名
    例子:  mysql> alter table score add class int;
    mysql> insert into score values(5,'rose',75,85,95,2);
    mysql> update score set class=1 where sno=1;
    mysql> update score set class=1 where sno=3;
    mysql> update score set class=2 where sno=2 or sno=4;
    mysql> select * from score;
        +------+-------+------+------+------+-------+
        | sno  | sname | ule  | ula  | uoa  | class |
        +------+-------+------+------+------+-------+
        |    1 | tom   |   70 |   80 |   90 |     1 |
        |    2 | mary  |   55 |   75 |   65 |     2 |
        |    3 | jack  |   75 |   45 |   95 |     1 |
        |    4 | mike  |   90 |  100 |   86 |     2 |
        |    5 | rose  |   75 |   85 |   95 |     2 |
        +------+-------+------+------+------+-------+
    显示每个班的ule的总成绩和平均成绩
        mysql> select class,sum(ule),avg(ule) from score group by class;

注意:group by 里面带条件的话,不能使用where;可以与having连用
        显示班级人数大于2的班级的ule的总成绩和平均成绩
            mysql> select class,sum(ule),avg(ule) from score group by class having count(*)>2;
                +-------+----------+----------+
                | class | sum(ule) | avg(ule) |
                +-------+----------+----------+
                |     2 |      220 |  73.3333 |
                +-------+----------+----------+
                1 row in set (0.00 sec)

四、排序      order by 
     order by 字段名[,字段名2,......] [asc|desc]
          asc:升序,默认的排序方式             ascend:上升的
          desc:降序                                  descend:下降的
     按照ule的成绩由低到高的顺序显示学生姓名及ule成绩
            mysql> select sname,ule from score order by ule;
     按照ule的成绩由高到低的顺序显示学生姓名及ule成绩
            mysql> select sname,ule from score order by ule desc;
                +-------+------+
                | sname | ule  |
                +-------+------+
                | mike  |   90 |
                | jack  |   75 |
                | rose  |   75 |
                | tom   |   70 |
                | mary  |   55 |
                +-------+------+
                5 rows in set (0.00 sec)
     order by 编号
        mysql> select sname,ule from score order by 2 desc;
    
    order by 多个字段
        按照ule成绩排序,如果成绩相同,按照名字的倒序排序
            mysql> select sname,ule from score order by ule,sname desc;
        按照ule成绩倒序排序,如果成绩相同,按照名字的倒序排序
           mysql> select sname,ule from score order by ule desc,sname desc;
五、限制输出     limit
    limit n        只显示查询结果的前n条
        显示ule成绩前3名的学生姓名及ule成绩
            mysql> select sname,ule from score order by ule desc limit 3;
                +-------+------+
                | sname | ule  |
                +-------+------+
                | mike  |   90 |
                | jack  |   75 |
                | rose  |   75 |
                +-------+------+
                3 rows in set (0.00 sec)
    limit m,n          从m+1行开始,显示n行
        mysql> select sname,ule from score limit 2,2;   //显示第3行和第4行
       
六、子查询
    也叫嵌套查询,将里层查询的结果作为外层查询的条件
    查询ula成绩最高的人的学号,姓名以及ula的成绩
        mysql> select sno,sname,ula from score where ula=(select max(ula) from score);
            +------+-------+------+
            | sno  | sname | ula  |
            +------+-------+------+
            |    4 | mike  |  100 |
            +------+-------+------+
            1 row in set (0.00 sec)
小结:
1、select关键字的顺序
-----------------------------------------------------------------------------------
关键字                         功能                              是否必须
-----------------------------------------------------------------------------------
select              过滤要返回的列或者是表达式              是
-----------------------------------------------------------------------------------
from                        要搜索的表       仅当需要从表中检索数据时使用
-----------------------------------------------------------------------------------
where                       过滤行                                  否
-----------------------------------------------------------------------------------
group by                    分组              仅当按组做聚合运算的时候使用
-----------------------------------------------------------------------------------
having          组级过滤(与group by连用)                    否
-----------------------------------------------------------------------------------
order by                    排序                                    否
-----------------------------------------------------------------------------------
limit                          限制输出的行                        否
-----------------------------------------------------------------------------------
2、SQL语句的执行顺序如下:
    from  where  (group by)  having  select  (order by)  limit

你可能感兴趣的:(mysql,red,hat,sql)