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

 

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

 

你可能感兴趣的:(mysql)