MySQL学习笔记12

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子句:

MySQL学习笔记12_第1张图片

案例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)

你可能感兴趣的:(MySQL,mysql)