一、排序#升序 SELECT * FROM emp ORDER BY sal ASC; #降序 SELECT * FROM emp ORDER BY sal DESC; #待条件如果有查询条件则增加where语句如果没有则where也不应存在 SELECT * FROM emp WHERE deptno 30 ORDER BY sal ASC; #ASC可省略 #默认即升序 SELECT * FROM emp WHERE deptno 30 ORDER BY sa1; #按字典顺序排序 SELECT * FROM emp ORDER BY ename ASC; #按时间同样可以排序 SELECT * FROM emp ORDER BY hiredate ASC; #多条件排序 SELECT * FROM emp ORDER BY deptno ASC , sal DESC; #注意条件的先后顺序 SELECT * FROM emp ORDER BY sal ASC , deptno DESC;#错误的示例三、分组关键字group by分组的目的是为统计由五个聚合函数来完成基础的统计工作。最大最小平均总和统计注意总结结果和结果明细是不能在同一条结果当中出现的额唯一例外是统计标的SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno FROM emp GROUP BY deptno;多条件分组同样需要考虑业务的先后顺序SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno job FROM emp GROUP BY deptno , job;having作用类似where只不过where是用于过滤源数据表而having适用于对结果再过滤在整合查询流程最后执行SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno job FROM emp GROUP BY deptno , job; HAVING COUNT(1) !1 AND AVG(sal) 1000;四、子查询和临时视图4.1 子查询#子查询 #对于单值的比对必须是一行一列 SELECT * FROM emp WHERE sal (SELECT sal FROM emp WHERE ename TURNER); #in子查询需要列表即一列多行 SELECT * FROM emp WHERE deptno ! 30 AND sal IN (SELECT sal FROM emp WHERE deptno 30);4.2 临时视图将一次查询的结果作为一张 “表”那么这张 “表” 就是 视图。#临时视图必须有别名 SELECT * FROM emp e , (SELECT job,sal,deptno FROM emp WHERE job MANAGER) t WHERE e.deptno t.deptno AND e.job ! MANAGER AND e.sal t.sal;五、函数5.1 MySQL 的字符串函数函数描述实例ASCII(s)返回字符串 s 的第一个字符的ASCII 码。返回 CustomerName 字段第一个字母的 ASCII 码SELECTASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;CHAR_LENGTH(s)返回字符串 s 的字符数返回字符串 RUNOOB 的字符数SELECT CHAR_LENGTH(RUNOOB) ASLengthOfString;CHARACTER_LENGTH(s)返回字符串 s 的字符数等同于 CHAR_LENGTH(s)返回字符串 RUNOOB 的字符数SELECT CHARACTER_LENGTH(RUNOOB) ASLengthOfString;CONCAT(s1,s2...sn)字符串 s1,s2 等多个字符串合并为一个字符串合并多个字符串SELECT CONCAT(SQL , Runoob , Gooogle ,Facebook) AS ConcatenatedString;CONCAT_WS(x,s1,s2...sn)同 CONCAT(s1,s2,...) 函数但是每个字符串之间要加上xx 可以是分隔符合并多个字符串并添加分隔符SELECT CONCAT_WS(-, SQL,Tutorial, is, fun!)AS ConcatenatedString;FIELD(s,s1,s2...)返回第一个字符串 s 在字符串列表(s1,s2...)中的位置返回字符串 c 在列表值中的位置SELECT FIELD(c, a, b, c,d, e);函数描述实例FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置返回字符串 c 在指定字符串中的位置SELECT FIND_IN_SET(c,a,b,c,d,e);FORMAT(x,n)函数可以将数字 x 进行格式化#,###.##, 将 x 保留到小数点后 n 位最后一位四舍五入。格式化数字 #,###.## 形式SELECT FORMAT(250500.5634, 2); -- 输出250,500.56INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串从字符串第一个位置开始的 6 个字符替换为 runoobSELECTINSERT(google.com, 1, 6, runoob); -- 输出runoob.comLOCATE(s1,s)从字符串 s 中获取 s1 的开始位置获取 b 在字符串 abc 中的位置SELECT LOCATE(st,myteststring);-- 5返回字符串 abc 中 b 的位置SELECT LOCATE(b, abc) -- 2LCASE(s)将字符串 s 的所有字母变成小写字母字符串 RUNOOB 转换为小写SELECT LCASE(RUNOOB) -- runoobLEFT(s,n)返回字符串 s 的前 n 个字符返回字符串 runoob 中的前两个字符SELECT LEFT(runoob,2) -- ruLOWER(s)将字符串 s 的所有字母变成小写字母字符串 RUNOOB 转换为小写SELECT LOWER(RUNOOB) -- runoobLPAD(s1,len,s2)在字符串 s1 的开始处填充字符串 s2使字符串长度达到len将字符串 xx 填充到 abc 字符串的开始处SELECT LPAD(abc,5,xx) --xxabcLTRIM(s)去掉字符串 s 开始处的空格去掉字符串 RUNOOB开始处的空格SELECT LTRIM( RUNOOB) ASLeftTrimmedString;-- RUNOOBMID(s,n,len)从字符串 s 的 n 位置截取长度为 len 的子字符串同SUBSTRING(s,n,len)从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECT MID(RUNOOB,2, 3) AS ExtractString; -- UNOPOSITION(s1 IN s)从字符串 s 中获取 s1 的开始位置返回字符串 abc 中 b 的位置SELECT POSITION(b in abc) -- 2REPEAT(s,n)将字符串 s 重复 n 次将字符串 runoob 重复三次SELECT REPEAT(runoob,3) --runoobrunoobrunoobREPLACE(s,s1,s2)将字符串 s2 替代字符串 s 中的字符串 s1将字符串 abc 中的字符 a 替换为字符 xSELECT REPLACE(abc,a,x)--xbcREVERSE(s)将字符串s的顺序反过来将字符串 abc 的顺序反过来SELECT REVERSE(abc) -- cbaRIGHT(s,n)返回字符串 s 的后 n 个字符返回字符串 runoob 的后两个字符SELECT RIGHT(runoob,2) -- obRPAD(s1,len,s2)在字符串 s1 的结尾处添加字符串 s2使字符串的长度达到 len将字符串 xx 填充到 abc 字符串的结尾处SELECT RPAD(abc,5,xx) --abcxxRTRIM(s)去掉字符串 s 结尾处的空格去掉字符串 RUNOOB 的末尾空格SELECT RTRIM(RUNOOB ) ASRightTrimmedString; -- RUNOOBSPACE(n)返回 n 个空格返回 10 个空格SELECT SPACE(10);STRCMP(s1,s2)比较字符串 s1 和 s2如果s1 与 s2 相等返回 0 如果s1s2 返回 1如果 s1s2 返回 -1比较字符串SELECT STRCMP(runoob, runoob); -- 0SUBSTR(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECTSUBSTR(RUNOOB, 2, 3) AS ExtractString; -- UNOSUBSTRING(s, start,length)从字符串 s 的 start 位置截取长度为 length 的子字符串等同于 SUBSTR(s, start,length)从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECTSUBSTRING(RUNOOB, 2, 3) AS ExtractString; -- UNOSUBSTRING_INDEX(s,delimiter, number)返回从字符串 s 的第 number个出现的分隔符 delimiter 之后的子串。 如果 number 是正数返回第 number 个字符左边的字符串。 如果number 是负数返回第(number 的绝对值(从右边数))个字符右边的字符串。SELECT SUBSTRING_INDEX(a*b,*,1) -- a SELECTSUBSTRING_INDEX(a*b,*,-1) -- b SELECTSUBSTRING_INDEX(SUBSTRING_INDEX(a*b*c*d*e,*,3),*,-1) --cTRIM(s)去掉字符串 s 开始和结尾处的空格去掉字符串 RUNOOB 的首尾空格SELECT TRIM( RUNOOB ) ASTrimmedString;UCASE(s)将字符串转换为大写将字符串 runoob 转换为大写SELECT UCASE(runoob); -- RUNOOBUPPER(s)将字符串转换为大写将字符串 runoob 转换为大写SELECT UPPER(runoob); -- RUNOOB5.2 MySQL 数字函数
DQL-2
一、排序#升序 SELECT * FROM emp ORDER BY sal ASC; #降序 SELECT * FROM emp ORDER BY sal DESC; #待条件如果有查询条件则增加where语句如果没有则where也不应存在 SELECT * FROM emp WHERE deptno 30 ORDER BY sal ASC; #ASC可省略 #默认即升序 SELECT * FROM emp WHERE deptno 30 ORDER BY sa1; #按字典顺序排序 SELECT * FROM emp ORDER BY ename ASC; #按时间同样可以排序 SELECT * FROM emp ORDER BY hiredate ASC; #多条件排序 SELECT * FROM emp ORDER BY deptno ASC , sal DESC; #注意条件的先后顺序 SELECT * FROM emp ORDER BY sal ASC , deptno DESC;#错误的示例三、分组关键字group by分组的目的是为统计由五个聚合函数来完成基础的统计工作。最大最小平均总和统计注意总结结果和结果明细是不能在同一条结果当中出现的额唯一例外是统计标的SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno FROM emp GROUP BY deptno;多条件分组同样需要考虑业务的先后顺序SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno job FROM emp GROUP BY deptno , job;having作用类似where只不过where是用于过滤源数据表而having适用于对结果再过滤在整合查询流程最后执行SELECT MAX(sal) MIN(sal) AVG(sal) SUM(sal) COUNT(1) deptno job FROM emp GROUP BY deptno , job; HAVING COUNT(1) !1 AND AVG(sal) 1000;四、子查询和临时视图4.1 子查询#子查询 #对于单值的比对必须是一行一列 SELECT * FROM emp WHERE sal (SELECT sal FROM emp WHERE ename TURNER); #in子查询需要列表即一列多行 SELECT * FROM emp WHERE deptno ! 30 AND sal IN (SELECT sal FROM emp WHERE deptno 30);4.2 临时视图将一次查询的结果作为一张 “表”那么这张 “表” 就是 视图。#临时视图必须有别名 SELECT * FROM emp e , (SELECT job,sal,deptno FROM emp WHERE job MANAGER) t WHERE e.deptno t.deptno AND e.job ! MANAGER AND e.sal t.sal;五、函数5.1 MySQL 的字符串函数函数描述实例ASCII(s)返回字符串 s 的第一个字符的ASCII 码。返回 CustomerName 字段第一个字母的 ASCII 码SELECTASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;CHAR_LENGTH(s)返回字符串 s 的字符数返回字符串 RUNOOB 的字符数SELECT CHAR_LENGTH(RUNOOB) ASLengthOfString;CHARACTER_LENGTH(s)返回字符串 s 的字符数等同于 CHAR_LENGTH(s)返回字符串 RUNOOB 的字符数SELECT CHARACTER_LENGTH(RUNOOB) ASLengthOfString;CONCAT(s1,s2...sn)字符串 s1,s2 等多个字符串合并为一个字符串合并多个字符串SELECT CONCAT(SQL , Runoob , Gooogle ,Facebook) AS ConcatenatedString;CONCAT_WS(x,s1,s2...sn)同 CONCAT(s1,s2,...) 函数但是每个字符串之间要加上xx 可以是分隔符合并多个字符串并添加分隔符SELECT CONCAT_WS(-, SQL,Tutorial, is, fun!)AS ConcatenatedString;FIELD(s,s1,s2...)返回第一个字符串 s 在字符串列表(s1,s2...)中的位置返回字符串 c 在列表值中的位置SELECT FIELD(c, a, b, c,d, e);函数描述实例FIND_IN_SET(s1,s2)返回在字符串s2中与s1匹配的字符串的位置返回字符串 c 在指定字符串中的位置SELECT FIND_IN_SET(c,a,b,c,d,e);FORMAT(x,n)函数可以将数字 x 进行格式化#,###.##, 将 x 保留到小数点后 n 位最后一位四舍五入。格式化数字 #,###.## 形式SELECT FORMAT(250500.5634, 2); -- 输出250,500.56INSERT(s1,x,len,s2)字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串从字符串第一个位置开始的 6 个字符替换为 runoobSELECTINSERT(google.com, 1, 6, runoob); -- 输出runoob.comLOCATE(s1,s)从字符串 s 中获取 s1 的开始位置获取 b 在字符串 abc 中的位置SELECT LOCATE(st,myteststring);-- 5返回字符串 abc 中 b 的位置SELECT LOCATE(b, abc) -- 2LCASE(s)将字符串 s 的所有字母变成小写字母字符串 RUNOOB 转换为小写SELECT LCASE(RUNOOB) -- runoobLEFT(s,n)返回字符串 s 的前 n 个字符返回字符串 runoob 中的前两个字符SELECT LEFT(runoob,2) -- ruLOWER(s)将字符串 s 的所有字母变成小写字母字符串 RUNOOB 转换为小写SELECT LOWER(RUNOOB) -- runoobLPAD(s1,len,s2)在字符串 s1 的开始处填充字符串 s2使字符串长度达到len将字符串 xx 填充到 abc 字符串的开始处SELECT LPAD(abc,5,xx) --xxabcLTRIM(s)去掉字符串 s 开始处的空格去掉字符串 RUNOOB开始处的空格SELECT LTRIM( RUNOOB) ASLeftTrimmedString;-- RUNOOBMID(s,n,len)从字符串 s 的 n 位置截取长度为 len 的子字符串同SUBSTRING(s,n,len)从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECT MID(RUNOOB,2, 3) AS ExtractString; -- UNOPOSITION(s1 IN s)从字符串 s 中获取 s1 的开始位置返回字符串 abc 中 b 的位置SELECT POSITION(b in abc) -- 2REPEAT(s,n)将字符串 s 重复 n 次将字符串 runoob 重复三次SELECT REPEAT(runoob,3) --runoobrunoobrunoobREPLACE(s,s1,s2)将字符串 s2 替代字符串 s 中的字符串 s1将字符串 abc 中的字符 a 替换为字符 xSELECT REPLACE(abc,a,x)--xbcREVERSE(s)将字符串s的顺序反过来将字符串 abc 的顺序反过来SELECT REVERSE(abc) -- cbaRIGHT(s,n)返回字符串 s 的后 n 个字符返回字符串 runoob 的后两个字符SELECT RIGHT(runoob,2) -- obRPAD(s1,len,s2)在字符串 s1 的结尾处添加字符串 s2使字符串的长度达到 len将字符串 xx 填充到 abc 字符串的结尾处SELECT RPAD(abc,5,xx) --abcxxRTRIM(s)去掉字符串 s 结尾处的空格去掉字符串 RUNOOB 的末尾空格SELECT RTRIM(RUNOOB ) ASRightTrimmedString; -- RUNOOBSPACE(n)返回 n 个空格返回 10 个空格SELECT SPACE(10);STRCMP(s1,s2)比较字符串 s1 和 s2如果s1 与 s2 相等返回 0 如果s1s2 返回 1如果 s1s2 返回 -1比较字符串SELECT STRCMP(runoob, runoob); -- 0SUBSTR(s, start, length)从字符串 s 的 start 位置截取长度为 length 的子字符串从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECTSUBSTR(RUNOOB, 2, 3) AS ExtractString; -- UNOSUBSTRING(s, start,length)从字符串 s 的 start 位置截取长度为 length 的子字符串等同于 SUBSTR(s, start,length)从字符串 RUNOOB 中的第 2 个位置截取 3个 字符SELECTSUBSTRING(RUNOOB, 2, 3) AS ExtractString; -- UNOSUBSTRING_INDEX(s,delimiter, number)返回从字符串 s 的第 number个出现的分隔符 delimiter 之后的子串。 如果 number 是正数返回第 number 个字符左边的字符串。 如果number 是负数返回第(number 的绝对值(从右边数))个字符右边的字符串。SELECT SUBSTRING_INDEX(a*b,*,1) -- a SELECTSUBSTRING_INDEX(a*b,*,-1) -- b SELECTSUBSTRING_INDEX(SUBSTRING_INDEX(a*b*c*d*e,*,3),*,-1) --cTRIM(s)去掉字符串 s 开始和结尾处的空格去掉字符串 RUNOOB 的首尾空格SELECT TRIM( RUNOOB ) ASTrimmedString;UCASE(s)将字符串转换为大写将字符串 runoob 转换为大写SELECT UCASE(runoob); -- RUNOOBUPPER(s)将字符串转换为大写将字符串 runoob 转换为大写SELECT UPPER(runoob); -- RUNOOB5.2 MySQL 数字函数