MySQL —— 简单查询与按条件查询

在MySQL中从数据表中查询数据的基本语句时select语句。
  select语句基本语法格式:
      select 查询内容
      from 表名
      where 表达式
      group by 字段名
      having 表达式
      order by 字段名
      limit 记录数
每一个select语句由多个子句组成。

1. from 表名 指定是从那张表中查询

2. select 查询内容

查询所有字段 select * from 表名;
*通配符表示所有字段
mysql> select * from test;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | A    |    4 |
|    2 | B    |    7 |
|    3 | C    |    5 |
|    4 | D    |   12 |
+------+------+------+
4 rows in set (0.06 sec)

查询部分字段 select 字段名 from 表名;
mysql> select name from test;
+------+
| name |
+------+
| A    |
| B    |
| C    |
| D    |
+------+
4 rows in set (0.00 sec)

在MySQL表中,每个字段的数据可以当做变量处理。
查询所需的某个字段数据处理后的结果:select 字段处理方式 from 表名;
mysql> select age-3  from test;
+-------+
| age-3 |
+-------+
|     1 |
|     4 |
|     2 |
|     9 |
+-------+
4 rows in set (0.11 sec)

3. where 表达式 (按条件查询)
在MySQL的表查询时,往往并不是需要将所有内容全部查出,而是根据实际需求,查询所需数据
select 查询内容 from 表名 where 表达式;

在MySQL语句中,条件表达式是指select语句的查询条件,在where子句中可以使用关系运算符连
接操作数作为查询条件对数据进行选择。
关系运算符:
=   等于
<>  不等于
!=  不等于
<   小于
>   大于
<=  小于等于
>=  大于等于

例如查询年龄大于5的信息
mysql> select * from test where age > 5;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    2 | B    |    7 |
|    4 | D    |   12 |
+------+------+------+
2 rows in set (0.04 sec)

带in的关键字查询
查询某个指定集合内的记录 select 查询内容 from 表名 where 条件 in(指定内容);
mysql> select * from test where age in (5, 12);
+------+------+------+
| id   | name | age  |
+------+------+------+
|    3 | C    |    5 |
|    4 | D    |   12 |
+------+------+------+
2 rows in set (0.00 sec)

带有between and 关健字查询
查询某个在给定范围内的记录 select 查询内容 from 表名 where 条件 between 值1 and 值2;
mysql> select * from test where age between 5 and 12;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    2 | B    |    7 |
|    3 | C    |    5 |
|    4 | D    |   12 |
+------+------+------+
3 rows in set (0.07 sec)

查询某些为空NULL  或 非空的记录 select 查询内容 from 表名 where 条件 is(not) NULL;
mysql> select * from test where age is NULL;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    6 | F    | NULL |
+------+------+------+
1 row in set (0.00 sec)

在查询时过滤掉重复的值:select distinct 字段名 from 表名;字段名表示要过滤重复记录的字段
mysql> select num from a;
+------+
| num  |
+------+
|    5 |
|   10 |
|   15 |
|   10 |
|   15 |
|    5 |
|   10 |
+------+
7 rows in set (0.00 sec)

mysql> select distinct num from a;
+------+
| num  |
+------+
|    5 |
|   10 |
|   15 |
+------+
3 rows in set (0.00 sec)
在使用distinct指定多个字段时,只有被指定的这些字段的值都相同,才会被认为是重复的

在查询具有一类相同特征的数据时,需要用到模糊查询,这是就需要使用like关键字
select 查询内容 from 表名 where 内容 (not) like ‘匹配的字符串’
百分号通配符 %,表示匹配任意长度的任意字符串
mysql> select name from name;
+------+
| name |
+------+
| 1112 |
| 1122 |
| 1222 |
| 2111 |
+------+
4 rows in set (0.00 sec)

mysql> select name from name where name like ‘11%‘;
+------+
| name |
+------+
| 1112 |
| 1122 |
+------+
2 rows in set (0.00 sec)

下划线通配符 _ :表示匹配任意单个字符,如果需要匹配多个字符,则需要使用多个 _
mysql> select name from name where name like ‘11__‘;
+------+
| name |
+------+
| 1112 |
| 1122 |
+------+
2 rows in set (0.00 sec)

如果需要查询带有 % 或 _ 的数据,由于 % 和 _ 是通配符,则需要使用 \ 进行转义
\% 表示 %,\_ 表示 _

