SQL读书笔记(三)
2016-03-02 21:21
302 查看
上一篇笔记主要是记下了SELECT的用法,还有一些过滤的方法
这一篇记下一些计算字段,非常有用,主要是用在我们需要改变查询结果格式,一下用到的是MySQL的语法,笔记大部分还是来自书本原话。。
1、拼接字段
拼接(concatenate)将值联结到一起(将一个值附加到另一个值)构成单个值
mysql 拼接字符函数 concat
mysql 的concat函数可以实现数据库中字段的自由拼接 并且保存成临时字段如何值中存在null也输出
select id,username,concat( id, ‘-’ , username) as truename from pri_admins;
这样我们输出的时候格式就会变成 truename输出
AS是别名使用,在下面有解释
concat_ws函数
concat(separator,str1,str2,…) 代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
如果参数中存在NULL,则会被忽略:
select concat_ws(‘:’,’1’,’2’,NULL,NULL,NULL,’3’) from test ;
TRIM函数
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
TRIM([remstr FROM] str)
返回字符串str,删除所有 remstr 前缀或后缀。如果没有符 BOTH, LEADING, 或TRAILING给出,假定则是BOTH(默认的)。remstr为可任选的,如果未指定,空格被删除。
默认删除空格
mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxbarxxx’);
barxxx
2、使用别名AS,这个非常重要,因为我们可能需要我们自己定义输出的格式,就可以用这个
从前面的输出可以看到,SELECT语句可以很好地拼接地址字段。但是,这个新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如 果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户端应用中,因为客户端没有办法引用它。 为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。请看下面的SELECT语句
SELECT Concat(vend_name, ’ (‘, vend_country, ‘)’) AS vend_title FROM Vendors ORDER BY vend_name;
Bears R Us (USA)
Doll House Inc. (USA)
SELECT语句本身与以前使用的相同,只不过这里的计算字段之后跟了文本AS vend_title。它指示SQL创建一个包含指定计算结果的名 为vend_title的计算字段。从输出可以看到,结果与以前的相同,但现在列名为vend_title,任何客户端应用都可以按名称引用这个列,就像它 是一个实际的表列一样。
3、执行算术计算
计算字段的另一常见用途是对检索出的数据进行算术计算。举个例子,Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物 品。下面的SQL语句检索订单号20008中的所有物品:
SELECT prod_id, quantity, item_price FROM OrderItems WHERE order_num = 20008;
prod_id quantity item_price
———- ———– ——————–
RGAN01 5 4.9900
BR03 5 11.9900
BNBG01 10 3.4900
BNBG02 10 3.4900
BNBG03 10 3.4900
item_price列包含订单中每项物品的单价。如下汇总物品的价格(单价乘以订购数量):
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price FROM OrderItems WHERE order_num = 20008;
prod_id quantity item_price expanded_price
———- ———– ———— —————-
RGAN01 5 4.9900 24.9500
BR03 5 11.9900 59.9500
BNBG01 10 3.4900 34.9000
BNBG02 10 3.4900 34.9000
BNBG03 10 3.4900 34.9000
输出中显示的expanded_price列是一个计算字段,此计算为quantity*item_price。客户端应用现在可以使用这个新计算列,就像使用其他列一 样。
SQL支持表7-1中列出的基本算术操作符。此外,圆括号可用来区分优先顺序。
操 作 符
+ 加
- 减
* 乘
/ 除
提示:如何测试计算 SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问 和处理表达式,例如SELECT 3 * 2;将返回6,SELECT Trim(’ abc ‘);将返回abc,SELECT Now();使用Now()函数返回当前日期和时间。现在 你明白了,可以根据需要使用SELECT语句进行检验。
这一篇记下一些计算字段,非常有用,主要是用在我们需要改变查询结果格式,一下用到的是MySQL的语法,笔记大部分还是来自书本原话。。
1、拼接字段
拼接(concatenate)将值联结到一起(将一个值附加到另一个值)构成单个值
mysql 拼接字符函数 concat
mysql 的concat函数可以实现数据库中字段的自由拼接 并且保存成临时字段如何值中存在null也输出
select id,username,concat( id, ‘-’ , username) as truename from pri_admins;
这样我们输出的时候格式就会变成 truename输出
AS是别名使用,在下面有解释
concat_ws函数
concat(separator,str1,str2,…) 代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
如果参数中存在NULL,则会被忽略:
select concat_ws(‘:’,’1’,’2’,NULL,NULL,NULL,’3’) from test ;
TRIM函数
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
TRIM([remstr FROM] str)
返回字符串str,删除所有 remstr 前缀或后缀。如果没有符 BOTH, LEADING, 或TRAILING给出,假定则是BOTH(默认的)。remstr为可任选的,如果未指定,空格被删除。
默认删除空格
mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxbarxxx’);
barxxx
2、使用别名AS,这个非常重要,因为我们可能需要我们自己定义输出的格式,就可以用这个
从前面的输出可以看到,SELECT语句可以很好地拼接地址字段。但是,这个新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如 果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户端应用中,因为客户端没有办法引用它。 为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值的替换名。别名用AS关键字赋予。请看下面的SELECT语句
SELECT Concat(vend_name, ’ (‘, vend_country, ‘)’) AS vend_title FROM Vendors ORDER BY vend_name;
输出 vend_title
Bear Emporium (USA)Bears R Us (USA)
Doll House Inc. (USA)
SELECT语句本身与以前使用的相同,只不过这里的计算字段之后跟了文本AS vend_title。它指示SQL创建一个包含指定计算结果的名 为vend_title的计算字段。从输出可以看到,结果与以前的相同,但现在列名为vend_title,任何客户端应用都可以按名称引用这个列,就像它 是一个实际的表列一样。
3、执行算术计算
计算字段的另一常见用途是对检索出的数据进行算术计算。举个例子,Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物 品。下面的SQL语句检索订单号20008中的所有物品:
SELECT prod_id, quantity, item_price FROM OrderItems WHERE order_num = 20008;
prod_id quantity item_price
———- ———– ——————–
RGAN01 5 4.9900
BR03 5 11.9900
BNBG01 10 3.4900
BNBG02 10 3.4900
BNBG03 10 3.4900
item_price列包含订单中每项物品的单价。如下汇总物品的价格(单价乘以订购数量):
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price FROM OrderItems WHERE order_num = 20008;
prod_id quantity item_price expanded_price
———- ———– ———— —————-
RGAN01 5 4.9900 24.9500
BR03 5 11.9900 59.9500
BNBG01 10 3.4900 34.9000
BNBG02 10 3.4900 34.9000
BNBG03 10 3.4900 34.9000
输出中显示的expanded_price列是一个计算字段,此计算为quantity*item_price。客户端应用现在可以使用这个新计算列,就像使用其他列一 样。
SQL支持表7-1中列出的基本算术操作符。此外,圆括号可用来区分优先顺序。
操 作 符
+ 加
- 减
* 乘
/ 除
提示:如何测试计算 SELECT语句为测试、检验函数和计算提供了很好的方法。虽然SELECT通常用于从表中检索数据,但是省略了FROM子句后就是简单地访问 和处理表达式,例如SELECT 3 * 2;将返回6,SELECT Trim(’ abc ‘);将返回abc,SELECT Now();使用Now()函数返回当前日期和时间。现在 你明白了,可以根据需要使用SELECT语句进行检验。
相关文章推荐
- 6.redis集群
- 从Oracle数据库中查询前几个月数据时需要注意的一些问题
- sql查询所有表以及表名的模糊查询
- 数据库基本概念(二)
- SQL读书笔记(二)
- SQL学习基础知识:创造字符段
- 浅谈MySQL中优化sql语句查询常用的30种方法
- 5.redis主从高可用
- redis 数据库 缓存 (准备工作)
- sql-mode
- SQL笔记(一)
- 通过修改短信数据库方法来修改短信 (Ubuntu 环境)
- ORACLE SPATIAL介绍
- 4.redis分片
- jdbc连接oracle的方法
- jdbc连接mysql的方法
- 数据库范式
- 3.redis高并发
- SQL学习之通配符
- Innobackupex 全备数据库