数据库实际查询操作回顾(四)

回顾之前学习数据库的相关操作,复习时顺便记录下,以便以后自己可以再次查看!!!

/*

创建计算字段

*/

(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的所有物品,并且显示订购数量,价格,编号
 

 (5)select prod_id,
                    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表中物品的数目,产品价格的最高、最低以及平均值)。
 

数据库实际查询操作回顾(八)

数据库实际查询操作回顾(七)

数据库实际查询操作回顾(六)

数据库实际查询操作回顾(五)

数据库实际查询操作回顾(三)

数据库实际查询操作回顾(二)

数据库实际查询操作回顾(一)


猜你喜欢

转载自blog.csdn.net/mr_police/article/details/80800288