数据库实际查询操作回顾(四)
回顾之前学习数据库的相关操作,复习时顺便记录下,以便以后自己可以再次查看!!!
/*
创建计算字段
*/
(1)select Concat (vend_name, ' (', vend_country,')')
from vendors
order by vend_name;//Concat()拼接串,即把多个串连接起来形成一个较长的串。 Concat()需要一个或多个指定的串,各个串之间用逗号分隔。
(2)select Concat (RTrim(vend_name), ' (',RTrim(vend_country),')')
from vendors
order by vend_name;//RTrim()函数去掉值右边的所有空格。通过使用RTrim(),各个列都进行了整理。
/*
MySQL除了支持RTrim()(正如刚才所见,它去掉 串右边的空格),还支持LTrim()(去掉串左边的空格)以及 Trim()(去掉串左右两边的空格)。
*/
(3) select concat(RTrim(vend_name),'(',RTrim(vend_country),')') as
vend_title
from vendors
order by vend_name;//利用别名,把要输出的列名设置为vend_titlt
(4) select prod_id, quantity, item_price
from orderitems
where order_num = 20005;//检索出了订单号为20005的所有物品,并且显示订购数量,价格,编号
quantity,
item_price,
quantity*item_price as expanded_price
from orderitems
where order_num = 20005;//显示的expanded_price是quantity*item_price(单价乘以订购数量),也利用了别名
/*
使用数据处理函数
*/
(6) select vend_name, Upper(vend_name) as vend_upcase
from vendors
order by vend_name;//Upper()函数就是将文本转换为大写,下面显示的第一列是vendors表中存储的值,而第二列就是将第一列的所有文本转换为大写 /*
常用的文本处理函数 :
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX值
SubString() 返回子串的字符
Upper() 将串转换为大写
*/
(7) select cust_name, cust_contact
from customers
where Soundex(cust_contact) = Soundex('Y Lie');//,WHERE子句使用Soundex()函数来转换cust_ contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和 Y.Lie发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤 出了所需的数据。
/*
常用日期和时间处理函数 :
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回一个格式化的日期或时间串
Day() 返回一个日期的天数部分
DayOfWeek() 对于一个日期,返回对应的星期几
Hour() 返回一个时间的小时部分
Minute() 返回一个时间的分钟部分
Month() 返回一个日期的月份部分
Now() 返回当前日期和时间
Second() 返回一个时间的秒部分
Time() 返回一个日期时间的时间部分
Year() 返回一个日期的年份部分
*/
(8)select cust_id, order_num
from orders
where order_date = '2005-09-01';//检索出一个订单记录,该订单记录 的order_date为2005-09-01。
(9)select cust_id, order_num
from orders
where Date(order_date) = '2005-09-01';// 如果你想要的仅是日期, 则使用Date()是一个良好的习惯,即使你知道相应的列只包 含日期也是如此。。当然,也存在一个Time() 函数,在你只想要时间时应该使用它。 (10) select cust_id, order_num
from orders
where Date(order_date) between '2005-09-01'and '2005-09-30';//,BETWEEN操作符用来把2005-09-01和2005-09-30定义为 一个要匹配的日期范围
(11) select cust_id, order_num
from orders
where Year(order_date) = 2005 and Month(order_date) = 9;//Year()是一个从日期(或日期时间)中返回年份的函数。类似, Month()从日期中返回月份。因此,WHERE Year(order_date) = 2005 AND Month(order_date) = 9检索出order_date为2005年9月的 所有行。
/*
常用数值处理函数 :
Abs() 返回一个数的绝对值
Cos() 返回一个角度的余弦
Exp() 返回一个数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回一个角度的正弦
Sqrt() 返回一个数的平方根
Tan() 返回一个角度的正切
*/
/*
汇总数据
*/
/*
汇总数据
*/
/*
SQL聚集函数 :
AVG() 返回某列的平均值
COUNT() 返回某列的行数
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和
*/
(12) select avg(prod_price) as avg_price
from products;//使用了avg聚集函数,返回了prod_price的平均值
/*
COUNT()函数有两种使用方式。
1.使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空 值(NULL)还是非空值。
2.使用COUNT(column)对特定列中具有值的行进行计数,忽略 NULL值。
*/
(13)select count(*) as num_cust
from customers;//利用COUNT(*)对所有行计数,不管行中各列有 什么值。计数值在num_cust中返回。
(14) select count(cust_email) as num_cust
from customers;//使用COUNT(cust_email)对cust_email列 中有值的行进行计数。在此例子中,cust_email的计数为3(表 示5个客户中只有3个客户有电子邮件地址)。
/*
注意:
如果指定列名,则指定列的值为空的行被COUNT() 函数忽略,但如果COUNT()函数中用的是星号(*),则不忽 略。
*/
(15)select max(prod_price) as max_price
from products;//max()函数返回products表中的最贵物品的价格
/*
注意:
在用于文本数据时,如果数 据按相应的列排序,则MAX()返回最后一行。
MAX()函数忽略列值为NULL的行。
*/
(16)select min(prod_price) as min_price
from products;//使用min函数返回指定列的最小值
/*
注意:
对非数值数据使用MIN() MIN()函数与MAX()函数类似, MySQL允许将它用来返回任意列中的最小值,包括返回文本 列中的最小值。在用于文本数据时,如果数据按相应的列排序, 则MIN()返回最前面的行。
NULL值 MIN()函数忽略列值为NULL的行。
*/
(17)select sum(quantity) as items_ordered
from orderitems
where order_num = 20005;//函数SUM(quantity)返回订单中所有物品数量之和,WHERE子 句保证只统计某个物品订单中的物品。
(18)select sum(item_price*quantity) as total_price
from orderitems
where order_num = 20005;//函数SUM(item_price*quantity)返回订单中所有物品价钱 之和,WHERE子句同样保证只统计某个物品订单中的物品。
(19)select avg(distinct prod_price) as avg_price
from products
where vend_id = 1003;//在使用了DISTINCT后,此例子中的avg_price比 较高,因为有多个物品具有相同的较低价格。排除它们提升了 平均价格。distinct排除相同的值
/*
注意:
如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT 不能用于COUNT(*),因此不允许使用COUNT(DISTINCT), 否则会产生错误。类似地,DISTINCT必须使用列名,不能用 于计算或表达式。
*/
(20)select count(*) as num_items,
min(prod_price) as price_min,
max(prod_price) as price_max,
avg(prod_price) as price_avg
from products;//返回4个值 (products表中物品的数目,产品价格的最高、最低以及平均值)。
数据库实际查询操作之相关数据库代码(MySQL必知必会数据库代码)