初学者使用sql时易犯的错误(持续更新)

DDL(数据定义)

DROP 子句 用于删除指定的列名,
若选择RESTRICT ,则删除的基本表不能被其他表的约
束所引用(如 CHECK FOREIGN KEY 等约束),不
能有视图,不能有触发器,不能有存储过程或函数等。
如果存在这些依赖该表的对象,则此表不能被删除。
若选择 CASCADE ,则该表的删除没有限制条件。在删
除基本表的同时,相关的依赖对象,例如视图等都将被
一起删除。
一般在缺省情况下默认为 RESTRICT 与具体实现有关

DML(数据操作)

DQL(数据查询)

一。注意 DISTINCT 短语的作用范围是所有目标列
错误的写法
SELECT DISTINCT Cno DISTINCT Grade
FROM SC;
正确的写法
SELECT DISTINCT Cno Grade
FROM SC;

二。空值查询:“ IS NULL 不能用 “ = NULL 代替
三。使用 GROUP BY 子句分组查询
细化聚集函数的作用对象
未对查询结果分组,聚集函数将作用于整个查询结果
对查询结果分组后,聚集函数将分别作用于每个组
分组方法
按指定的一列或多列值分组, 值相等的为一组
使用 GROUP BY 子句后, SELECT 子句的列名列
表中只能出现分组属性和聚集函数
GROUP BY 子句的作用对象是查询的中间结果表
【例】求各个课程号及相应的选课人数。
SELECT Cno COUNT(*) -- COUNT(Sno)
FROM SC
GROUP BY Cno
【例】查询选修了 3 门以上课程的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >3
查询有 3 门以上课程是 90 分以上的学生的学
号及( 90 分以上的)课程数
SELECT Sno, COUNT(*)
FROM SC
WHERE Grade>=90
GROUP BY Sno
HAVING COUNT(*)>=3;
四。
  • WHERE 子句允许你指定过滤条件,这些条件基于表中的单个行。你不能在 WHERE 子句中使用聚合函数(如 SUM()AVG()COUNT(), 等)来过滤分组。
  • GROUP BY 子句通常与聚合函数一起使用,以计算每个组的汇总值。你不能在 GROUP BY 子句中指定单个行的条件,但可以在 HAVING 子句中这样做,HAVING 子句允许你基于聚合函数的结果来过滤分组。

五。连接查询

连接条件中各 连接字段 的类型必须是 可比的 ,但不必是
相同的

六。嵌套查询

子查询的限制
不能使用 ORDER BY 子句
嵌套查询的分类与求解方法
不相关子查询
子查询的查询条件不依赖于父查询
由里向外逐层处理。每个子查询在上一级查询处理之前
求解,子查询的结果用于建立其父查询的查找条件。
相关子查询
子查询的查询条件依赖于父查询
先取外层查询中表的第一个元组,根据它与内层查询相
关的属性值处理内层查询,若 WHERE 子句返回值为真,
则取此元组放入结果表;然后再取外层表的下一个元组;
重复这一过程,直至外层表全部检查完为止
【例】找出每个学生所选修课程成绩超过该门课
程平均成绩的课程号。
SELECT Sno, Cno /* 外层查询 / 父查询 */
FROM SC x
WHERE Grade >=(SELECT AVG(Grade)
FROM SC y
WHERE y.Cno=x.Cno);
/* 内层查询 / 子查询 */
子查询不能在比较符之前
错误 的例子
SELECT Sno, Sname, Sdept
FROM Student
WHERE ( SELECT Sdept
FROM Student
WHERE Sname= ‘ 刘晨 ’ )
= Sdept

约束

索引

在一个基本表上最多只能建立一个聚集索引
聚集索引可以包含多个列(组合索引)
聚集索引的适用范围
很少对基表进行增删操作
很少对其中的变长列进行修改操作

相关推荐

  1. 初学者使用sql错误持续更新

    2024-06-10 00:58:01       33 阅读
  2. 实用执行sql,持续更新

    2024-06-10 00:58:01       60 阅读
  3. SQL持续更新

    2024-06-10 00:58:01       41 阅读
  4. 【MySQL】MySQL运维SQL持续更新。。。)

    2024-06-10 00:58:01       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 00:58:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 00:58:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 00:58:01       87 阅读
  4. Python语言-面向对象

    2024-06-10 00:58:01       96 阅读

热门阅读

  1. uni-app 倒计时组件

    2024-06-10 00:58:01       29 阅读
  2. 前端面试题日常练-day60 【面试题】

    2024-06-10 00:58:01       31 阅读
  3. 【杂记-浅谈VLAN技术】

    2024-06-10 00:58:01       25 阅读
  4. Web前端 CodeView:深度解析与实用指南

    2024-06-10 00:58:01       31 阅读
  5. 7_1 Linux 文件管理

    2024-06-10 00:58:01       29 阅读
  6. Spring

    2024-06-10 00:58:01       32 阅读
  7. MATLAB cell数组 (tuple)

    2024-06-10 00:58:01       28 阅读
  8. C 语言实例 - 字符串翻转

    2024-06-10 00:58:01       30 阅读
  9. 46-3 护网溯源 - 溯源报告编写

    2024-06-10 00:58:01       26 阅读
  10. Spring常用拓展点(随记)

    2024-06-10 00:58:01       22 阅读
  11. js的锚点

    2024-06-10 00:58:01       32 阅读