有时在查询时为了查询结果更加精确,需要多个限条件,这时就需要 and(&&) 来连接条件
mysql> select cat_id, cat_name, parent_id from category;
+--------+---------------------------+-----------+
| cat_id | cat_name                  | parent_id |
+--------+---------------------------+-----------+
|      1 | 手机类型                  |         0 |
|      2 | CDMA手机                  |         1 |
|      3 | GSM手机                   |         1 |
|      4 | 3G手机                    |         1 |
|      5 | 双模手机                  |         1 |
|      6 | 手机配件                  |         0 |
|      7 | 充电器                    |         6 |
|      8 | 耳机                      |         6 |
|      9 | 电池                      |         6 |
|     11 | 读卡器和内存卡            |         6 |
|     12 | 充值卡                    |         0 |
|     13 | 小灵通/固话充值卡         |        12 |
|     14 | 移动手机充值卡            |        12 |
|     15 | 联通手机充值卡            |        12 |
+--------+---------------------------+-----------+
14 rows in set (0.00 sec)

mysql> select cat_id, cat_name, parent_id from category
    -> where cat_id > 7 and parent_id = 6;
+--------+-----------------------+-----------+
| cat_id | cat_name              | parent_id |
+--------+-----------------------+-----------+
|      8 | 耳机                  |         6 |
|      9 | 电池                  |         6 |
|     11 | 读卡器和内存卡        |         6 |
+--------+-----------------------+-----------+
3 rows in set (0.05 sec)

有时在查询时,只需要数据满足某些条件中的某一个,这时就需要使用 or(||) 来连接条件
ysql> select cat_id, cat_name, parent_id from category where cat_id = 3 or cat_id = 9;
+--------+-----------+-----------+
| cat_id | cat_name  | parent_id |
+--------+-----------+-----------+
|      3 | GSM手机   |         1 |
|      9 | 电池      |         6 |
+--------+-----------+-----------+
2 rows in set (0.02 sec)

在查询时,and 的优先级高于 or

时间: 2024-10-13 22:20:52

MySQL —— 简单查询与按条件查询的相关文章

通过带参数的Sql语句来实现模糊查询(多条件查询)

#region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books"); List<string> listWheres = new List<string>(); List<SqlParameter> listParams = new List<SqlParameter>(); if (txtBookName.Text.T

MyBatis模糊查询和多条件查询

MyBatis模糊查询和多条件查询 一.ISmbmsUserDao层 //根据姓名模糊查询 public List<Smbms> getUser(); //多条件查询 public List<Smbms> getLikeUser(@Param("userName") String userName , @Param("userCode") String userCode ); 二.小配置文件 ISmbmsUserDao.xml <!--

MySQL简单快速入门 (三)高级查询——JEPLUS软件快速开发平台

03.SQL高级查询_分组: 1).需求:一条查询,查询出每种商品的最高价格 2).分组的命令:group by 分组字段 3).实现上例: select category_id,max(price)  from product group by category_id; 查询顺序:先分组,再聚合 4).注意事项: 分组查询的结果最多只能包含:分组列,聚合结果,不能包含其他字段. 5).练习1: 需求:查询每个生产日期的商品的数量是多少? select  proDate,count(*)  fr

MySql(四)Select条件查询

select条件查询的格式如下: SELECT 查询列表FROM 表名WHERE 筛选条件:123456根据筛选条件可以分为以下几类: 按照条件按表达式进行筛选 常用条件运算符如下:> .<.=.!=.<>.<=.>= 按照逻辑表达式进行筛选 ? 逻辑运算符的主要作用:用于连接条件表达式 & . || .! .and.or.not 模糊查询 like.between and .in.is null like通常和通配符搭配使用:①:%:代表任意多个字符 ②:_:

关键字查询和多条件查询

0616DBDA.class.php 代码 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/6/16 * Time: 11:23 */ class DBDA { public $host="localhost";//服务器地址 public $uid="root" ;//用户名 public $pwd="";//密码 public $dbconnect;

PHP关键词查询和多条件查询

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

MyBatis关联查询、多条件查询

1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Classes { 9     //定义实体类的属性,与class表中的字段对应 10     private int id;            //id===>c_id 11     private String name;    //name===>c_name 13     /** 14      * class表中有一个tea

【Oracle】曾经的Oracle学习笔记(4-7)多表联合查询,子查询,动态条件查询

一.多表联合查询 二.子查询 三.动态条件查询 LESSON 4 Displaying Data from Multiple Tables-------------------------------------------------------- 查询s_emp表中最大的工资数,并且显示出这个最大工资数的员工名字 select last_name,max(salary)from s_emp; 多表查询 查询多张表的时候会产生笛卡尔积 为了防止笛卡尔积的产生,我们需要使用某些条件把两张表或多张

PHP分页查询中的条件查询

下面是分页查询中含有条件的查询的代码.  里面一些代码我已经注明用处. <body> <form method="get"> 关键字:<input type="text" name="name" /> <input type="submit" value="搜索" /> </form> 创建一个表单和按钮进行输入关键字 <table widt