条件查询
语法:
select 列名 from 表名 where 列 运算符 值
说明:
注意关键字where,where后⾯跟上⼀个或者多个条件,条件是对前⾯数据的过
滤,只有满⾜where后⾯条件的数据才会被返回。
下⾯介绍常见的查询运算符。条件查询运算符
等于(=)
select 列名 from 表名 where 列 = 值;
说明:
查询出指定的列和对应的值相等的记录。
操作符描述=等于
<> 或者!= 不等于 >⼤于 <⼩于 >=⼤于等于 <=⼩于等于
值如果是字符串类型,需要⽤单引号或者双引号引起来。
⽰例:
mysql> create table test1 (a int,b varchar(10));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into test1 values (1,'abc'),(2,'bbb');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from test1;
+------+------+
| a | b |
+------+------+
| 1 | abc |
| 2 | bbb |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from test1 where a=2;
+------+------+
| a | b |
+------+------+
| 2 | bbb |
+------+------+
1 row in set (0.00 sec)
mysql> select * from test1 where b = 'abc';
+------+------+
| a | b |
+------+------+
| 1 | abc |
+------+------+
1 row in set (0.00 sec)
mysql> select * from test1 where b = "abc";
+------+------+
| a | b |
+------+------+| 1 | abc |
+------+------+
1 row in set (0.00 sec)
不等于(<>、!=)
不等于有两种写法:<>或者!=
select 列名 from 表名 where 列 <> 值;
或者
select 列名 from 表名 where 列 != 值;
⽰例:
mysql> select * from test1 where a<>1;
+------+------+
| a | b |
+------+------+
| 2 | bbb |
+------+------+
1 row in set (0.00 sec)
mysql> select * from test1 where a!=1;
+------+------+
| a | b |
+------+------+
| 2 | bbb |
+------+------+
1 row in set (0.00 sec)
注意:
<> 这个是最早的⽤法。
!=是后来才加上的。
两者意义相同,在可移植性上前者优于后者
故⽽sql语句中尽量使⽤<>来做不等判断
⼤于(>)
select 列名 from 表名 where 列 > 值;⽰例:
mysql> select * from test1 where a>1;
+------+------+
| a | b |
+------+------+
| 2 | bbb |
+------+------+
1 row in set (0.00 sec)
mysql> select * from test1 where b>'a';
+------+------+
| a | b |
+------+------+
| 1 | abc |
| 2 | bbb |
+------+------+
2 rows in set (0.00 sec)
mysql> select * from test1 where b>'ac';
+------+------+
| a | b |
+------+------+
| 2 | bbb |
+------+------+
1 row in set (0.00 sec)
说明:
数值按照⼤⼩⽐较。
字符按照ASCII码对应的值进⾏⽐较,⽐较时按照字符对应的位置⼀个字符⼀个
字符的⽐较。
其他⼏个运算符(<、<=、>=)在此就不介绍了,⽤法和上⾯类似,⼤家可以⾃⼰练习⼀
下。逻辑查询运算符
当我们需要使⽤多个条件进⾏查询的时候,需要使⽤逻辑查询运算符。
AND(并且)
select 列名 from 表名 where 条件1 and 条件2;
表⽰返回满⾜条件1和条件2的记录。
⽰例:
逻辑运算符描述AND多个条件都成⽴ OR多个条件中满⾜⼀
个mysql> create table test3(a int not null,b varchar(10) not null);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into test3 (a,b) values (1,'a'),(2,'b'),(2,'c'),(3,'c');
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from test3;
+---+---+
| a | b |
+---+---+
| 1 | a |
| 2 | b |
| 2 | c |
| 3 | c |
+---+---+
4 rows in set (0.00 sec)
mysql> select * from test3 t where t.a=2 and t.b='c';
+---+---+
| a | b |
+---+---+
| 2 | c |
+---+---+
1 row in set (0.00 sec)
查询出了a=2 并且 b='c'的记录,返回了⼀条结果。
OR(或者)
select 列名 from 表名 where 条件1 or 条件2;
满⾜条件1或者满⾜条件2的记录都会被返回。
⽰例:
mysql> select * from test3;
+---+---+
| a | b |
+---+---+| 1 | a |
| 2 | b |
| 2 | c |
| 3 | c |
+---+---+
4 rows in set (0.00 sec)
mysql> select * from test3 t where t.a=1 or t.b='c';
+---+---+
| a | b |
+---+---+
| 1 | a |
| 2 | c |
| 3 | c |
+---+---+
3 rows in set (0.00 sec)
查询出了a=1或者b='c'的记录,返回了3条记录。