MySQL 基础知识2 (字段的处理)
一、字段拼接处理
1. 通过CONCAT()函数将多个字段进行拼接, 使用RTRIM()函数删除数据右侧多余空格
说明:RTRIM()函数表示消除指定字段的右边空格,LTRIM()函数则表示消除指定字段的左边空格
SELECT CONCAT(vend_id,': ',vend_name,'(', RTRIM(vend_country), ')') FROM vendors ORDER BY vend_name;
2. 给予拼接的字段取别名 (AS 自定义别名 或 as 自定义别名 两者均可,不区分大小写 )
SELECT CONCAT(RTRIM(vend_name), '(', RTRIM(vend_country), ')') AS vend_title FROM vendors ORDER BY vend_name;
3. 执行字段算术计算 (字段quantity 与 字段item_price相乘后的结果,用别名expanded_price 接收显示结果)
SELECT prod_id, quantity, item_price, quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005
4. 文本转换函数:UPPER()表示将指定字段转换成大写,LOWER()表示将指定字段转换成小写
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name; SELECT vend_name, LOWER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;
5. 文本截取函数:LEFT(str,len)表示返回字段str最左侧的len个数字符串,RIGHT(str,len)表示返回字段str最左侧的len个数字符串
SELECT vend_name, LEFT(vend_name, 3) FROM vendors SELECT vend_name, RIGHT(vend_name, 3) FROM vendors
6. 文本声译函数:SOUNDEX(str)表示将任何文本串转换为描述其语音表示的字母数字模式的算法
SELECT cust_name, cust_contact FROM customers WHERE cust_contact = 'Y. Lie' -- 返回结果为空 SELECT cust_name, cust_contact FROM customers WHERE SOUNDEX(cust_contact) = SOUNDEX('Y. Lie') -- 返回两条类似结果
7. 日期时间函数1:查询指定日期(仅提取指定日期)
SELECT cust_id, order_num FROM orders WHERE Date(order_date) ='2005-09-01'
8. 日期时间函数2:查询指定时间(仅提取指定时间)
SELECT cust_id, order_num FROM orders WHERE TIME(order_date) ='00:00:00'
9. 日期时间函数3:查询指定日期范围
SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30'
日期时间函数4:查询指定日期范围(无需记住每月天数或不需要担心平闰年2月) YEAR(order_date)表示从日期中返回年份的函数, MONTH(order_date)表示从日期函数中返回月份 SELECT cust_id, order_num FROM orders WHERE YEAR(order_date) = 2005 AND MONTH(order_date) = 9
数值处理函数1:ABS(X)表示绝对值 COS(X)表示一个角度的余弦 EXP(X)表示返回一个数的指数值 MOD(N,M)返回除操作的余数 SELECT ABS(cust_id) FROM orders 数值处理函数2:PI()返回圆周率 RAND()返回一个随机数 SIN(X)返回一个角度的正弦 SQRT(X)返回一个属的平方根 SELECT PI() AS 圆周率,RAND() AS 随机数, SIN(90) AS 正弦值, SQRT(36) AS 平方根 FROM orders
二、组合查询
1. 情形一:在单个查询中从不同的表返回类似结构的数据
2. 情形二:对单个表执行多个查询,按单个查询返回数据
并查询(或复合查询):可用UNION操作符来组合数条SELECT查询语句, 将它们的结果组合成单个结果集 示例:查询指定价格范围的指定商品的相关信息 SELECT vend_id, prod_name, prod_price FROM products WHERE prod_price<=5 SELECT vend_id, prod_name, prod_price FROM products WHERE vend_id IN ('1001','1002') UNION查询方式:类似于上述两条查询语句的合并,UNION 可以自动去重 SELECT vend_id, prod_name, prod_price FROM products WHERE prod_price<=5 UNION SELECT vend_id, prod_name, prod_price FROM products WHERE vend_id IN ('1001','1002') UNION All 包含重复项查询 SELECT vend_id, prod_name, prod_price FROM products WHERE prod_price<=5 ORDER BY UNION ALL SELECT vend_id, prod_name, prod_price FROM products WHERE vend_id IN ('1001','1002')
3. 复合查询结果排序:在使用UNION查询时,只能使用一条ORDER BY子句, 并且出现在最后一条SELECT查询语句之后
说明:尽管ORDER BY子句放在最后一条SELECT查询语句之后, 但实际上MySQL将使用它来排序所有SELECT语句返回的结果
SELECT vend_id, prod_name, prod_price FROM products WHERE prod_price<=5 UNION SELECT vend_id, prod_name, prod_price FROM products WHERE vend_id IN ('1001','1002') ORDER BY vend_id, prod_price
网站:www.codeboy.top
公众号:橙汁就是奥润几

浙公网安备 33010602011771号