MySQL 查询语句:
1、查询五子句:(重点)
mysql> select */字段列表 from 数据表名称 where 子句 group by 子句 having 子句 order by 子句 limit 子句;
1)where 子句;条件筛选。
2)group by 子句;分组子句;统计学中的概念
3)having 子句; having是放在分组之后的,跟where有点类似。
4)order by 子句;排序子句;按年龄从大到小的排序。
5)limit 子句;限制条件的,例如:前三名同学的信息。
注意:五子句的顺序是固定的。不能颠倒。顺序错了,MySQL就会报错。
1)Where子句:

案例1: like模糊查询语句,
准备查询:
- mysql> create table tb_student(
- -> id mediumint not null auto_increment,
- -> name varchar(20),
- -> age tinyint unsigned default 0,
- -> gender enum('男','女'),
- -> address varchar(255),
- -> primary key(id)
- -> ) engine=innodb default charset=utf8;
- Query OK, 0 rows affected (0.00 sec)
-
-
- mysql> insert into tb_student values (null,'刘备',33,'男','湖北省武汉市');
- Query OK, 1 row affected (0.01 sec)
-
- mysql> insert into tb_student values (null,'貂蝉',18,'女','湖南省长沙市');
- Query OK, 1 row affected (0.00 sec)
-
- mysql> insert into tb_student values (null,'关羽',32,'男','湖北省荆州市');
- Query OK, 1 row affected (0.00 sec)
-
- mysql> insert into tb_student values (null,'大乔',20,'女','河南省漯河市');
- Query OK, 1 row affected (0.00 sec)
-
- mysql> insert into tb_student values (null,'赵云',25,'男','河北省石家庄市');
- Query OK, 1 row affected (0.01 sec)
-
- mysql>
- mysql> insert into tb_student values (null,'小乔',18,'女','湖北省荆州市');
- Query OK, 1 row affected (0.00 sec)
-
-
- mysql> select * from tb_student;
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+-----------------------+
- 6 rows in set (0.00 sec)
查询姓"关"的同学信息(name字段对应值应该以"关"开头)
- mysql> select * from tb_student where name like '关%';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 1 row in set (0.00 sec)
like是模糊匹配。%是匹配0个或者多个字符。_下划线匹配单个字符。
like 有点类似Linux的grep命令。
案例:like模糊查询语句,查询名字中带"蝉"字的同学信息
- mysql> select * from tb_student where name like '%蝉%';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- +----+--------+------+--------+--------------------+
- 1 row in set (0.00 sec)
案例:like模糊查询语句,查询云字结尾,且名字为2个字的同学信息。
- mysql> select * from tb_student where name like '_云';
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- +----+--------+------+--------+-----------------------+
- 1 row in set (0.00 sec)
案例:获取学生表中id号为3的同学信息。
- mysql> select * from tb_student where id=3;
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 1 row in set (0.04 sec)
案例:获取年龄大于25的学生信息。
- mysql> select * from tb_student where age > 25;
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 2 rows in set (0.00 sec)
案例:获取学生表中,性别不为男的同学信息(获取女同学的信息。)
- mysql> select * from tb_student where gender != '男';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 3 rows in set (0.00 sec)
-
- mysql> select * from tb_student where gender <> '男';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 3 rows in set (0.00 sec)
-
逻辑运算符:
案例:获取学生表中,年龄大于30岁的男同学的信息。
- mysql> select * from tb_student where age > 30 and gender = '男';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 2 rows in set (0.04 sec)
-
-
- mysql> select * from tb_student where age > 30 && gender = '男';
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 2 rows in set (0.00 sec)
案例:获取id为1/3/5的同学信息。
- mysql> select * from tb_student where id = 1 or id = 3 or id=5;
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- +----+--------+------+--------+-----------------------+
- 3 rows in set (0.00 sec)
区间:
案例:获取年龄在18周岁~25周岁之间的同学信息。
- mysql> select * from tb_student where age between 18 and 25;
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+-----------------------+
- 4 rows in set (0.00 sec)
-
- mysql> select * from tb_student where age >= 18 && age <= 25;
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+-----------------------+
- 4 rows in set (0.00 sec)
-
in和not in:
- mysql> select * from tb_student where id in (2, 4, 6);
- +----+--------+------+--------+--------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+--------------------+
- | 2 | 貂蝉 | 18 | 女 | 湖南省长沙市 |
- | 4 | 大乔 | 20 | 女 | 河南省漯河市 |
- | 6 | 小乔 | 18 | 女 | 湖北省荆州市 |
- +----+--------+------+--------+--------------------+
- 3 rows in set (0.00 sec)
-
-
- mysql> select * from tb_student where id not in (2, 4, 6);
- +----+--------+------+--------+-----------------------+
- | id | name | age | gender | address |
- +----+--------+------+--------+-----------------------+
- | 1 | 刘备 | 33 | 男 | 湖北省武汉市 |
- | 3 | 关羽 | 32 | 男 | 湖北省荆州市 |
- | 5 | 赵云 | 25 | 男 | 河北省石家庄市 |
- +----+--------+------+--------+-----------------------+
- 3 rows in set (0.00 sec)
-