1.视图
视图中存放sql语句,当运行视图时会根据运行其中的sql语句创建一个临时表(与数据库断开时表会自动消失)
注意:
- 视图里最好不要嵌套视图
- 不能往视图里插入数据
2.子查询
在select语句中嵌套一个select语句,子查询可以一直嵌套
执行顺序:先执行子查询,再执行from、where、group by、having字句,再执行select语句,最后执行order by、limit语句
in、all、any(some)子查询与运算符一起使用
all得到的是一个集合,不能写a > 3all(b),只能写 a/3 > all(b)
3.标量子查询
where语句中不能使用汇总函数,标量子查询必须且只返回一行一列的查询结果(返回一个值),位置不固定
4.关联子查询
关联查询要写在子查询,在每个组里进行比较需要使用关联查询
5.函数
算术函数:
- round函数(数值,保留小数的位数):数据四舍五入
- abs函数(数值):绝对值
- mod函数(被除数,除数):求余数
字符串函数:
- length(字符串):长度
- lower(字符串):大写转小写
- upper(字符串):小写转大写
- concat(字符串1,字符串2):字符串连接
- replace(字符串,被替换,替换):字符串替换
- substring(字符串,截取的起始位置,截取长度):字符串截取
日期函数:
- current_date:当前日期
- current_time:当前时间
- current_timestamp:当前日期和时间
- year,month,day,dayname(日期)
6.练习
显示运行结果包括加拿大和波兰,应该要把这两个国家去掉,正确答案如下:
计算出数值之后用concat函数将数值和%连接在一起
和所有值比较时需要排除自身,使用x.name<>y.name
7.总结
多体会体会语句之间的逻辑关系,尤其标量和关联子查询,注意分析问题问的是什么