数据查询

一、基本查询语句

1、语法:写一行

select{*<字段列表>}//查询的字段,多个字段用逗号分开
from<表1>,<表2>…//数据表名
{//可选
[where<表达式>]//限定条件,只能放一个。

2、实例

mysql> select * from publisher;
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 01 | 2 | 1111 |
| 02 | 3 | 1111 |

二、单表查询

1、用于查询的比较运算

操作符

含义

操作符

含义

操作符

含义

=

等于(不是==)

<=

小于、等于

in(set)

等于值列表中的一个

>

大于

<>(!=)

不等于

like

模糊查询

>=

大于、等于

:=

赋值

is (not)null

(不是)空值

<

小于

betwee…and

在两值之间

2、比较运算符的优先级

优先级

运算符

优先级

运算符

1

算术运算符

5

[NOT] BETWEEN

2

连接符

6

NOT

3

比较符

7

AND

4

IS [NOT] NULL, LIKE, [NOT] IN

8

OR

3、查询所有字段

语法:

select * from 表名(心号两边有空格)

4、查询指定字段,所有记录

语法:

select 字段名1…字段名n from 表名 where 条件表达式

5、给显示的列名重新命名

语法:

select 字段1 as 列名1[字段2 as 列名2……字段n as 列名n] from 表名

6、查询指定记录,单个记录

语法:

select 字段名1…字段n from 表名 where 条件

7、带IN关键字的查询

作用:用于查询指定范围内的条件记录,只要满足条件范围内的一个值即为匹配项
语法:

select 字段 from 数据表 where 指定字段(not)in(取值条件,取值条件1)等于where 指定字段=取值条件 or指定字段=取值条件1(order by 字段//条件可选);

【附】加not代表不在这个范围的值

实例:

mysql> select bh,cbs from publisher where bh in(01,09) order by cbs;
+----+-----+ bh的值为01,09输出结果
| bh | cbs |
+----+-----+
| 09 | 10 |
| 01 | 2 |
+----+-----+

8、带BETWEEN AND的范围查询

作用:查询每个范围内的值

语法:

select 显示结果的列 from 数据表名 where 条件的列 between 范围的开始值 and 范围的结束值;

字段名>=起始值 and 字段名<=结束值
两个表达式字段名相同,值不同
实例:

mysql> select bh,cbs from publisher where cbs between 7 and 09;
+----+-----+
| bh | cbs |
+----+-----+
| 06 | 7 |
| 07 | 8 |
| 08 | 9 |
+----+-----+

9、带LIKE的字符匹配查询

作用:查询某个字符,如“apple”“grape”“coconut”中带“a”的字段
通配符:用于where的特殊字符
(1)、“%”匹配任意长度的字符,甚至包括零字符,最大字段为数据类型的长度
语法:

select 字段from 数据表名 where 字段(类型必须是char或varchar) like '条件%';

实例:

1)全部值
mysql> select*from publisher;
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 01 | 2 | 1111 |
| 02 | 3 | 1111 |
+----+-----+------+ 2)取bh列且0在前面的值
mysql> select*from publisher where bh like '0%';
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 01 | 2 | 1111 |
| 02 | 3 | 1111 |
+----+-----+------+ 3)取列bh且0在后面的值
mysql> select*from publisher where bh like '%0';
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 10 | 11 | 1111 |
| 20 | 21 | 1111 |
+----+-----+------+
4)取例bh且有0在的值
mysql> select*from publisher where bh like '%0%';
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 01 | 2 | 1111 |
| 02 | 3 | 1111 |
+----+-----+------+

(2)“_”一次只能匹配任意一个字符;
作用:基本和“%”类似
语法:

select 字段from 数据表名 where 列 like '条件_';(后面两个’条件_ _’)

【例】:
查询bh列且以“1”开头,后面接一个任意符

mysql> select*from publisher where bh like '1_';
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 10 | 11 | 1111 |
+----+-----+------+

10、查询空值

空值:一般表示数据未知、不适用或者在将来以后添加数据,它不是空格,或者0.
语法:

select 字段from 数据表名 where 列1 is null and…… and 例n;

11、带AND的多条件查询

条件:满足所有的条件表达式

语法:

select 字段from 数据表名 where 条件表达式1 and 条件表达式2 … and 条件表达式n;

【例】

mysql> select bh,cbs,bz from publisher where bh=10 and cbs=11 and bz=1111;
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 10 | 11 | 1111 |
+----+-----+------+

12、带0R的多条件查询

条件:满足一个条件表达式
语法:语法:

select 字段from 数据表名 where 条件表达式1 or 条件表达式2… or 条件表达式n;

【例】

mysql> select bh,cbs,bz from publisher where bh=10 or cbs=11 or bz=111;
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 10 | 11 | 1111 |
+----+-----+------+

【附】and和or联用
【例】

mysql> select bh,cbs,bz from publisher where bh=10 or cbs=11 and bz=111;
+----+-----+------+
| bh | cbs | bz |
+----+-----+------+
| 10 | 11 | 1111 |
+----+-----+------+ mysql> select bh,cbs,bz from publisher where bh=10 and cbs=10 or bz=111;
Empty set (0.00 sec) mysql> select bh,cbs,bz from publisher where bz=111 or bh=10 and cbs=10;
Empty set (0.00 sec)

