5章 排序检索数据
排序数据
子句的概念(clause) SQL语句由子句够成, 有些子句是必需的(from子句),有的是可选的(order by)。 子句由一个关键字和提供的数据组成
order by:
mysql> select prod_id, prod_price,prod_name from products order by prod_price,prod_name; //默认为升序排序
+---------+------------+----------------+
| prod_id | prod_price | prod_name |
+---------+------------+----------------+
| FC | 2.50 | Carrots |
| TNT1 | 2.50 | TNT (1 stick) |
| FU1 | 3.42 | Fuses |
| SLING | 4.49 | Sling |
| ANV01 | 5.99 | .5 ton anvil |
| OL1 | 8.99 | Oil can |
| ANV02 | 9.99 | 1 ton anvil |
| FB | 10.00 | Bird seed |
| TNT2 | 10.00 | TNT (5 sticks) |
| DTNTR | 13.00 | Detonator |
| ANV03 | 14.99 | 2 ton anvil |
| JP1000 | 35.00 | JetPack 1000 |
| SAFE | 50.00 | Safe |
| JP2000 | 55.00 | JetPack 2000 |
+---------+------------+----------------+
仅在多个行具有相同的prod_price值时才对产品按prod_name进行排序。如果prod_price列中所有的值都是唯一的,则不会按prod_name排序
指定排序方向
mysql> select prod_id, prod_price,prod_name from products order by prod_price desc; //desc 降序排序
+---------+------------+----------------+
| prod_id | prod_price | prod_name |
| JP2000 | 55.00 | JetPack 2000 |
| SAFE | 50.00 | Safe |
| JP1000 | 35.00 | JetPack 1000 |
| ANV03 | 14.99 | 2 ton anvil |
| DTNTR | 13.00 | Detonator |
| FB | 10.00 | Bird seed |
| TNT2 | 10.00 | TNT (5 sticks) |
| ANV02 | 9.99 | 1 ton anvil |
| OL1 | 8.99 | Oil can |
| ANV01 | 5.99 | .5 ton anvil |
| SLING | 4.49 | Sling |
| FU1 | 3.42 | Fuses |
| FC | 2.50 | Carrots |
| TNT1 | 2.50 | TNT (1 stick) |
+---------+------------+----------------+
//DESC关键字只应用到直接位于其前面的列名:
mysql> select prod_id, prod_price,prod_name from products order by prod_price desc,prod_name;
ORDER BY和LIMIT的组合,找出列中最高和最低值
mysql> select prod_id, prod_price,prod_name from products order by prod_price desc limit 1;
+---------+------------+--------------+
| prod_id | prod_price | prod_name |
+---------+------------+--------------+
| JP2000 | 55.00 | JetPack 2000 |
+---------+------------+--------------+
注:ORDER BY子句位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY之后
6章 过滤数据
使用where子句指定搜索条件(search criteria)
mysql> select prod_name,prod_price from products where prod_price = 2.50;
+---------------+------------+
| prod_name | prod_price |
+---------------+------------+
| Carrots | 2.50 |
| TNT (1 stick) | 2.50 |
+---------------+------------+
mysql> select prod_name,prod_price from products where prod_price >= 20 order by prod_price desc;
+--------------+------------+
| prod_name | prod_price |
+--------------+------------+
| JetPack 2000 | 55.00 |
| Safe | 50.00 |
| JetPack 1000 | 35.00 |
+--------------+------------+
WHERE子句操作符
+--------------------------------------+
| 操 作 符 | 说 明
+-------------+------------------------+
| = | 等于
| <> | 不等于
| != | 不等于
| < | 小于
| <= | 小于等于
| > | 大于
| >= | 大于等于
| BETWEEN | 在指定的两个值之间
+-------------+------------------------+
检查单个值
mysql> select prod_name,prod_price from products where prod_name = "fuses"; //MySQL在执行匹配时默认不区分大小写
+-----------+------------+
| prod_name | prod_price |
+-----------+------------+
| Fuses | 3.42 |
+-----------+------------+
不匹配检查 不等于<>
mysql> select vend_id, prod_name,prod_price from products where vend_id <>1003;
+---------+--------------+------------+
| vend_id | prod_name | prod_price |
+---------+--------------+------------+
| 1001 | .5 ton anvil | 5.99 |
| 1001 | 1 ton anvil | 9.99 |
| 1001 | 2 ton anvil | 14.99 |
| 1002 | Fuses | 3.42 |
| 1005 | JetPack 1000 | 35.00 |
| 1005 | JetPack 2000 | 55.00 |
| 1002 | Oil can | 8.99 |
+---------+--------------+------------+
mysql> select vend_id, prod_name,prod_price from products where vend_id <>1003 and vend_id <>1001; //and
检查值范围 between
mysql> select vend_id, prod_name,prod_price from products where prod_price between 5 and 10;
+---------+----------------+------------+
| vend_id | prod_name | prod_price |
+---------+----------------+------------+
| 1001 | .5 ton anvil | 5.99 |
| 1001 | 1 ton anvil | 9.99 |
| 1003 | Bird seed | 10.00 |
| 1002 | Oil can | 8.99 |
| 1003 | TNT (5 sticks) | 10.00 |
+---------+----------------+------------+
空值检查
mysql> select cust_id,cust_email from customers where cust_email is null;
mysql> select cust_id,cust_email from customers where cust_email is not null;
7章 数据过滤
组合WHERE子句
为了进行更强的过滤控制,MySQL允许给出多个WHERE子句,以AND子句的方式或OR子句的方式使用。
AND:
mysql> select prod_id,prod_price,prod_name from products where vend_id = 1003 and prod_price <=10;
OR:
mysql> select prod_id,prod_price,prod_name from products where vend_id = 1003 or vend_id =1002;
计算次序
mysql> select prod_id,prod_price,prod_name,vend_id from products where (vend_id = 1003 or vend_id =1002) and prod_price>10;
+---------+------------+-----------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+-----------+---------+
| DTNTR | 13.00 | Detonator | 1003 |
| SAFE | 50.00 | Safe | 1003 |
+---------+------------+-----------+---------+
SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符, 即于AND在计算次序中优先级更高,or部分要用圆括号()对操作符分组
IN操作符
圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配;
mysql> select prod_id,prod_price,prod_name from products where vend_id in (1002,1003) order by prod_name;
()内为in取合法值清单。
IN操作符优点:
--在使用长的合法选项清单时,in操作符的语法更清楚且更直观
--在使用in时,计算次序更容易管理
--in操作符一般比or操作符执行更快
--IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句 (后面会讲。)
NOT操作符
WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件
mysql> select prod_id,prod_price,vend_id from products where vend_id not in (1002,1003) order by prod_name;
8章 用通配符进行过滤
通配符(wildcard) : 用来匹配值的一部分的特殊字符
搜索模式(search pattern): 由字面值、通配符或两者组合构成的搜索条件。
LIKE操作符: 为在搜索子句中使用通配符,必须使用LIKE操作符
百分号(%)通配符 : %表示任何字符出现任意次数
搜索模式'jet%'。在执行这条子句时,将检索任意以jet起头的词
mysql> select prod_id,prod_price,prod_name,vend_id from products where prod_name LIKE 'jet%';
+---------+------------+--------------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+--------------+---------+
| JP1000 | 35.00 | JetPack 1000 | 1005 |
| JP2000 | 55.00 | JetPack 2000 | 1005 |
+---------+------------+--------------+---------+
注:区分大小写 根据MySQL的配置方式,搜索可以是区分大小写的。如果区分大小写,'jet%'与JetPack 1000将不匹配。
通配符可在搜索模式中任意位置使用,并且可以使用多个通配符。下面的例子使用两个通配符,它们位于模式的两端
mysql> select prod_id,prod_price,prod_name,vend_id from products where prod_name LIKE '%anvil%';
+---------+------------+--------------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+--------------+---------+
| ANV01 | 5.99 | .5 ton anvil | 1001 |
| ANV02 | 9.99 | 1 ton anvil | 1001 |
| ANV03 | 14.99 | 2 ton anvil | 1001 |
+---------+------------+--------------+---------+
通配符%位于中间,匹配1个\多个\0个字符
mysql> select prod_id,prod_price,prod_name,vend_id from products where prod_name LIKE 's%e'; //匹配多个字符
+---------+------------+-----------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+-----------+---------+
| SAFE | 50.00 | Safe | 1003 |
+---------+------------+-----------+---------+
mysql> select prod_id,prod_price,prod_name,vend_id from products where prod_name LIKE 'saf%e'; //匹配0个字符
+---------+------------+-----------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+-----------+---------+
| SAFE | 50.00 | Safe | 1003 |
+---------+------------+-----------+---------+
注意:
1、 注意尾空格 尾空格可能会干扰通配符匹配。解决办法,在最后再加一个% 。 更好的办法是使用函数,后面讲。
2、 注意NULL,虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。 即使是WHERE prod_name LIKE '%'也不能匹配\
用值NULL作为产品名的行
下划线(_)通配符
下划线(_)。下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符
mysql> select prod_id,prod_price,prod_name,vend_id from products where prod_name LIKE '_ ton anvil';
+---------+------------+-------------+---------+
| prod_id | prod_price | prod_name | vend_id |
+---------+------------+-------------+---------+
| ANV02 | 9.99 | 1 ton anvil | 1001 |
| ANV03 | 14.99 | 2 ton anvil | 1001 |
+---------+------------+-------------+---------+
使用通配符的技巧
- 不要过度使用通配符,如果其他操作符能达到相同的目的,应该使用其他操作符。
- 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处,把通配符置于搜索模式的开始处,搜索起来是最慢
- 仔细注意通配符的位置
9章 用正则表达式进行搜索
使用MySQL正则表达式
基本字符匹配: regexp
mysql> select * from products where prod_name regexp '1000' order by prod_name;
+---------+---------+--------------+------------+---------------------------------------+
| prod_id | vend_id | prod_name | prod_price | prod_desc |
+---------+---------+--------------+------------+---------------------------------------+
| JP1000 | 1005 | JetPack 1000 | 35.00 | JetPack 1000, intended for single use |
+---------+---------+--------------+------------+---------------------------------------+
mysql> select * 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'。
进行OR匹配
mysql> select * from products where prod_name regexp '1000|2000' order by prod_name; //|两边不能有空格
+---------+---------+--------------+------------+---------------------------------------+
| prod_id | vend_id | prod_name | prod_price | prod_desc |
+---------+---------+--------------+------------+---------------------------------------+
| JP1000 | 1005 | JetPack 1000 | 35.00 | JetPack 1000, intended for single use |
| JP2000 | 1005 | JetPack 2000 | 55.00 | JetPack 2000, multi-use |
+---------+---------+--------------+------------+---------------------------------------+
匹配几个字符之一
mysql> select prod_id, vend_id, prod_name from products where prod_name regexp '[123] Ton' order by prod_name;
mysql> select prod_id, prod_name from products where prod_name regexp '[1|2|3] Ton' order by prod_name;
+---------+---------+-------------+
| prod_id | vend_id | prod_name |
+---------+---------+-------------+ //[123]定义一组字符,它的意思是匹配1或2或3
| ANV02 | 1001 | 1 ton anvil |
| ANV03 | 1001 | 2 ton anvil |
+---------+---------+-------------+
mysql> select prod_id, vend_id, prod_name from products where prod_name regexp '1|2|3 Ton' order by prod_name;
+---------+---------+---------------+
| prod_id | vend_id | prod_name |
+---------+---------+---------------+
| ANV02 | 1001 | 1 ton anvil |
| ANV03 | 1001 | 2 ton anvil |
| JP1000 | 1005 | JetPack 1000 |
| JP2000 | 1005 | JetPack 2000 |
| TNT1 | 1003 | TNT (1 stick) |
+---------+---------+---------------+
[1|2|3] Ton 或 [123] Ton: 匹配 ‘1 ton’ 或‘2 ton’ 或‘3 ton’
1|2|3 Ton : 匹配'1'或'2'或'3 ton'
[^123] Ton : 匹配除这些字符外的任何字符。
匹配范围
匹配数字0到9: [0123456789], 为了简化这种集合,可以用-来定义一个范围, [0-9]等同于[0123456789]
同理,[a-z]匹配任意字母字符。
mysql> select prod_id, vend_id, prod_name from products where prod_name regexp '[1-5] ton' order by prod_name;
+---------+---------+--------------+
| prod_id | vend_id | prod_name |
+---------+---------+--------------+
| ANV01 | 1001 | .5 ton anvil |
| ANV02 | 1001 | 1 ton anvil |
| ANV03 | 1001 | 2 ton anvil |
+---------+---------+--------------+
匹配特殊字符
mysql> select * from vendors where vend_name regexp '\\.' order by vend_name;
+---------+--------------+-----------------+-----------+------------+----------+--------------+
| vend_id | vend_name | vend_address | vend_city | vend_state | vend_zip | vend_country |
+---------+--------------+-----------------+-----------+------------+----------+--------------+
| 1004 | Furball Inc. | 1000 5th Avenue | New York | NY | 11111 | USA |
+---------+--------------+-----------------+-----------+------------+----------+--------------+
使用转义(escaping),特殊字符包括.| []等必须转义,\\也用来引用元字符。
+-----------+-------------------+
| 元 字 符 说 明 |
+-----------+-------------------+
| \\f | 换页 |
| \\n | 换行 |
| \\r | 回车 |
| \\t | 制表 |
| \\v | 纵向制表 |
+-----------+-------------------+
匹配\ 为了匹配反斜杠(\)字符本身,需要使用\\\
匹配字符类(character class)
字符类
+--------------------------------------------------------+
类 说 明
[:alnum:] 任意字母和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同,但不包括空格
[:lower:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])
+--------------------------------------------------------+
匹配多个实例
使用元字符
重复元字符
+-------------------------------------+
元字符 说明
* 0个或多个匹配
+ 1个或多个匹配(等于{1,})
? 0个或1个匹配(等于{0,1})
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围(m不超过255)
+-------------------------------------+
举几个例子:
mysql> select prod_name from products where prod_name regexp '\\([0-9] sticks?\\)' order by prod_name;
+----------------+
| prod_name |
+----------------+
| TNT (1 stick) |
| TNT (5 sticks) |
+----------------+
[0-9]匹配任意数字(这个例子中为1和5);
s后的?使s可选因为?匹配它前面的任何字符的0次或1次出现;
\\( \\)转义()
mysql> select prod_name from products where prod_name regexp '[[:digit:]]{4}' order by prod_name;
+--------------+
| prod_name |
+--------------+
| JetPack 1000 |
| JetPack 2000 |
+--------------+
[:digit:]匹配任意数字,因而它为数字的一个集合。{4}确切地要求它前面的字符(任意数字)出现4次
所以[[:digit:]]{4}匹配连在一起的任意4位数字
mysql> select prod_name from products where prod_name regexp '[0-9][0-9][0-9][0-9]' order by prod_name;
定位符
定位元字符
+-------------------------------------+
元 字 符 说 明
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
+-------------------------------------+
举例
mysql> select prod_name from products where prod_name regexp '^[0-9\\.]' order by prod_name;
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+--------------+
^匹配串的开始。因此,^[0-9\\.]只在.或任意数字为串中第一个字符时才匹配它们。 没有^,还会检索出别的中间有数字的行
^的双重用途:
1. 在集合中(用[和]定义),用它来否定该集合 : [^123] Ton : 匹配除这些字符外的任何字符
2. 除1以外,用来指定串的开始
REGEXP和LIKE的区别:
1. LIKE匹配整个串而REGEXP匹配子串
2. 利用定位符,通过用^开始每个表达式,用$结束每个表达式
简单的正则表达式测试
可以在不使用数据库表的情况下用SELECT来测试正则表达式,返回0(没有匹配)或1(匹配),例如:
mysql> select 'hello' regexp '[0-9]';
+------------------------+
| 'hello' regexp '[0-9]' |
+------------------------+
| 0 |
+------------------------+
mysql> select 'hello' regexp '[a-z]';
+------------------------+
| 'hello' regexp '[a-z]' |
+------------------------+
| 1 |
+------------------------+
10章 创建计算字段
计算字段
字段的概念:字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。
拼接字段: 拼接(concatenate) 将值联结到一起构成单个值。在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列
注意:多数DBMS使用+或||来实现拼接,MySQL则使用Concat()函数来实现。当把SQL语句转换成MySQL语句时一定要把这个区别铭记在
举例:
mysql> select concat(vend_name,'(',vend_country,')') from vendors order by vend_name;
+----------------------------------------+
| concat(vend_name,'(',vend_country,')') |
+----------------------------------------+
| ACME(USA) |
| Anvils R us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| LT Supplies(USA) |
+----------------------------------------+
去空格
在第8章中曾提到通过删除数据右侧多余的空格来整理数据,可以使用mysql的RTrim()函数。
MySQL除了支持RTrim(),去掉串右边的空格,还支持LTrim()(去掉串左边的空格)以及Trim()(去掉串左右两边的空格)。
mysql> select concat(ltrim(vend_name), '(',ltrim(vend_country),')') from vendors order by vend_name;
+-------------------------------------------------------+
| concat(ltrim(vend_name), '(',ltrim(vend_country),')') |
+-------------------------------------------------------+
| ACME(USA) |
| Anvils R us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| Jouets Et Ours(France) //此处已经去掉左边空格 |
| LT Supplies(USA) |
+-------------------------------------------------------+
mysql> select concat(vend_name,'(',vend_country,')') from vendors order by vend_name;
+----------------------------------------+
| concat(vend_name,'(',vend_country,')') |
+----------------------------------------+
| ACME(USA) |
| Anvils R us(USA) |
| Furball Inc.(USA) |
| Jet Set(England) |
| Jouets Et Ours(France) |
| Jouets Et Ours( France) //此处未去空格 |
| LT Supplies(USA) |
+----------------------------------------+
使用别名: AS
mysql> select concat(vend_name,'(',vend_country,')') as vend_title from vendors order by vend_name;
+-------------------------+
| vend_title <--别名 | //as vend_title
+-------------------------+
| ACME(USA) |
| Anvils R us(USA) |
| Furball Inc.(USA) |
+-------------------------+
执行算术计算
mysql> select prod_id,quantity,item_price,quantity*item_price as expanded_price from orderitems
-> where order_num = 20005;
算数计算 : quantity*item_price as expanded_price
MySQL算术操作符: + - * / 加减乘除
如何测试计算
mysql> select 2*3;
+-----+
| 2*3 |
+-----+
| 6 |
+-----+
mysql> SELECT Trim( ' abc '); //左右空格全去了
+-----------------------+
| Trim( ' abc ') |
+-----------------------+
| abc |
+-----------------------+
11章 使用数据处理函数
使用函数:
1. 用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数。
2. 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数
3. 用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。
4. 返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。
文本处理函数
mysql> select vend_name,Upper(vend_name) as vend_name_uocase from vendors order by vend_name;
+----------------+------------------+
| vend_name | vend_name_uocase |
+----------------+------------------+
| ACME | ACME |
| Anvils R us | ANVILS R US |
| Furball Inc. | FURBALL INC. |
| Jet Set | JET SET |
| Jouets Et Ours | JOUETS ET OURS |
| Jouets Et Ours | JOUETS ET OURS |
| LT Supplies | LT SUPPLIES |
+----------------+------------------+
Upper()将文本转换为大写
常用的文本处理函数:
函数 说 明
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
Upper() 将串转换为大写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX值
SubString() 返回子串的字符
SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。 举例:
customers表中有一个顾客Coyote Inc.,其联系名为Y.Lee。但如果这是输入错误,此联系名实际应该是Y.Lie,怎么办?
mysql> select cust_name,cust_contact from customers where soundex(cust_contact)=soundex('Y lie');
+-------------+--------------+
| cust_name | cust_contact |
+-------------+--------------+
| Coyote Inc. | Y Lee |
+-------------+--------------+
日期和时间处理函数
常用日期和时间处理函数
+-------------------+--------------------------------------+
| 函 数 | 说 明
| AddDate() | 增加一个日期(天、周等)
| AddTime() | 增加一个时间(时、分等)
| CurDate() | 返回当前日期
| CurTime() | 返回当前时间
| Date() | 返回日期时间的日期部分
| DateDiff() | 计算两个日期之差
| Date_Add() | 高度灵活的日期运算函数
| Date_Format() | 返回一个格式化的日期或时间串
| Day() | 返回一个日期的天数部分
| DayOfWeek() | 对于一个日期,返回对应的星期几
| Hour() | 返回一个时间的小时部分
| Minute() | 返回一个时间的分钟部分
| Month() | 返回一个日期的月份部分
| Now() | 返回当前日期和时间
| Second() | 返回一个时间的秒部分
| Time() | 返回一个日期时间的时间部分
| Year() | 返回一个日期的年份部分
+-------------------+--------------------------------------+
数据经常需要用日期进行过滤 MySQL使用的日期格式必须为yyyy-mm-dd,如2017年12月6日,给出为2017-12-06
mysql> select cust_id, order_num from orders where order_date = '2005-09-01';
mysql> select cust_id, order_num from orders where date(order_date) = '2005-09-01';
+---------+-----------+
| cust_id | order_num |
+---------+-----------+
| 10001 | 20005 |
+---------+-----------+
使用date()函数,检索更可靠。 下面例子:检索出2005年9月下的所有订单:
mysql> select cust_id, order_num from orders where date(order_date) between '2005-09-01' and '2005-09-30';
或者使用下面语句:
mysql> select cust_id, order_num from orders where Year(order_date)=2005 and month(order_date)=9;
数值处理函数
常用数值处理函数
函 数 说 明
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切