上一章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属性限制返回的数量。
需要更新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子句指定任何条件。
- 可以一次删除单个表中的记录。
二、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子句一起使用,假设字段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. |
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共同使用。
你已经看到MySQL的like…%匹配模式,MySQL支持另一种基于正则表达式和REGEXP操作符的模式匹配操作。
模式 | 模式匹配 |
^ | 字符串的开始 |
$ | 字符串结束 |
. | 任意单个字符 |
[… ] | 方括号中列出的任何字符 |
[^… ] | 不在方括号中列出的任何字符 |
p1|p2|p3 | 变更申请表; 匹配p1、p2或p3的任何模式 |
* | 前一个元素的零或多个 |
+ | 前一个元素的一个或多个实例 |
{n} | 前一个元素的n个实例 |
{m,n} | 前一个元素的m到n个实例 |
MySQL提供了三个操作符将字段或列值与NULL进行比较:
- is NULL – 字段为空返回true。
- is not NULL – 字段不为空返回true。
- < => – 这个操作符比较值包括比较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子句放在一个条件句中。
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];
推荐阅读
- mysql事务操作介绍和临时表的使用
- MySQL开发教程(数据类型、数据库连接、基本数据库和表操作详解)
- MySQL基本管理介绍和在PHP中使用MySQL
- PHP Ds Stack clear()函数用法介绍
- Amazon ACMS面试体验
- 查找具有给定总和且在恒定空间中允许有负数的子数组
- PHP Ds Map capacity()函数用法示例
- PHP数组用法教程和详细指南
- CSS 不透明度/透明度使用代码实例