说明:and的优先级高于or,因此先对and两边的操作数进行操作,再于or的操作数结合。

13、查询结果不重复

语法:

select distinct 字段名 from 数据表名;

14、对查询结果排序

(1)单列:
语法:

select 要显示的字段from 数据表名 order by 排序依据的字段(聚合函数) desc\asc;

注意:desc降序,asc升序,asc为排序的默认方式
(2)多列:
语法:

select 要显示的字段from 数据表名 order by a desc\asc,b desc\asc ……;

注意:先进行a表的升降序,在进行b表的升降序

15、使用LIMIT限制查询结果的数量-----分页查询

语法:limit [位置偏移量,] 行数
位置偏移量:值从那行开始显示,是可选,如果不指定,从第一条记录开始(第一条记录的位置从0开始,和java的索引相类似)
行数:指示返回的记录
注意:limit 4 offset 3,意思为获取从第五条记录开始后面3条记录,和limit 4,3返回的结果相同。
  【例】select * from dingdan limit 2,3;

二、连接查询------先内在外

1、内连接查询(inner join)

语法:
①select 字段名 fromA表表名,B表表名……where【A表表名.】字段名a=【B表表名.】字段名b=……
②select 字段名 fromA表表名 inner join B表表名on【A表表名.】字段名a=【B表表名.】字段名b
注意:字段a、b必须是有相同意义和相同类型

2、外连接查询

①左外连接:
select 需要的字段名 fromA表表名 left joinB表表名 on A表表名.】字段名=【B表表名.】字段名
A表被称为左表    B表被称为右表
注意:
左外连接,不管连接条件是否满足。都执行一次
右外连接,是否执行,根据连接条件判断
②右外连接:
select 需要的字段名 fromA表表名 right joinB表表名 on A表表名.】字段名=【B表表名.】字段名
A表被称为左表    B表被称为右表
注意:
右外连接,不管连接条件是否满足。都执行一次
左外连接,是否执行,根据连接条件判断

3、连接条件的特点

(1)内连接:满足连接条件记录出现
(2)左外连接:左表记录至少出现一次
(3)满足连接条件,满足出现的记录
(4)不满足,左表记录信息出现,右表信息为空

4、连接查询思路

1、根据题目要求,确定连接结果
2、根据连接结果,确定连接方式
3、根据语法,写出语句
4、确定查询字段
5、确定访问的表
6、连接条件

三、子查询

1、带ANY、SOME关键字的子查询

①定义:只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件
②语法:select 字段名 from 表名 where 字段名 关系运算符 any/some(select 字段 from 表名)
关系运算符:>,<=,<,>=,=
条件:select 字段 from 表名

2、带ALL关键字的子查询

①定义:只要满足内层子查询中的所有比较条件,才返回一个结果作为外层查询的条件
②语法:select 字段名 from 表名 where 字段名 关系运算符 all(select 字段 from 表名)
关系运算符:>,<=,<,>=,=
条件:select 字段 from 表名

3、带EXISTS关键字的子查询---------判断某个字段是否存在

①定义:判断条件是否满足,满足返回true,外层开始查询,不满足返回false,外层不查询。
②语法:select 字段名 from 表名 where exist(条件)
关系运算符:>,<=,<,>=,=
条件:select 字段 from 表名 where 条件
  ③注意:no exists判断条件是否满足,不满足返回true,外层开始查询,满足返回false,外层不查询。

4、带IN关键字的子查询

①定义:内层查询语句仅仅返回一个数据列,这个数据列的里的值,将提供给外层查询语句查询比较
②语法:elect 字段名 from 表名 where 字段名 in(select 字段名 from 表名 where 条件)
5、带比较运算符关键字的子查询
  关键字:<,>,>=,<=,!=(不等于),<>(不等于)

四、合并查询结果

①语法:select 字段名 from 表名 union【all】select 字段名from 表名;
②注意:
  1、两个表对应的列数和数据数量必须相同
  2、各个select之间用union或union all关键字分开
  3、union执行时删除重复的行,结果唯一
  4、union all执行时包含重复的行

五、为表和字段取别名

1、为表取别名:表名 as 表别名
2、为字段取别名:列名 as 列别名
注意,取别名时,别名不能与原有的数据的表名和列名有冲突

六、使用正则表达式查询

1、语法:select 字段名 from 表名 where 字段名 regexp ‘正则表达式’;
2、常用的正则表达式字符匹配列表
符号 说明 例子 匹配值示例

符号

说明

例子

匹配值示例

^

匹配文本开始字符

‘ ^ b’匹配以字母b开头的字符串

book,big

$

匹配文本结束字符

‘st$’匹配以st结尾的字符串

test,resist

.

匹配任何单个字符

‘b.t’匹配任何b和t之间有一个字符

bit,bat,but

*

匹配零个或多个在它前面的字符

‘f*n’匹配字符n前面有任意个字符f

fn,fan,abcn

+

匹配一次或多次在它前面的字符

