MySQL操作数据表的方式

发布时间:2021-09-16 14:48:03 作者:chen
来源:亿速云 阅读:119

本篇内容主要讲解“MySQL操作数据表的方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL操作数据表的方式”吧!

前言

我们在页面上看到的数据展示和修改等一系列操作,其实是对数据表的查询修改。所以学习基础的程序设计,我们必须掌握数据表的操作!

查询(select)

基本格式如下:

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

名词含义如下:

查询表中所有字段

SELECT 使用“*”查找表中所有字段的数据,或者列出所有字段名,语法格式如下:  

SELECT * FROM 表名;

注意:使用“*”查询时,只能按照数据表中字段的顺序进行排列,不能改变字段的排列顺序。  

查询表中指定的字段

查询表中的某一个字段的语法格式为: 

SELECT < 列名 > FROM < 表名 >;

去重(DISTINCT)

基本语法格式如下:

SELECT DISTINCT <字段名> FROM <表名>;

“字段名”为需要消除重复记录的字段名称,多个字段时用逗号隔开。  

使用 DISTINCT 关键字时需要注意以下几点:

为表指定别名

基本语法格式如下: 

<表名> [AS] <别名>

其中各子句的含义如下:

注意:表的别名不能与该数据库的其它表同名。字段的别名不能与该表的其它字段同名。在条件表达式中不能使用字段的别名,否则会出现“ERROR 1054 (42S22): Unknown column”这样的错误提示信息。 

为字段指定别名

基本语法格式如下:

<字段名> [AS] <别名>

其中,各子句的语法含义如下:

限制查询结果的条数(limit)

LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。  

指定初始位置

基本语法格式如下: 

LIMIT 初始位置,记录数SELECT * FROM 表名 LIMIT 3,5;  //起始位置3,结束为止5

不指定初始位置

基本语法格式如下:  

LIMIT 记录数SELECT * FROM 表名 LIMIT 4;  //4条记录数量

LIMIT和OFFSET组合使用

基本语法格式如下:  

LIMIT 记录数 OFFSET 初始位置SELECT * FROM tb_students_info LIMIT 5 OFFSET 3;  //返回从第 4 条记录开始的行数为 5 的记录

对查询结果排序 (ORDER BY)

其语法格式如下: 

ORDER BY <字段名> [ASC|DESC]

语法说明如下。

注意:

单字段排序

SELECT * FROM 表名 ORDER BY 字段名;

多字段排序

SELECT 字段1,字段2 FROM 表名 ORDER BY 字段1,字段2;

注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序。  

默认情况下,查询数据按字母升序进行排序(A~Z),但数据的排序并不仅限于此,还可以使用 ORDER BY 中的 DESC 对查询结果进行降序排序(Z~A)。  

条件查询数据(where)

基本语法格式如下:  

WHERE 查询条件

查询条件可以是:

单一条件的查询语句

单一条件指的是在 WHERE 关键字后只有一个查询条件。 

多条件的查询语句

在 WHERE 关键词后可以有多个查询条件,这样能够使查询结果更加精确。多个查询条件时用逻辑运算符 AND(&&)、OR(||)或 XOR 隔开。

模糊查询(like)

基本语法格式如下:

[NOT] LIKE  '字符串'

其中:

LIKE 关键字支持百分号“%”和下划线“_”通配符。 

通配符是一种特殊语句,主要用来模糊查询。当不知道真正字符或者懒得输入完整名称时,可以使用通配符来代替一个或多个真正的字符。 

带有“%”通配符的查询

“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。例如,a%b表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串。  

带有“_”通配符的查询

_”只能代表单个字符,字符的长度不能为 0。例如,a_b可以代表 acb、adb、aub 等字符串。  

LIKE 区分大小写

默认情况下,LIKE 关键字匹配字符的时候是不区分大小写的。如果需要区分大小写,可以加入 BINARY 关键字。  

使用通配符的注意事项和技巧

注意事项:


使用技巧:

范围查询(BETWEEN AND)

基本语法格式如下:

[NOT] BETWEEN 取值1 AND 取值2

其中:

BETWEEN AND 和 NOT BETWEEN AND 关键字在查询指定范围内的记录时很有用。例如,查询学生的年龄段、出生日期,员工的工资水平等。  

空值查询 (IS NULL)

MySQL 提供了 IS NULL 关键字,用来判断字段的值是否为空值(NULL)。空值不同于 0,也不同于空字符串。 如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。 

基本语法格式如下:

IS [NOT] NULL

“NOT”是可选参数,表示字段值不是空值时满足条件。  

分组查询(GROUP BY)

基本语法格式如下:

GROUP BY  <字段名>

“字段名”表示需要分组的字段名称,多个字段时用逗号隔开。 

GROUP BY单独使用

单独使用 GROUP BY 关键字时,查询结果会只显示每个分组的第一条记录。

GROUP BY 与 GROUP_CONCAT() 

GROUP BY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。 

GROUP BY 与聚合函数

在数据统计时,GROUP BY 关键字经常和聚合函数一起使用。

