日期:2014-05-16  浏览次数:20788 次

MySQL第三课!

? 昨天上了mysql第三课,感觉有点小难,不过因为我提前看了一本书-----mysql必知必会,所以都能理解。昨天主要讲了1.函数(1.文本处理函数2.日期时间处理函数3. 聚合函数) ? 2.分组查询 ?3.查询语句顺序 ?4.子查询

?

?

1.文本处理函数?

left() ?返回左边指定长度的字符 ? ? ??SELECT prod_name,LEFT(prod_name,2) FROM products;//返回prod_name左边的两个字符

right() ?返回右边指定长度的字符 ?,不解释

LTrim() ?去掉字符串左边的空格 ? ? ??SELECT prod_name,LTRIM(prod_name) FROM products

RTrim() ?去掉字符串右边的空格 ?不解释

Trim() ?去掉字符串两边的空格

Upper() ?将字符串转换为大写 ??lower() ? 将字符串转换为小写

?

?

2.日期时间处理函数

curDate()返回当前日期

curTime()返回当前时间

now()返回当前日期和时间

date()返回日期时间的的日期部分

time()返回日期时间的时间部分

day()返回日期的天数部分

dayofweek()返回一个日期对应星期数

hour()返回时间的小时部分

minute()返回时间的分钟部分

month()返回日期的月份部分

second()返回时间的秒部分

year()返回日期的年份部分

datediff()计算两个日期之差 ? ??SELECT??datediff('1991-3-11','2001-2-8') ?后边的时间减前边的时间,返回天数

addDate()添加一个日期(天数) SELECT ADDDATE('1985-02-23',10000) ?返回1985-02-23加10000后的日期

?

比如 ?'2001-9-13 ?13:20:45' ? ? 其中2001-9-13是日期 ? ??13:20:45是时间

?

?

3.聚合函数

MAX:获取某列的最大值

MIN:获取某列的最小值

AVG:获取某列的平均值

COUNT:获取某列的行数

SUM:获取某列的和

?

没什么可说的,很简单,其中聚合函数都忽略null行

?

?

4.分组查询

?

获取每个供应商提供的产品数量 ??SELECT vend_id,COUNT(*) FROM products GROUP BY vend_id

获取提供产品数量大于2的供应商 ?

SELECT vend_id,COUNT(*) FROM products GROUP BY vend_id HAVING COUNT(*) > 2

HAVING?用于GROUP BY的过滤

WHERE用于分组前的过滤

?

?

5.查询语句顺序

顺序为

SELECT

FROM

WHERE

GROUP BY

HAVING

ORDER BY

LIMIT

?

6.子查询(子查询指的是嵌套在查询中的查询)

就是把多个普通查询集合在一起,互相带入

?

获取订购商品编号为TNT2的客户名 ??

SELECT cust_name FROM customers WHERE cust_id IN (SELECT cust_id FROM orders WHERE order_num IN(SELECT order_num FROM orderitems WHERE prod_id = "TNT2"));

?

子查询不仅可以用于WHERE子句中,而且可以用于SELECT子句中

获取每个客户下的订单数量:

SELECT cust_id,cust_name,(SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) FROM customers

?

子查询实质就是带入,类似于数学上的推导,知道一个条件,如何求答案。

?