您好,欢迎访问一九零五行业门户网

详解mysql常用功能

mysql视频教程栏目介绍mysql常用功能。
相关免费学习推荐:mysql视频教程
一、基础部分一、使用mysql1.1、select语句1.2、排序检索数据1.3、过滤数据1.4、数据过滤1.5、用通配符进行过滤1.6、用正则表达式进行搜索1.6.1 基本字符匹配1.6.2 进行or 匹配1.6.3 匹配几个字符之一1.6.4 匹配范围1.6.5 匹配特殊字符1.6.6 匹配字符类1.6.7 匹配多个实例1.6.8 定位符1.7、创建计算字段一、使用mysql连接到mysql时不会由数据库打开,所以首先要做的就是打开一个数据库:
use user
use后面加上想要打开的数据库,如果不知道数据库的名字,使用show databases查看,使用show tables可以查看一个数据库中的表,当然也可以查看表中的列show user_id from user,它对每个字段返回一行,行中包含字段名、数据类型、是否允许null 、键信息、默认值以及其他信息(describe user是上面语句的快捷方式)
1.1、select语句为了使用select 检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
所需的列名在select 关键字之后给出,from 关键字指出从其中检索数据的表名。
要想从一个表中检索多个列,使用相同的select 语句。唯一的不同是必须在select 关键字后给出多个列名,列名之间必须以逗号分隔。
使用distinct关键字可以只检索出不同值的行,重复的不会再显示(注意: distinct 关键字应用于所有列而不仅是前置它的列)
select 语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用limit 子句。
limit 5 ,5 指示mysql返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。
1.2、排序检索数据为了明确地排序用select 语句检索出的数据,可使用order by 子句。order by 子句取一个或多个列的名字,据此对输出进行排序。
为了按多个列排序,只要指定列名,列名之间用逗号分开即可。
数据排序不限于升序排序(从a 到z )。这只是默认的排序顺序,还可以使用order by 子句以降序(从z 到a )顺序排序。为了进行降序排序,必须指定desc 关键字。(desc 关键字只应用到直接位于其前面的列名)
1.3、过滤数据本章将讲授如何使用select 语句的where 子句指定搜索条件。在select 语句中,数据根据where 子句中指定的搜索条件进行过滤。where 子句在表名(from 子句)之后给出。在同时使用order by 和where 子句时,应该让order by 位于where 之后。where子句操作符如下图所示:
1.4、数据过滤本章讲授如何组合where 子句以建立功能更强的更高级的搜索条件。我们还将学习如何使用not 和in 操作符。
and操作符计算次序高于or操作符
1.5、用通配符进行过滤本章介绍什么是通配符、如何使用通配符以及怎样使用like 操作符进行通配搜索,以便对数据进行复杂过滤。
为在搜索子句中使用通配符,必须使用like 操作符。like 指示mysql,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
最常使用的通配符是百分号(% )。在搜索串中,% 表示任何字符出现任意次数 。( 根据mysql的配置方式,搜索可以是区分大小写的。如果区分大小写)。
另一个有用的通配符是下划线(_ )。下划线的用途与% 一样,但下划线只匹配单个字符而不是多个字符。
正如所见,mysql的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。
1.不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
2.在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
3.仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
1.6、用正则表达式进行搜索1.6.1 基本字符匹配我们从一个非常简单的例子开始。下面的语句检索列prod_name 包含文本1000 的所有行:
select prod_name
from products
where prod_name regexp ‘1000’
order by prod_name;
它告诉mysql:regexp 后所跟的东西作为正则表达式(与文字正文1000 匹配的一个正则表达式)处理。
select prod_name
from products
where prod_name regexp ‘.000’
order by prod_name;
. 是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符 ,因此,1000 和2000 都匹配且返回。
mysql中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用binary 关键字,如where prod_name regexp binary ‘jetpack .000’ 。
1.6.2 进行or 匹配为搜索两个串之一(或者为这个串,或者为另一个串),使用|,如下所示:
select prod_name
from products
where prod_name regexp ‘1000|2000’
order by prod_name;
1.6.3 匹配几个字符之一如果你只想匹配特定的字符,怎么办?可通过指定一组用[和]括起来的字符来完成,如下所示:
select prod_name
from products
where prod_name regexp ‘[123] ton’
order by prod_name;
字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123] 匹配字符1 、2 或3 ,但[^123] 却匹配除这些字符外的任何东西。
1.6.4 匹配范围select prod_name
from products
where prod_name regexp ‘[1-5] ton’
order by prod_name;
1.6.5 匹配特殊字符正则表达式语言由具有特定含义的特殊字符构成。我们已经看到. 、[ ] 、| 和- 等,还有其他一些字符。请问,如果你需要匹配这些字符,应该怎么办呢?例如,如果要找出包含. 字符的值,怎样搜索?为了匹配特殊字符,必须用\\为前导。\\- 表示查找- ,\\. 表示查找. 。
select vend_namefrom vendorswhere vend_name regexp '\\.'order by vend_name;