聚合函数包括 COUNT(),SUM(),AVG(),MAX() 和 MIN()。其中,COUNT() 用来统计记录的条数;SUM() 用来计算字段值的总和;AVG() 用来计算字段值的平均值;MAX() 用来查询字段的最大值;MIN() 用来查询字段的最小值。  

GROUP BY 与 WITH ROLLUP

WITH POLLUP 关键字用来在所有记录的最后加上一条记录,这条记录是上面所有记录的总和,即统计记录数量。 

过滤分组(HAVING)

在 MySQL 中,可以使用 HAVING 关键字对分组后的数据进行过滤。  

基本语法格式如下:

HAVING <查询条件>

HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。
但是 WHERE 和 HAVING 关键字也存在以下几点差异:

正则表达式(REGEXP)

正则表达式主要用来查询和替换符合某个模式(规则)的文本内容。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大且灵活,常用于非常复杂的查询。 

基本语法格式如下:

属性名 REGEXP '匹配方式'

其中,“属性名”表示需要查询的字段名称;“匹配方式”表示以哪种方式来匹配查询。“匹配方式”中有很多的模式匹配字符,它们分别表示不同的意思。下表列出了 REGEXP 操作符中常用的匹配方式。 

选项说明例子匹配值示例
^匹配文本的开始字符'^b' 匹配以字母 b 开头的字符串book、big、banana、bike
$匹配文本的结束字符'st$' 匹配以 st 结尾的字符串test、resist、persist
.匹配任何单个字符'b.t' 匹配任何 b 和 t 之间有一个字符bit、bat、but、bite
*匹配零个或多个在它前面的字符'f*n' 匹配字符 n 前面有任意个字符 ffn、fan、faan、abcn
+匹配前面的字符 1 次或多次'ba+' 匹配以 b 开头,后面至少紧跟一个 aba、bay、bare、battle
<字符串>匹配包含指定字符的文本'fa' 匹配包含‘fa’的文本fan、afa、faad
[字符集合]匹配字符集合中的任何一个字符'[xz]' 匹配 x 或者 zdizzy、zebra、x-ray、extra
[^]匹配不在括号中的任何字符'[^abc]' 匹配任何不包含 a、b 或 c 的字符串desk、fox、f8ke
字符串{n,}匹配前面的字符串至少 n 次'b{2}' 匹配 2 个或更多的 bbbb、bbbb、bbbbbbb
字符串
{n,m}
匹配前面的字符串至少 n 次, 至多 m 次'b{2,4}' 匹配最少 2 个,最多 4 个 bbbb、bbbb

 

查询以特定字符或字符串开头的记录

字符^用来匹配以特定字符或字符串开头的记录。

查询以特定字符或字符串结尾的记录

字符$用来匹配以特定字符或字符串结尾的记录。

替代字符串中的任意一个字符

字符.用来替代字符串中的任意一个字符。 

匹配多个字符

字符*+都可以匹配多个该符号之前的字符。不同的是,+表示至少一个字符,而*可以表示 0 个字符。 

匹配指定字符串

正则表达式可以匹配字符串。当表中的记录包含这个字符串时,就可以将该记录查询出来。指定多个字符串时,需要用|隔开。只要匹配这些字符串中的任意一个即可。 

匹配指定字符串中的任意一个

使用方括号[ ]可以将需要查询的字符组成一个字符集合。只要记录中包含方括号中的任意字符,该记录就会被查询出来。例如,通过“[abc]”可以查询包含 a、b 和 c 等 3 个字母中任意一个的记录。 

匹配指定字符以外的字符

[^字符集合]用来匹配不在指定集合中的任何字符。  

使用{n,}或者{n,m}来指定字符串连续出现的次数

字符串{n,}表示字符串连续出现 n 次;字符串{n,m}表示字符串连续出现至少 n 次,最多 m 次。
例如,a{2,} 表示字母 a 连续出现至少 2 次,也可以大于 2 次;a{2,4} 表示字母 a 连续出现最少 2 次,最多不能超过 4 次。  

插入数据/添加数据(INSERT)

INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。 

INSERT…VALUES语句
INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];

语法说明如下。

INSERT…SET语句
INSERT INTO <表名>
SET <列名1> = <值1>,
       <列名2> = <值2>,
       …

此语句用于直接给表中的某些列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,col_name 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。

由 INSERT 语句的两种形式可以看出:

在 MySQL 中,用单条 INSERT 语句处理多个插入要比使用多条 INSERT 语句更快。
当使用单条 INSERT 语句插入多行数据的时候,只需要将每行数据用圆括号括起来即可。  

修改数据/更新数据(UPDATE)

使用 UPDATE 语句修改单个表,基本语法格式如下:  

UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

语法说明如下:

注意:修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。 

删除数据(DELETE)

基本语法格式如下:  

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

语法说明如下:


注意:在不使用 WHERE 条件的时候,将删除所有数据。  

到此,相信大家对“MySQL操作数据表的方式”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. 操作mysql数据表的基本方法
  2. MySQL该如何操作数据表中的记录

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:怎么使用nodejs设置编码

下一篇:怎么实现MySQL库中的按条件变化分组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》