sql查询语句的一些注意事项
来源:互联网 发布:耐脏打扮知乎 编辑:程序博客网 时间:2024/06/07 06:37
1 sql语句是写法顺序及执行顺序
语法顺序:SELECT(DISTINCT) --> FROM -->WHERE -->GROUP BY-->HAVING -->UNION-->ORDER BY
执行顺序:FROM --> WHERE -->GROUP BY -->HAVING -->SELECT(DISTINCT) -->UNION -->ORDER BY
注意事项:
1) 数据库在执行 SQL 语句的第一步是将数据从硬盘加载到数据缓冲区中,以便对这些数据进行操作。
2) 不能在 WHERE 中使用在 SELECT 中设定别名的字段作为判断条件
2 引用表
1 INNER JOIN 和 OUTER JOIN
INNER JOIN (或者JOIN) :
SELECT * FROM PEOPLE JOIN ID ON PEOPLE.ID = ID.ID一个人对应一个身份证号
OUTER JOIN(或者LEFT OUTER JOIN,RIGHT OUTER JOIN或者FULL OUTER JOIN)
SELECT * FROM PEOPLE LEFT OUTER JOIN ID ON PEOPLE.ID = ID.ID每个人对应每个身份证号;没有身份证号的人也会查询出来
2 IN 和 EXISTS
IN:
SELECT * FROM PEOPLE WHERE PEOPLE.ID IN (SELECT ID.ID FROM ID )EXISTS:
SELECT * FROM PEOPLE WHERE EXISTS(SELECT 1 FROM ID WHERE ID.ID = PEOPLE.ID)
1)IN 比 EXISTS 可读性更好
2)EXISTS 比 IN表达性更好(适合复杂的查询语句)
3 NOT IN 和 NOT EXISTS
与IN 和 EXISTS 相反
3 派生表
派生表就是括号中的子查询:
SELECT * FROM (SELECT * FROM PEOPLE JOIN ID ON PEOPLE.ID = ID.ID) a或者也可以给经常用的派生表创建一个视图:
CREATE VIEW view_name ASSELECT column_name(s)FROM table_nameWHERE condition
4 GROUP BY 是对表的引用进行的操作
当应用 GROUP BY 的时候, SELECT 后没有使用聚合函数的列,都要出现在 GROUP BY 后面:
SELECT PEOPLE.SEX ,COUNT(SEX) FROM PEOPLE GROUP BY PEOPLE.SEX需要注意的是:其他字段能够使用聚合函数; MySQL 并不坚持这个标准
5 SQL 语句中的 SELECT 实质上是对关系的映射
SELECT 语句就像一个“投影仪”,可以将其理解成一个将源表中的数据按照一定的逻辑转换成目标表数据的函数。通过 SELECT语句,能对每一个字段进行操作,通过复杂的表达式生成所需要的数据。
SELECT 语句有很多特殊的规则,至少应该熟悉以下几条:
- 仅能够使用那些能通过表引用而得来的字段;
- 如果有 GROUP BY 语句,只能够使用 GROUP BY 语句后面的字段或者聚合函数;
- 当语句中没有 GROUP BY 的时候,可以使用开窗函数代替聚合函数;
- 当语句中没有 GROUP BY 的时候,不能同时使用聚合函数和其它函数;
- 有一些方法可以将普通函数封装在聚合函数中;
6 SQL语句中几个关键词
- DISTINCT 在映射之后对数据进行去重
- UNION 将两个子查询拼接起来并去重
- UNION ALL 将两个子查询拼接起来但不去重
- EXCEPT 将第二个字查询中的结果从第一个子查询中去掉
- INTERSECT 保留两个子查询中都有的结果并去重
0 0
- sql查询语句的一些注意事项
- 编写sql语句一些关键词的注意事项
- sql 查询时间的一些常用语句
- SQL 一些有用的查询语句积累
- SQL一些常用的查询语句
- 一些比较难的SQL语句查询
- 常用的一些sql语句查询
- MYSQL查询SQL的注意事项和一些技巧总结
- sql一些小查询语句
- sql一些小查询语句
- lock语句的一些注意事项
- oracle的一些常用的查询的sql语句
- 一些常用SQL语句的总结-- 查询表内容
- 一些精妙的Sql查询语句汇总【1】
- sql查询语句的一些简单优化措施(持续补充)
- sql的一些语句
- sql server中的一些基本查询语句
- mysql中一些sql语句查询
- 中文日历终于有Snap版了
- JS 动态命名变量
- Android 在应用中,跳转到该应用的详细设置页面,设置权限页面
- Maya模型动画导入UE4的问题
- Linux常用命令使用
- sql查询语句的一些注意事项
- VPN篇(5.4) 02. IPsec VPN
- SQL NULL 函数
- Mac OS 安装ROS indigo
- 高级I/O
- 导入项目遇到jar包冲突
- Error:java.lang.NullPointerException (no error message)
- 使用Visual Studio 2017作为Linux C++开发工具
- 我的博客开通啦