sql取余_SQL视图、⼦查询和常见函数的应⽤
⼀、视图
含义:虚拟表,和普通表⼀样使⽤,通过表动态⽣成的数据。
创建语法的关键字是否实际占⽤物理空间使⽤
视图CREATE VIEW没有(只保存了SQL逻辑)增删改查,⼀般不能增删改
表CREATE TABLE占⽤(保存了数据)增删改查
1.创建视图
CREATE VIEW 视图名
AS
查询语句;
2.视图的修改
⽅式⼀:
CREATE OR REPLACE VIEW 视图名
AS
查询语句;
⽅式⼆:
ALTER VIEW 视图名
AS
查询语句;
3.删除视图
DROP VIEW 视图名,视图名,......;
⼆、⼦查询
含义:出现在其他语句中的 SELECT语句,称为⼦查询或内查询。外部的查询语句,称为主查询或外查询。按⼦查询出现的位置:
SELECT后⾯:
仅⽀持标量⼦查询
FROM后⾯:
⽀持表⼦查询
★ WHERE或 HAVING后⾯:
标量⼦查询(单⾏)★
列⼦查询(多⾏)★
⾏⼦查询(⽤的较少)
EXISTS后⾯(相关⼦查询):
表⼦查询表⼦查询
按结果集的⾏列数不同:
标量⼦查询(结果集只有⼀⾏⼀列)
列⼦查询(结果集只有⼀列多⾏)
⾏⼦查询(结果集有⼀⾏多列)
表⼦查询(结果集⼀般为多⾏多列)
1.WHERE 或 HAVING后⾯:
标量⼦查询(单⾏⼦查询)
trime列⼦查询(多⾏⼦查询)
⾏⼦查询(多列多⾏)
特点:
①⼦查询放在⼩括号内
②⼦查询⼀般放在条件右侧
③标量⼦查询,⼀般搭配着单⾏操作符使⽤:> < >= <= = <>
列⼦查询,⼀般搭配着多⾏操作符使⽤:in、any/some、all
④⼦查询优先执⾏与主查询执⾏,主查询的条件⽤到了⼦查询的结果
2.SELECT后⾯:
仅仅⽀持标量⼦查询
3.FROM后⾯:
将⼦查询结果充当⼀张表,要求必须起别名
三、常见函数
1.字符函数:
LENGTH(): 获取参数值的字节个数
CONCAT(): 拼接字符串
UPPER() ⼤写, LOWER() ⼩写
SUBSTR() :截取字符
INSTR(): 返回⼦串第⼀次出现的索引,如果不到返回0
TRIME() :去前后字符,默认去左右空格
LPAD(): ⽤指定的字符实现左填充指定长度
RPAD() :⽤指定的字符实现右填充指定长度
REPLACE() :替换
2.数学函数:
ROUND(): 四舍五⼊
CEIL() :向上取整,返回>=该参数的最⼩整数
FLOOR(): 向下取整,返回<=该参数的最⼤整数
TRUNCATE(): 截断
MOD() :取余
3.⽇期函数:
NOW() :返回当前系统⽇期+时间
CURDATE() :返回当前⽇期,不含时间
CURTIME(): 返回当前时间,不含⽇期
STR_TO_DATE(): 将⽇期格式的字符转换成指定格式的⽇期
DATE_FORMAT() :将⽇期转换成字符
四、练习
这⾥⽤and查出的范围包括边界值,所以要+1和-1去掉边界值
select name,population
from world
where population between(
select population
from world
where name='Canada'
)+1 and(
select population
from world
where name='Poland'
)-1
注意使⽤concat()和round()函数来显⽰出百分⽐效果
select name,concat(round(population/( select population
from world
where name='Germany'
)*100,0),'%')
from world
where continent='Europe'
字符串ASCII码排序
select continent,name
from world x
where name<=all(
select name
from world y
inent = y.continent
)
select name,continent
from world x
where population>=all(
select population*3
from world y
inent
and x.name<>y.name
)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。