热线电话:13121318867

登录
2020-06-17 阅读量: 901
SQL语言学习 day3

MYSQL学习的第三天

一:补充:多表查询中的不等值连接

1:连接n个表时,至少要有n-1个连接条件

2:等值连接:即两个表中的关键字段是相等的关系。例:t1.key1=t2.key2,

3:不等值连接:值两个表中的关键字段是非相等的其它逻辑关系。例:t1.key1 between t2.key2 and t2.key3

二:子查询 (嵌套查询)

1:注意子查询最多嵌套32句,单一般用不上这么多,因为逻辑关系很容易乱。

2:一个select语句中包含另一个或多个完整的select语句。

3:子查询分类

• 标量子查询:返回的结果是一个数据(单行单列)

• 行子查询:返回的结果是一行(单行多列)

• 列子查询:返回的结果是一列(多行单列)

• 表子查询:返回的结果是一张表(多行多列)

注:分类不是绝对的,如可以吧一列的子查询:

4:子查询出现的位置

• 出现在select子句中:将子查询返回结果作为主查询的一个字段或者计算值(标量子查询、列子查询)

• 出现在where/having子句中:将子查询返回的结果作为主查询的条件(标量子查询、行子查询、列子查询、表子查询)

• 出现在from子句中:将子查询返回的结果作为主查询的一个表(标量子查询、行子查询、列子查询、表子查询)

注:where字句中的判断值为聚合函数时,必须用到子查询。

5:子查询操作符

三、常用函数

1:字符串函数

CONCAT(str1,str2,...) 把多个文本字符串合并成一个长字符串,最多合并255个字符串,且有一个空值则返回空值。

INSTR(str,substr) 返回子字符串substr在文本字符串str中第一次出现的位置

LEFT(str,len) 返回字符串str的左端len个字符

RIGHT(str,len) 返回字符串str的右端len个字符

MID(str,pos,len) 返回字符串str的位置pos起len个字符,len不写时,则截取pos起后的所有字符

RTRIM(str) 返回删除了右空格的字符串str

LTRIM(str) 返回删除了左空格的字符串str

TRIM(str) 返回删除了两边空格的字符串str,不能删除中间的空格,较常用

REPLACE(str,from_str,to_str) 用字符串to_str替换字符串str中的子串from_str并返回

UPPER(str) 返回大写的字符串str

LOWER(str) 返回大写的字符串str

2:数学函数

ABS(n) 返回n的绝对值

FLOOR(n) 返回不大于n的最大整数值(地板函数)

CEILING(n) 返回不小于n的最小整数值(天花板函数)

ROUND(n[,d]) 返回n的四舍五入值,保留d位小数(d的默认值为0)

3:日期时间函数

DATE(date) 返回指定日期/时间表达式的日期部分或将文本转为日期格式

WEEK(date[,mode]) 返回指定日期是一年中的第几周

YEAR(date) 返回指定日期的年份(范围在1000到9999)

MONTH(date) 返回指定日期的月份(范围在1到12)

DAY(date) 返回指定日期的日(范围在1到31)

HOUR(datetime) 返回指定时间的小时(范围在1-24)

CURDATE() 以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所处上下文是字符串或数字)

CURTIME() 以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字)

NOW() 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字 符串或数字)

DATEDIFF(expr1,expr2) 返回结束日expr1和起始日expr2之间的天数

UNIX_TIMESTAMP([date]) 返回一个unix时间戳(从'1970-01-01 00:00:00'开始的秒数,date默认值为当前时间)

FROM_UNIXTIME(unix_timestamp) 以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符 串或数字)

4:逻辑函数

IFNULL(expression, alt_value) 判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个 参数的值。

IF(expr1,expr2,expr3) 如果expr1的值为true,则返回expr2的值,如果expr1的值为false,则返回expr3的值。

CASE WHEN expr1 THEN expr2 [WHEN expr3 THEN expr4...ELSE expr5] END 如果expr1的值为true,则返回expr2的值,如果expr3的值为true,则返回expr4的值...

14.3339
2
关注作者
收藏
评论(0)

发表评论

暂无数据