日期:2014-05-16 浏览次数:20788 次
? 昨天上了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
?
子查询实质就是带入,类似于数学上的推导,知道一个条件,如何求答案。
?