‘ba+’匹配以b开头后面紧跟至少有一个a

ba,bay,bare

<字符串>

匹配包含指定的字符串的文本

‘fa’指定文本中包含fa的字符

fan,afa,faad

[字符集合]

匹配字符集合中的任何一个字符

‘[xz]’匹配x或z

dizzy,xebra,

[ ^ ]

匹配不在括号中的任何字符

‘[ ^ abc]’匹配任何不包含a,b,c的字符串

desk,fox,f8ke

字符串{n,}

匹配前面的字符串至少n次

b{2}匹配至少2个的b

bbb,bbbb,bb

字符串{n,m}

匹配前面的字符串至少n次,至多m次。

b{2,4}匹配至少2个,至多4个的b

bbbb,bbb,bb

注意:
1)字符串{n,m},如果n为0,此参数为可选参数
2)匹配多个指定字
3)符串,字符串之间用“|”分开

MySQL:数据查询的更多相关文章

  1. nodejs mysql 数据查询例子

    1.安装nodejs 2.安装mysql  npm包 地址:https://github.com/felixge/node-mysql npm install mysql 3.相应API查看及调用: ...

  2. MySQL数据查询之单表查询

    单表查询 简单查询 - 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMEN ...

  3. mysql 数据查询全讲

    数据查询 涉及到DQL(Data Query Language)是sql语句的一类 本文全面介绍了mysql下 select 语句的各种查询方式:普通查询,模糊查询,查询排序,分页查询,聚合函数查询  ...

  4. MySQL - 数据查询 - 简单查询

    1. 简述 查询数据是指从数据库中获取所需要的数据.如Jack 要达到验证用户名和密码的目的,就需要从数据库已保存的用户表中读取当前用户的密码进行验证,以验明正身!保存查询数据是数据库操作中常用且重要 ...

  5. 【初学python】使用python连接mysql数据查询结果并显示

    因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

  6. Packets larger than max_allowed_packet are not allowed(mysql数据查询提示:不允许超过允许的最大数据包)解决方案

    问题背景: 首先我的项目运用的时Mysql,在做一个数据更新操作的时候,提示异常:System.Exception:“ExecuteNonQuery:Packets larger than max_a ...

  7. MySQL数据查询

    数据查询语言DQL select [all | distinct] 字段或表达式列表 [from子句] [where子句] [group by子句] [having子句] [order by子句] [ ...

  8. MySQL数据查询之多表查询

    多表查询 多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dna ...

  9. MySql数据查询的逻辑蕴含条件问题

    SQL语言中没有蕴含逻辑运算.但是,可以利用谓词演算将一个逻辑蕴含的谓词等价转换为:p->q ≡┐p∨q. 我们通过一个具体的题目来分析:(具体的表和数据详见文章:Mysql数据库中的EXIST ...

  10. 笔记-4:mysql数据查询

    1.创建查询表 1.1 创建班级表 含义 字段名 数据类型 宽度 班级编号 classNo 字符型 6 班级名称 className 字符型 20 所属院系 department 字符型 30 年级 ...

随机推荐

  1. 内存地址 id

    def a(): return b def b(): print('666')c = a()print(c) #打印16进制的内存地址print(b) #打印16进制的内存地址print (id(c) ...

  2. Spring整合MyBatis(简单登录Demo)

    SpringMvc简单整合(登录模块) 1.1 整合思路 1.SqlSessionFactory对象应该放到spring容器中作为单例存在. 2.传统dao的开发方式中,应该从spring容器中获得s ...

  3. Hdu1241 Oil Deposits (DFS)

    Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...

  4. 解决 Bash On Windows 下载慢或无法下载的问题

    解决 Bash On Windows "无法从 Windows 应用商店下载.请检查网络连接."的问题 Fiddler和Bash On Windows 源离线压缩包:http:// ...

  5. Zeu.js

    一个生成各种 GIF 动画的 JavaScript 类库,非常适合用于让你的数据展示变得更加地生动.使用起来也非常简单,有数据展示需求的同学可以尝试一下.https://shzlw.github.io ...

  6. chrome内核浏览器插件的使用--Tampermonkey(油猴插件)

    Tampermonkey(油猴插件),这个插件是一个用于改造你浏览器打开的网站的插件.它可以在你打开的网页中注入任意js脚本,以达到你想要的外加功能.可以说非常不错.很多时候也值得使用. 这是个chr ...

  7. Android一个工程引用另一个工程的方法

    一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个And ...

  8. 王之泰201771010131《面向对象程序设计(java)》第三周学习总结

    王之泰201771010131<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识复习部分 第一章 回顾了Java“白皮书”的关键性语句,再次理解了以前未理解的句子.对Jav ...

  9. luogu2046[NOI2010]海拔 对偶图优化

    luogu2046[NOI2010]海拔 对偶图优化 链接 https://www.luogu.org/problemnew/show/P2046 思路 海拔一定是0或者1,而且会有一条01交错的分界 ...

  10. CSS基础学习(二) 之 width min-width max-width属性

    width 1. 设置元素内容区(content area)的宽度. 2. 如果box-szing属性设置为border-box,width表示border area的宽度,如下图 min-width ...