sql数据经典例子

来源:互联网 发布:Windows命令删除文件夹 编辑:程序博客网 时间:2024/05/16 11:03

1.database:常用函数
如:select 函数(属性)from 表名

数学函数:
ABS(X) 返回X的绝对值
max(x) 返回X的最大值
avg(x) 返回X的平均值
min(x) 返回X的最小值
sum(x)返回X的和
count(x)返回X的表记录数量
重点上:常用:



PI() 返回圆周率,默认显示小数点后6位
SQRT(X) 返回X的平方根
MOD(X, Y) 返回X被Y除后的余数
CEIL(X) 返回不小于X的最小整数值
CEILING(X) 返回不小于X的最小整数值
FLOOR(X) 返回不大于X的最大整数值
RAND() 产生随机数
RAND(X) 产生随机数,若X参数相同,多次执行,产生的随机数相同
ROUND(X) 返回对X进行四舍五入操作后的整数值
ROUND(X, Y) 对X进行四舍五入操作,其值保留到小数点后Y位,若Y为负,则保留到小数点左边Y位
SIGN(X) 返回X的符号,负则返回-1,零则返回0,正则返回1
POW(X, Y) 返回X的Y次幂
POWER(X, Y) 返回X的Y次幂
EXP(X) 返回e的X次幂
LOG(X) 返回X的自然对数
LOG10(X) 返回X的基数为10的对数
RADIANS(X) 角度转化为弧度
DEGREES(X) 弧度转化为角度
SIN(X) 正弦函数
ASIN(X) 正弦函数的反函数
COS(X) 余弦函数
ACOS(X) 余弦函数的反函数
TAN(X) 正切函数
ATAN(X) 正切函数的反函数
COT(X) 余切函数
字符串函数:
LOWER(str) 大写字母转为小写
LCASE(str) 大写字母转为小写
UPPER(str) 小写字母转为大写
UCASE(str) 小写字母转为大写
CHAR_LENGTH(str) 计算字符串str的字符个数
CONCAT(s1, s2, …) 拼接s1, s2, …
CONCAT_WS(x, s1, s2, …) 使用分隔符x将s1, s2, …拼接起来
STRCMP(s1, s2) 字符串比较
SUBSTRING(s, n, len)或substr(s, n, len) 返回字符串s中从n开始长度为len的子串
重点上:常用:


INSERT(s1, x, len, s2) 返回字符串s1,其子字符串起始于x位置和被字符串s2取代的len字符
LEFT(s, n) 返回字符串s左边n个字符组成的子串
RIGHT(s, n) 返回字符串s右边n个字符组成的子串
LPAD(s1, len, s2) 返回字符串s1,其左边被字符串s2填补至len字符长度
RPAD(s1, len, s2) 返回字符串s1,其右边被字符串s2填补至len字符长度
LTRIM(s) 删除字符串s左端的空格
RTRIM(s) 删除字符串s右端的空格
TRIM(s) 删除字符串s两端的空格
TRIM(s1 FROM s) 删除字符串s中两端所有的字串s1,未指定s1时默认为空格
REPEEAT(s, n) 返回n个字符串s拼接成的字符串
SPACE(n) 返回一个由n个空格组成的字符串
REPLACE(s, s1, s2) 使用字符串s2替换s中所有的s1

MID(s, n, len) 返回字符串s中从n开始长度为len的子串
LOCATE(str1, str) 返回str1在字符串str中的位置
POSITION(str1 IN str) 返回str1在字符串str中的位置
INSTR(str, str1) 返回str1在字符串str中的位置
REVERSE(s) 返回反转后的字符串
ELT(n, s1, s2, …) 返回s1, s2, …中第n个字符串
FIELD(s, s1, s2, …) 返回字符串s在s1, s2, …中所在的位置
FIND_IN_SET(s1, s2) 返回字符串s1在字符串列表s2中的位置
MAKE_SET(x, s1, s2, …) 返回由x的二进制数指定的相应位的字符串组成的字符串


3.分组函数:函数如:max(),avg(),min(),sum()......
Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。
它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理

句型:select 属性1,函数(属性)from 表名 group by 属性1


SELECT deptno,MAX(SAL) FROM emp GROUP BY deptno

SELECT deptno ,JOB,SUBSTR(ENAME,2,5),MAX(SAL) FROM emp GROUP BY deptno,JOB


having 条件判断:
SELECT deptno, MGR,JOB,SUBSTR(ENAME,2,5),MAX(SAL) FROM emp GROUP BY deptno HAVING AVG(MGR)>7800
SELECT deptno, MGR,JOB,SUBSTR(ENAME,2,5),MAX(SAL) FROM emp GROUP BY deptno ,JOB HAVING AVG(MGR)>7800


子查询:查出来是一张表(临时的)

SELECT *FROM emp WHERE SAl>(SELECT AVG(SAL)FROM emp)GROUP BY SAL
证明子查询是一张表(必须取别名,不然会出错)
SELECT * FROM (SELECT *FROM emp)AS d
句型: SELECT * FROM 表名 WHERE 属性1 IN(SELECT 属性1 FROM  emp  WHERE 属性2=800 OR 属性2=5000)
SELECT * FROM emp WHERE SAL IN(SELECT SAL FROM  emp  WHERE SAL=800 OR SAL=5000)


连表查询:

SELECT e.*,d.loc FROM emp e,dept d WHERE d.deptno=e.deptno
SELECT e.*,d.loc FROM emp e,dept d WHERE d.deptno>20 AND e.COMM>300
join连表查询(一般现在大家用的都是这个)ringt,inner ,on+条件
SELECT e.*,d.loc FROM emp e INNER JOIN dept d ON d.deptno>20 


limit:一般用于分页的条件


SELECT * FROM emp LIMIT 5,8






原创粉丝点击