zoukankan      html  css  js  c++  java
  • mysql查询语句

    select 字段1,字段2 from 表1,表2 where 字段 group by 分组字段 having 字段 order by 字段  ASC|DESC  limit m,n 

    一、查询所有

    select * from student;
    select name as 姓名 from student;
    select name 姓名 from student;

    二、条件查询

    1.查询学生id等于1

    selet * from student where student_id;

    2.查询name字段为null

    selet * from student where name is null;

    3.查询name字段不为null

    select * from student where name is not null;

    4.查询name字段为空字符串

    select * from student where name ='';

    5.查询name字段不为空字符串且不为null

    select * from student where name !='';

    6.查询city字段存在河南省和山东省的数据

    select * from where city in('山东省','河南省');

    7.查询age在25到30之间

    select * from student where age between 25 and 30;

    8.查询age不在20到30之间

    select * from student where age not between 20 and 30;

    9.查询第一个字是郭的数据

    select * from student where name like '郭%';

    10查询第一个字是郭的两个字得数据

    select * from student where name like '郭_';

    11查询存在郭的字得数据

    select * from student where name like '%郭%';

    三、分组查询

    1.分组性别

    select sex,count(*) from student group by sex;

    2.分组性别前条件查询

    select sex,count(*) from student where name !='李白' group by sex;

    3.分组性别后条件查询

    select sex,count(*) from student group by sex having count(*)>5;

    4.查询后分组然后再条件查询

    select sex,count(*) from student where name !='李白' group by sex having count(*)>5;

    四、排序查询

     1.降序排序

    select * from student order by salary desc;

    2.降序后再升序排序

     select * from student order by salary desc,bonus asc;

    五、聚合函数

    count(*)
    sum(salary)
    avg(salary)
    min(salary)
    max(salary)

     六、连接查询

    1.内连接

    mysql> select * from class join student on class.class_id=student.class_id;
    +----------+----------+------------+----------+--------+------+--------+
    | class_id | caption  | student_id | class_id | name   | sex  | gender |
    +----------+----------+------------+----------+--------+------+--------+
    |        1 | 三年一班 |          1 |        1 | 巨炮   | m    |      1 |
    |        1 | 三年一班 |          2 |        1 | 钢弹   | m    |      1 |
    |        2 | 三年二班 |          3 |        2 | 七次郎 | m    |      1 |
    |        2 | 三年二班 |          4 |        2 | 米线   | m    |      0 |
    |        3 | 三年三班 |          5 |        3 | 辣条   | m    |      0 |
    +----------+----------+------------+----------+--------+------+--------+
    5 rows in set (0.00 sec)

    2.左连接

    mysql> select * from class left join student on class.class_id=student.class_id;
    +----------+----------+------------+----------+--------+------+--------+
    | class_id | caption  | student_id | class_id | name   | sex  | gender |
    +----------+----------+------------+----------+--------+------+--------+
    |        1 | 三年一班 |          1 |        1 | 巨炮   | m    |      1 |
    |        1 | 三年一班 |          2 |        1 | 钢弹   | m    |      1 |
    |        2 | 三年二班 |          3 |        2 | 七次郎 | m    |      1 |
    |        2 | 三年二班 |          4 |        2 | 米线   | m    |      0 |
    |        3 | 三年三班 |          5 |        3 | 辣条   | m    |      0 |
    |        4 | 四年级   |       NULL |     NULL | NULL   | NULL |   NULL |
    +----------+----------+------------+----------+--------+------+--------+
    6 rows in set (0.00 sec)

    3.右连接

    mysql> select * from class right join student on class.class_id=student.class_id;
    +----------+----------+------------+----------+--------+------+--------+
    | class_id | caption  | student_id | class_id | name   | sex  | gender |
    +----------+----------+------------+----------+--------+------+--------+
    |        1 | 三年一班 |          1 |        1 | 巨炮   | m    |      1 |
    |        1 | 三年一班 |          2 |        1 | 钢弹   | m    |      1 |
    |        2 | 三年二班 |          3 |        2 | 七次郎 | m    |      1 |
    |        2 | 三年二班 |          4 |        2 | 米线   | m    |      0 |
    |        3 | 三年三班 |          5 |        3 | 辣条   | m    |      0 |
    |     NULL | NULL     |         12 |     NULL | NULL   | m    |   NULL |
    |     NULL | NULL     |         11 |        5 | 骁龙   | m    |   NULL |
    |     NULL | NULL     |         13 |        6 | 梦琳   | w    |   NULL |
    +----------+----------+------------+----------+--------+------+--------+
    8 rows in set (0.00 sec)

    4.自然连接(两张表有相同字段名)

    mysql> select * from class natural join student;
    +----------+----------+------------+--------+------+--------+
    | class_id | caption  | student_id | name   | sex  | gender |
    +----------+----------+------------+--------+------+--------+
    |        1 | 三年一班 |          1 | 巨炮   | m    |      1 |
    |        1 | 三年一班 |          2 | 钢弹   | m    |      1 |
    |        2 | 三年二班 |          3 | 七次郎 | m    |      1 |
    |        2 | 三年二班 |          4 | 米线   | m    |      0 |
    |        3 | 三年三班 |          5 | 辣条   | m    |      0 |
    +----------+----------+------------+--------+------+--------+
    5 rows in set (0.00 sec)

    5.联合查询(表和表的结构相同)

    mysql> select * from student union select * from student_1;
    +------------+----------+--------+------+--------+
    | student_id | class_id | name   | sex  | gender |
    +------------+----------+--------+------+--------+
    |          1 |        1 | 巨炮   | m    |      1 |
    |          2 |        1 | 钢弹   | m    |      1 |
    |          3 |        2 | 七次郎 | m    |      1 |
    |          4 |        2 | 米线   | m    |      0 |
    |          5 |        3 | 辣条   | m    |      0 |
    |         12 |     NULL | NULL   | m    |   NULL |
    |         11 |        5 | 骁龙   | m    |   NULL |
    |         13 |        6 | 梦琳   | w    |   NULL |
    |          0 |        1 | 小龙   | m    |   NULL |
    +------------+----------+--------+------+--------+
    9 rows in set (0.00 sec)

     七、子查询

    1.标量子查询

    select * from score where number > (select avg(number) from score);

    2.列子查询

    mysql> select * from student where sex in (select sex from student where sex='m'|| sex='w');
    +------------+----------+--------+------+--------+
    | student_id | class_id | name   | sex  | gender |
    +------------+----------+--------+------+--------+
    |          1 |        1 | 巨炮   | m    |      1 |
    |          2 |        1 | 钢弹   | m    |      1 |
    |          3 |        2 | 七次郎 | m    |      1 |
    |          4 |        2 | 米线   | m    |      0 |
    |          5 |        3 | 辣条   | m    |      0 |
    |         12 |     NULL | NULL   | m    |   NULL |
    |         11 |        5 | 骁龙   | m    |   NULL |
    |         13 |        6 | 梦琳   | w    |   NULL |
    +------------+----------+--------+------+--------+
    8 rows in set (0.00 sec)
    mysql> select * from student where student_id > any (select student_id from student where name in ('巨炮','钢弹','辣条'));
    +------------+----------+--------+------+--------+
    | student_id | class_id | name   | sex  | gender |
    +------------+----------+--------+------+--------+
    |          2 |        1 | 钢弹   | m    |      1 |
    |          3 |        2 | 七次郎 | m    |      1 |
    |          4 |        2 | 米线   | m    |      0 |
    |          5 |        3 | 辣条   | m    |      0 |
    |         12 |     NULL | NULL   | m    |   NULL |
    |         11 |        5 | 骁龙   | m    |   NULL |
    |         13 |        6 | 梦琳   | w    |   NULL |
    +------------+----------+--------+------+--------+
    7 rows in set (0.00 sec)
    mysql> select * from student where student_id > all (select student_id from student where name in ('巨炮','钢弹','辣条'));
    +------------+----------+------+------+--------+
    | student_id | class_id | name | sex  | gender |
    +------------+----------+------+------+--------+
    |         12 |     NULL | NULL | m    |   NULL |
    |         11 |        5 | 骁龙 | m    |   NULL |
    |         13 |        6 | 梦琳 | w    |   NULL |
    +------------+----------+------+------+--------+
    3 rows in set (0.00 sec)

    3.行子查询

    select * from student where (student_id,name) = (select student_id,name from student where student_id=1);

    4.表子查询

    select * from (select * from student) as b where student_id>12;

      八、常用

    1.过滤重复

     select distinct * from order_info limit 5;

    2.随机读取几条数据

    select * from order_info order by rand() limit 5;

     3.主键自增从1000开始

     alter table student auto_increment = 1000;
  • 相关阅读:
    cinder-volume报错vmdk2 is reporting problems, not sending heartbeat. Service will appear "down".
    Linux下截取指定时间段日志并输出到指定文件
    使用diff或者vimdiff比较远程文件(夹)与本地文件夹
    OpenStack视图
    awk 计算某一列的和
    opencontrail—VXLAN模式下数据包的传输过程
    shell-计算虚拟机创建时间
    gnocchi resource批量删除
    openflow控制器和交换机之间的消息
    openflow packet_out和packet_in分析
  • 原文地址:https://www.cnblogs.com/mengor/p/8550475.html
Copyright © 2011-2022 走看看