Python 学习笔记-第22讲:MySQL常用函数

一、常用函数

1. 聚合函数

函数名

功能

AVG()

返回某字段的平均值

COUNT()

返回某字段的行数

MAX()

返回某字段的最大值

MIN()

返回某字段的最小值

SUM()

返回某字段的和

2. 字符串函数

函数名

功能

示例

CONCAT(str1,

       str1...strn)

字符串连接

SELECT    CONCAT('My','S','QL');

返回:MySQL

INSERT(str,

pos,len,

newstr)

字符串替换

SELECT INSERT(

    '这是SQL Server数据库',

    3,10,'MySQL');

返回:这是MySQL数据库

LOWER(str)

将字符串转为小写

SELECT LOWER('MySQL');

返回:mysql

UPPER(str)

将字符串转为大写

SELECT UPPER('MySQL');

 返回:MYSQL

SUBSTRING

  (str,num,len)

字符串截取

SELECT SUBSTRING(

    'JavaMySQLOracle',5,5);

返回:MySQL

3. 日期时间函数

函数名

功能

示例

CURDATE()

获取当前日期

SELECT CURDATE();

返回:2016-08-08

CURTIME()

获取当前时间

SELECT CURTIME();

返回:19:19:26

NOW()

获取当前日期和时间

SELECT NOW();

返回:2016-08-08 19:19:26

WEEK(date)

返回日期date为一年中的第几周

SELECT WEEK(NOW());

返回:26

YEAR(date)

返回日期date的年份

SELECT YEAR(NOW());

返回:2016

HOUR(time)

返回时间time的小时值

SELECT HOUR(NOW());

返回:9

MINUTE(time)

返回时间time的分钟值

SELECT MINUTE(NOW());

返回:43

DATEDIFF(date1,date2)

返回日期参数date1和date2之间相隔的天数

SELECT DATEDIFF(NOW(),

     '2008-8-8');

返回:2881      

ADDDATE(date,n)

计算日期参数date加上n天后的日期

SELECT ADDDATE(NOW(),5);

返回:2016-09-02  09:37:07 

4. 数学函数

函数名

功能

示例

CEIL(x)

返回大于或等于数值x的最小整数

SELECT CEIL(2.3)

返回:3

FLOOR(x)

返回小于或等于数值x的最大整数

SELECT FLOOR(2.3)

返回:2

RAND()

返回0~1间的随机数

SELECT RAND()

返回:0.5525468583708134

 

二、MySQL 语句(续)

1. ORDER BY子句

ORDER BY子句实现按一定顺序显示查询结果

示例:

把成绩都降低10%后加5分,再查询及格成绩,并按照成绩从高到低排序

SELECT `studentNo` AS 学生编号,(studentResult*0.9+5 ) AS 综合成绩

FROM `result`

WHERE (`studentResult`*0.9+5) >=60

ORDER BY studentResult DESC;

 

2. LIMIT子句:用于限制结果集

SELECT  <字段名列表>

FROM  <表名或视图>

[WHERE  <查询条件>]

[GROUP BY <分组的字段名>]

[ORDER BY  <排序的列名>[ASC 或 DESC]]

[LIMIT [位置偏移量,]行数];

示例:

查询所有年级编号为1的学员信息,按学号升序排序

显示前4条记录

每页4条,显示第2页,即从第5条记录开始显示4条数据

SELECT `studentNo`,`studentName`,`phone`,`address`,`bornDate`

FROM `student`

WHERE `gradeId` = 1

ORDER BY studentNo

LIMIT 4;

3. 子查询

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询

子查询在WHERE语句中的一般用法

SELECT … FROM 表1 WHERE 字段1  比较运算符(子查询)

注意:将子查询和比较运算符联合使用,必须保证子查询返回的值不能多于一个

示例:

SELECT `studentNo`,`studentName`,`sex`,`bornDate`,`address`

 FROM `student`

 WHERE `bornDate` >

(SELECT `bornDate` FROM `student` WHERE `studentName`='李斯文');

 

4. IN子查询

常用IN替换等于(=)的子查询

IN后面的子查询可以返回多条记录

示例:查询“Logic Java”课程考试成绩为60分的学生名单

SELECT `studentName` FROM `student`

WHERE `studentNo` IN(

    SELECT `studentNo` FROM `result`

    WHERE `subjectNo` =  (

        SELECT `subjectNo` FROM `subject`

        WHERE `subjectName`='Logic Java'

    )AND `studentResult` = 60 

);

 

示例:查询参加“Logic Java”课程最近一次考试的在读学生名单

SELECT `studentNo`, `studentName` FROM `student`

WHERE `studentNo IN (

  SELECT `studentNo` FROM `result`

  WHERE `subjectNo` IN (

      SELECT `subjectNo` FROM `subject`

      WHERE `subjectName`=' Logic Java'

   ) AND `examDate` = (

        SELECT MAX(`examDate`) FROM `result`

        WHERE `subjectNo` = (

             SELECT `subjectNo` FROM `subject`

             WHERE `subjectName`='Logic Java ' 

        )

   )

);

 

5. NOT IN子查询

查询未参加“Logic Java”课程最近一次考试的在读学生名单

SELECT `studentNo`, `studentName` FROM `student` WHERE `studentNo`

NOT IN(

  SELECT `studentNo` FROM `result`

  WHERE `subjectNo` = (     

      SELECT `subjectNo` FROM `subject`

      WHERE `subjectName`='Logic Java'

   ) AND `examDate` = (       

        SELECT MAX(`examDate`) FROM `result`  WHERE `subjectNo` = (  

             SELECT `subjectNo` FROM `subject`

             WHERE `subjectName`='Logic Java')

   )

)……

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值