个性化阅读
专注于IT技术分析

mysql基本增删改查、所有查询子句以及连接查询完全解读

上一章mysql教程中我们讨论了:mysql数据类型、数据库连接、基本数据库和表操作,本章中我们开始讨论mysql的高级内容:基本增删改查、所有查询子句以及连接查询。

一、mysql基本增删改查

1、插入数据

要将数据插入MySQL表,需要使用SQL insert into命令可以将数据插入到MySQL表中,下面是insert into命令的通用SQL语法,用于将数据插入MySQL表:

insert into table_name ( field1, field2,...fieldN )
   values
( value1, value2,...valueN );

2、查找数据

SQL select命令用于从MySQL数据库查找数据,下面是select命令的通用SQL语法,用于从MySQL表中查找数据:

select field1, field2,...fieldN 
from tn1, tn2...
[where clause]
[offset M ][limit N]
  • 你可以在单个select命令中获取一个或多个字段。
  • 你可以指定*号来代替字段,在本例中select *将返回所有字段。
  • 可以使用where子句指定任何条件。
  • offset为偏移量,默认偏移量从0开始。
  • 使用limit属性限制返回的数量。

3、更新数据

需要更新MySQL表中的现有数据,可以通过使用SQL update命令来实现这一点,这将修改任何MySQL表的任何字段值。下面的代码块使用update命令的通用SQL语法来修改MySQL表中的数据:

update table_name set field1 = new-value1, field2 = new-value2
[where clause]

4、删除数据

语法如下:

delete from table_name [where clause]
  • 如果没有指定where子句,那么所有记录都将从给定的MySQL表中删除。
  • 可以使用where子句指定任何条件。
  • 可以一次删除单个表中的记录。

当希望删除表中选定的行时,where子句非常有用。

二、MySQL所有查询子句

1、where子句

我们可以使用一个名为where子句的条件句来过滤掉结果,使用这个where子句我们可以指定一个选择条件来从表中选择所需的记录。

下面的代码块具有select命令的通用SQL语法,带有用于从MySQL表获取数据的where子句:

select field1, field2,...fieldN tn1, tn2...
[where condition1 [AND [OR]] condition2.....
  • 可以使用一个或多个由逗号分隔的表来包含使用where子句的各种条件,但是where子句是select命令的可选部分。
  • 可以使用where子句指定任何条件。
  • 可以使用and或or操作符指定多个条件。

where子句的工作原理类似于任何编程语言中的if条件,这个子句用于比较给定的值和MySQL表中可用的字段值。

以下是操作符列表,可以与where子句一起使用,假设字段A等于10字段B等于20:

操作符 描述 例子
= 相等则为真。 (A = B) not true.
!= 不相等则条件为真。 (A != B) true.
检查左操作数的值是否大于右操作数的值,如果是则条件为真。 (A > B) not true.
检查左操作数的值是否小于右操作数的值,如果是则条件为真。 (A < B) true.
>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 (A >= B) not true.
<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 (A <= B) true.

where子句特别是在使用MySQL连接查询的时候,并且使用主键搜索记录以加快搜索速度是一种常见的做法,果给定的条件不匹配表中的任何记录,那么查询将不返回任何行。

2、like子句

我们可以使用一个名为where子句的条件句来选择所需的记录,模糊查询使用where,如果没有%字符,LIKE子句与where子句的等号是一样的。

下面的代码块具有select命令的通用SQL语法,以及用于从MySQL表获取数据的like子句。

select field1, field2,...fieldN tn1, tn2...
where field1 like condition1 [AND [OR]] filed2 = 'somevalue'
  • 可以使用where子句指定任何条件。
  • 可以使用like子句和where子句。
  • 你可以用LIKE子句来代替等号。
  • 当LIKE与%符号一起使用时,它将像元字符搜索一样工作。
  • 可以使用AND或or操作符指定多个条件。
  • where……like子句可以与update或delete共同使用。

3、like子句的正则表达式

你已经看到MySQL的like…%匹配模式,MySQL支持另一种基于正则表达式和REGEXP操作符的模式匹配操作。

模式 模式匹配
^ 字符串的开始
$ 字符串结束
. 任意单个字符
[…] 方括号中列出的任何字符
[^…] 不在方括号中列出的任何字符
p1|p2|p3 变更申请表;匹配p1、p2或p3的任何模式
* 前一个元素的零或多个
+ 前一个元素的一个或多个实例
{n} 前一个元素的n个实例
{m,n} 前一个元素的m到n个实例

4、NULL值

MySQL提供了三个操作符将字段或列值与NULL进行比较:

  • is NULL – 字段为空返回true。
  • is not NULL – 字段不为空返回true。
  • <=> – 这个操作符比较值包括比较NULL

不能使用= NULL或!= NULL在列中查找空值,有时甚至NULL = NULL也会失败,若要查找是否为空的列,请使用is NULL或is not NULL。

5、order by排序子句

这里可以通过添加order by子句对结果集进行排序,该子句指定要排序的列的名称。

下面的代码块是select命令的通用SQL语法和order by子句,用于对MySQL表中的数据进行排序。

select field1, field2,...fieldN tn1, tn2...
order by field1, [field2...] [ASC [DESC]]
  • 对返回结果进行排序。
  • 可以对多个字段的结果进行排序。
  • ASC或DESC表现进行升序或降序排序,默认升序。
  • 在通常情况下你可以用where…like子句放在一个条件句中。

三、MySQL连接查询

在大多数实际的MySQL使用中常常需要在一个查询中从多个表获取数据,我们可以在单个SQL查询中使用多个表。MySQL中的连接操作指的是将两个或多个表连接成一个表,我们还将看到一个左连接的示例,它与简单的MySQL连接不同。

1、union连接

union连接有union语句和union all语句,union语句用于将多个select的结果集合并为一个结果,union语句处理的是相同列的数据,而且不包含重复数据。union all语句也就将多个select结果集的相同列合并,但是包含重复数据,union连接使用语法如下:

select exp1, epx2, ... epx_n (字段1)
from tables
[where conditions]
union [all | DISTINCT]
select exp1, epx2, ... epx_n (和字段1相同)
from tables
[where conditions];

2、内连接inner join

inner join内连接用于获取两个表中自动匹配的记录,内连接求差集,和上面join的使用是类似的,但是这里合并两个表使用的条件关键字是on(包括下面介绍的左连接和右连接),

select exp1, epx2, ... epx_n 
from table1
inner join table2
[on conditions];

3、左连接left join

左连接求所有表中全部包含左边表数据的结果集,该查询包含左表所有数据,连接进来的表按照on条件的要求进行合并,使用语法和上面的内连接类似,table1是左边的表:

select exp1, epx2, ... epx_n 
from table1
left join table2
[on conditions];

4、右连接right join

右连接查询和左连接查询相反:结果集包含所有右表的数据,使用语法如下,table2为右边表:

select exp1, epx2, ... epx_n 
from table1
right join table2
[on conditions];
赞(0)
未经允许不得转载:srcmini » mysql基本增删改查、所有查询子句以及连接查询完全解读

评论 抢沙发

评论前必须登录!