正则表达式内具有特殊意义的所有字符都必须以这种方式转义。这包括. 、| 、[ ] 以及迄今为止使用过的其他特殊字符。
1.6.6 匹配字符类存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。为更方便工作,可以使用预定义的字符集,称为字符类 (characterclass)。
1.6.7 匹配多个实例目前为止使用的所有正则表达式都试图匹配单次出现。如果存在一个匹配,该行被检索出来,如果不存在,检索不出任何行。但有时需要对匹配的数目进行更强的控制。例如,你可能需要寻找所有的数,不管数中包含多少数字,或者你可能想寻找一个单词并且还能够适应一个尾随的s (如果存在),等等。
select prod_namefrom productswhere prod_name regexp '\\([0-9] sticks?\\)'order by prod_name;正则表达式\\([0-9]sticks?\\) 需要解说一下。\\( 匹配(,[0-9] 匹配任意数字(这个例子中为1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可选,因为? 匹配它前面的任何字符的0次或1次出现),\\) 匹配) 。没有? ,匹配stick 和sticks 会非常困难。

以下是另一个例子。这次我们打算匹配连在一起的4位数字:
select prod_namefrom productswhere prod_name regexp '[[:digit:]]{4}'order by prod_name;

1.6.8 定位符目前为止的所有例子都是匹配一个串中任意位置的文本。为了匹配特定位置的文本,需要使用下表列出的定位符。
例如,如果你想找出以一个数(包括以小数点开始的数)开始的所有产品,怎么办?简单搜索[0-9\.] (或[[:digit:]\. ])不行,因为它将在文本内任意位置查找匹配。解决办法是使用^定位符,如下所示:
select prod_namefrom productswhere prod_name regexp '^[0-9\\.]'order by prod_name;

1.7、创建计算字段存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。这就是计算字段发挥作用的所在了。与前面各章介绍过的列不同,计算字段并不实际存在于数据库表中。计算字段是运行时在select 语句内创建的。
在mysql的select 语句中,可使用concat() 函数来拼接两个列。
select concat(vend_name, ' (', vend_country, ')')from vendorsorder by vend_name;

过删除数据右侧多余的空格来整理数据,这可以使用mysql的rtrim() 函数来完成,如下所示:
select concat(rtrim(vend_name), ' (', rtrim(vend_country), ')')from vendorsorder by vend_name;

别名 (alias)是一个字段或值的替换名。别名用as 关键字赋予。请看下面的select 语句:
select concat(rtrim(vend_name), ' (', rtrim(vend_country), ')') asvend_titlefrom vendorsorder by vend_name;

一、基础部分一、使用mysql1.1、select语句1.2、排序检索数据1.3、过滤数据1.4、数据过滤1.5、用通配符进行过滤1.6、用正则表达式进行搜索1.6.1 基本字符匹配1.6.2 进行or 匹配1.6.3 匹配几个字符之一1.6.4 匹配范围1.6.5 匹配特殊字符1.6.6 匹配字符类1.6.7 匹配多个实例1.6.8 定位符1.7、创建计算字段一、使用mysql连接到mysql时不会由数据库打开,所以首先要做的就是打开一个数据库:
use user
use后面加上想要打开的数据库,如果不知道数据库的名字,使用show databases查看,使用show tables可以查看一个数据库中的表,当然也可以查看表中的列show user_id from user,它对每个字段返回一行,行中包含字段名、数据类型、是否允许null 、键信息、默认值以及其他信息(describe user是上面语句的快捷方式)
1.1、select语句为了使用select 检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。
所需的列名在select 关键字之后给出,from 关键字指出从其中检索数据的表名。
要想从一个表中检索多个列,使用相同的select 语句。唯一的不同是必须在select 关键字后给出多个列名,列名之间必须以逗号分隔。
使用distinct关键字可以只检索出不同值的行,重复的不会再显示(注意: distinct 关键字应用于所有列而不仅是前置它的列)
select 语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用limit 子句。
limit 5 ,5 指示mysql返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。
1.2、排序检索数据为了明确地排序用select 语句检索出的数据,可使用order by 子句。order by 子句取一个或多个列的名字,据此对输出进行排序。
为了按多个列排序,只要指定列名,列名之间用逗号分开即可。
数据排序不限于升序排序(从a 到z )。这只是默认的排序顺序,还可以使用order by 子句以降序(从z 到a )顺序排序。为了进行降序排序,必须指定desc 关键字。(desc 关键字只应用到直接位于其前面的列名)
1.3、过滤数据本章将讲授如何使用select 语句的where 子句指定搜索条件。在select 语句中,数据根据where 子句中指定的搜索条件进行过滤。where 子句在表名(from 子句)之后给出。在同时使用order by 和where 子句时,应该让order by 位于where 之后。where子句操作符如下图所示:
1.4、数据过滤本章讲授如何组合where 子句以建立功能更强的更高级的搜索条件。我们还将学习如何使用not 和in 操作符。
and操作符计算次序高于or操作符
1.5、用通配符进行过滤本章介绍什么是通配符、如何使用通配符以及怎样使用like 操作符进行通配搜索,以便对数据进行复杂过滤。
为在搜索子句中使用通配符,必须使用like 操作符。like 指示mysql,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
最常使用的通配符是百分号(% )。在搜索串中,% 表示任何字符出现任意次数 。( 根据mysql的配置方式,搜索可以是区分大小写的。如果区分大小写)。
另一个有用的通配符是下划线(_ )。下划线的用途与% 一样,但下划线只匹配单个字符而不是多个字符。
正如所见,mysql的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。这里给出一些使用通配符要记住的技巧。
1.不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
2.在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
3.仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
1.6、用正则表达式进行搜索1.6.1 基本字符匹配我们从一个非常简单的例子开始。下面的语句检索列prod_name 包含文本1000 的所有行:
select prod_name
from products
where prod_name regexp ‘1000’
order by prod_name;
它告诉mysql:regexp 后所跟的东西作为正则表达式(与文字正文1000 匹配的一个正则表达式)处理。
select prod_name
from products
where prod_name regexp ‘.000’
order by prod_name;
. 是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符 ,因此,1000 和2000 都匹配且返回。
mysql中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用binary 关键字,如where prod_name regexp binary ‘jetpack .000’ 。
1.6.2 进行or 匹配为搜索两个串之一(或者为这个串,或者为另一个串),使用|,如下所示:
select prod_name
from products
where prod_name regexp ‘1000|2000’
order by prod_name;
1.6.3 匹配几个字符之一如果你只想匹配特定的字符,怎么办?可通过指定一组用[和]括起来的字符来完成,如下所示:
select prod_name
from products
where prod_name regexp ‘[123] ton’
order by prod_name;
字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123] 匹配字符1 、2 或3 ,但[^123] 却匹配除这些字符外的任何东西。
1.6.4 匹配范围select prod_name
from products
where prod_name regexp ‘[1-5] ton’
order by prod_name;
1.6.5 匹配特殊字符正则表达式语言由具有特定含义的特殊字符构成。我们已经看到. 、[ ] 、| 和- 等,还有其他一些字符。请问,如果你需要匹配这些字符,应该怎么办呢?例如,如果要找出包含. 字符的值,怎样搜索?为了匹配特殊字符,必须用\\为前导。\\- 表示查找- ,\\. 表示查找. 。
select vend_namefrom vendorswhere vend_name regexp '\\.'order by vend_name;

