MySql基础(三)基本查询

MYSQL中的SQL语句不区分大小写,一般习惯将关键字大写,而数据列和表名使用小写,养成一个良好习惯,对写出来的SQL语句更容易阅读和维护。

  • IN查询
//查询年龄是18或者30的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE age in(18,30);
+----+--------+------+--------+--------+
| id | name   | age  | salary | daptid |
+----+--------+------+--------+--------+
| 13 | 小环   |   18 |   3000 |      2 |
+----+--------+------+--------+--------+
1 row in set (0.00 sec)
 //查询年龄不是18和30的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE age not  in(18,30);
+----+-----------------+------+---------+--------+
| id | name            | age  | salary  | daptid |
+----+-----------------+------+---------+--------+
|  7 | 燕虹            |   21 | 7000.14 |      2 |
|  8 | 鬼王            |  180 |    8000 |      4 |
|  9 | 毒神            |  200 |    7000 |      6 |
| 10 | 陆小琪          |   20 |    1000 |      1 |
| 11 | 苍松好道人      |  170 |    7000 |      1 |
| 12 | 周一仙          |  500 |    5000 |      2 |
| 15 | 笨蛋            |    1 |       1 |      2 |
| 16 | 笨笨            |    1 |       1 |      2 |
| 17 | 小本            |   12 |    1000 |      1 |
| 18 | 小欢            |   12 |    1000 |      1 |
| 19 | 小欢            |   12 |    1000 |      1 |
| 20 | 小欢            |   12 |    1000 |      1 |
| 21 | 小欢            |   12 |    1000 |      1 |
| 24 | 1               |    1 |       1 |      1 |
| 25 | xiaoming        |   22 |   15555 |      5 |
| 26 | 1               |    1 |       1 |      1 |
+----+-----------------+------+---------+--------+
16 rows in set (0.00 sec)
  • 范围查询 BETWEEN AND
//查询年龄在范围18~30的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE age  BETWEEN 18 AND 30;
+----+-----------+------+---------+--------+
| id | name      | age  | salary  | daptid |
+----+-----------+------+---------+--------+
|  7 | 燕虹      |   21 | 7000.14 |      2 |
| 10 | 陆小琪    |   20 |    1000 |      1 |
| 13 | 小环      |   18 |    3000 |      2 |
| 25 | xiaoming  |   22 |   15555 |      5 |
+----+-----------+------+---------+--------+
4 rows in set (0.00 sec)

//查询年龄不在范围18~30的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE age NOT  BETWEEN 18 AND 30;
+----+-----------------+------+--------+--------+
| id | name            | age  | salary | daptid |
+----+-----------------+------+--------+--------+
|  8 | 鬼王            |  180 |   8000 |      4 |
|  9 | 毒神            |  200 |   7000 |      6 |
| 11 | 苍松好道人      |  170 |   7000 |      1 |
| 12 | 周一仙          |  500 |   5000 |      2 |
| 15 | 笨蛋            |    1 |      1 |      2 |
| 16 | 笨笨            |    1 |      1 |      2 |
| 17 | 小本            |   12 |   1000 |      1 |
| 18 | 小欢            |   12 |   1000 |      1 |
| 19 | 小欢            |   12 |   1000 |      1 |
| 20 | 小欢            |   12 |   1000 |      1 |
| 21 | 小欢            |   12 |   1000 |      1 |
| 24 | 1               |    1 |      1 |      1 |
| 26 | 1               |    1 |      1 |      1 |
+----+-----------------+------+--------+--------+
13 rows in set (0.00 sec)
  • LIKE 查询
    • 1百分号(%)通配符匹配任意长度的字符,包括零字符
//查询所有姓名以“小”开头的人员,
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE name like "小%";
+----+--------+------+--------+--------+
| id | name   | age  | salary | daptid |
+----+--------+------+--------+--------+
| 13 | 小环   |   18 |   3000 |      2 |
| 17 | 小本   |   12 |   1000 |      1 |
| 18 | 小欢   |   12 |   1000 |      1 |
| 19 | 小欢   |   12 |   1000 |      1 |
| 20 | 小欢   |   12 |   1000 |      1 |
| 21 | 小欢   |   12 |   1000 |      1 |
+----+--------+------+--------+--------+
6 rows in set (0.00 sec)

//查询所有姓名包含笨字的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE name like "%笨%";
+----+--------+------+--------+--------+
| id | name   | age  | salary | daptid |
+----+--------+------+--------+--------+
| 15 | 笨蛋   |    1 |      1 |      2 |
| 16 | 笨笨   |    1 |      1 |      2 |
+----+--------+------+--------+--------+
2 rows in set (0.00 sec)
  • 下划线通配符(_),匹配一个字符
//查询姓名以仙字结尾,前面有两个字符的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE name like "__仙";
+----+-----------+------+--------+--------+
| id | name      | age  | salary | daptid |
+----+-----------+------+--------+--------+
| 12 | 周一仙    |  500 |   5000 |      2 |
+----+-----------+------+--------+--------+
1 row in set (0.00 sec)
  • AND 多条件查询
    使用SELECT 查询时,可以增加查询的限制条件,这样可以使查询的结果更加准确。MYSQL 在WHERE 子句中使用AND操作符限定只有满足所有的查询条件的记录才会被返回。可以使用AND连接两个甚至多个查询条件,多个条件表达式之间用AND分开。
//查询 年龄在16和25之间并且姓名以小开头的人员
mysql> SELECT id,name,age,salary,daptid
    -> FROM user
    -> WHERE  age>16 AND age <25 and  name LIKE "小%";
+----+---------+------+--------+--------+
| id | name    | age  | salary | daptid |
+----+---------+------+--------+--------+
| 13 | 小环    |   18 |   3000 |      2 |
| 19 | 小欢2   |   22 |   1000 |      1 |
| 20 | 小欢3   |   17 |   1000 |      1 |
+----+---------+------+--------+--------+
3 rows in set (0.00 sec)
  • DISTINCT 消除重复数据
    mysql> SELECT DISTINCT age FROM user;
select `user`.ID,`user`.`Name`,`user`.Age ,department.DapName from `user` INNER 
JOIN department ON department.DaptID=`user`.DaptID
同上面语句
select a.ID,a.Name,a.Age ,department.DapName from `user` a INNER JOIN department ON department.DaptID=a.DaptID
+----+-----------------+------+-----------+
| ID | Name            | Age  | DapName   |
+----+-----------------+------+-----------+
|  4 | 田胖子          |  112 | 青云门    |
|  5 | 金瓶儿          |   20 | 万毒门    |
|  6 | 秦无炎          |   27 | 合欢派    |
|  7 | 燕虹            |   21 | 焚香谷    |
|  8 | 鬼王            |  180 | 鬼王宗    |
|  9 | 毒神            |  200 | 合欢派    |
| 10 | 陆小琪          |   20 | 青云门    |
| 11 | 苍松好道人      |  170 | 青云门    |
| 12 | 周一仙          |  500 | 焚香谷    |
| 13 | 小环            |   18 | 焚香谷    |
| 15 | 笨蛋            |    1 | 焚香谷    |
| 16 | 笨笨            |    1 | 焚香谷    |
| 17 | 小本            |   12 | 青云门    |
| 18 | 小欢            |   12 | 青云门    |
+----+-----------------+------+-----------+
14 rows in set (0.00 sec)
  • 排序 ORDER BY
    用SELECT 查询数据时,显示的顺序默认是按数据插入的先后顺序。
    SELECT name,age,salary,createtime FROM user ORDER BY name; //按姓名进行排序
    多列排序:
    SELECT name,age,salary,createtime FROM user ORDER BY name,createtime;//先按姓名排序,姓名一样时按创建时间排序
    ORDER BY 默认采用升序方式,可采用关键字DESC变为降序如:
    mysql> SELECT name,age,salary,createtime FROM user ORDER BY name DESC;//按姓名降序
    SELECT name,age,salary,createtime FROM user ORDER BY name DESC,createtime;//按姓名降序,姓名一样再按时间升序排列
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,806评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,255评论 1 16
  • (一)Oracle数据库 1.oracle中row_id理解 ORACLE的row_id是一个伪列,其个是为18个...
    独云阅读 5,697评论 0 10
  • 当阅读积累到一定程度,写作就像是吃饭,睡觉一样,成为平常的事。内心积累的丰富情感,像蹦豆子一样噼里啪啦涌出来,你总...
    一二三又米阅读 181评论 1 2