正则表达式内具有特殊意义的所有字符都必须以这种方式转义。这包括. 、| 、[ ] 以及迄今为止使用过的其他特殊字符。
1.6.6 匹配字符类存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。为更方便工作,可以使用预定义的字符集,称为字符类 (characterclass)。
1.6.7 匹配多个实例目前为止使用的所有正则表达式都试图匹配单次出现。如果存在一个匹配,该行被检索出来,如果不存在,检索不出任何行。但有时需要对匹配的数目进行更强的控制。例如,你可能需要寻找所有的数,不管数中包含多少数字,或者你可能想寻找一个单词并且还能够适应一个尾随的s (如果存在),等等。
select prod_namefrom productswhere prod_name regexp '\\([0-9] sticks?\\)'order by prod_name;正则表达式\\([0-9]sticks?\\) 需要解说一下。\\( 匹配(,[0-9] 匹配任意数字(这个例子中为1和5),sticks? 匹配stick 和sticks (s 后的? 使s 可选,因为? 匹配它前面的任何字符的0次或1次出现),\\) 匹配) 。没有? ,匹配stick 和sticks 会非常困难。

以下是另一个例子。这次我们打算匹配连在一起的4位数字:
select prod_namefrom productswhere prod_name regexp '[[:digit:]]{4}'order by prod_name;

1.6.8 定位符目前为止的所有例子都是匹配一个串中任意位置的文本。为了匹配特定位置的文本,需要使用下表列出的定位符。
例如,如果你想找出以一个数(包括以小数点开始的数)开始的所有产品,怎么办?简单搜索[0-9\.] (或[[:digit:]\. ])不行,因为它将在文本内任意位置查找匹配。解决办法是使用^定位符,如下所示:
select prod_namefrom productswhere prod_name regexp '^[0-9\\.]'order by prod_name;

1.7、创建计算字段存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告程序中重新格式化。这就是计算字段发挥作用的所在了。与前面各章介绍过的列不同,计算字段并不实际存在于数据库表中。计算字段是运行时在select 语句内创建的。
在mysql的select 语句中,可使用concat() 函数来拼接两个列。
select concat(vend_name, ' (', vend_country, ')')from vendorsorder by vend_name;

过删除数据右侧多余的空格来整理数据,这可以使用mysql的rtrim() 函数来完成,如下所示:
select concat(rtrim(vend_name), ' (', rtrim(vend_country), ')')from vendorsorder by vend_name;

别名 (alias)是一个字段或值的替换名。别名用as 关键字赋予。请看下面的select 语句:
select concat(rtrim(vend_name), ' (', rtrim(vend_country), ')') asvend_titlefrom vendorsorder by vend_name;

以上就是详解mysql常用功能的详细内容。
其它类似信息

推荐信息