SQL 易混易错知识点笔记1(drop,role,%,localhost)

DROP 与 DELETE 的区别

  • DELETE:删除表中的数据行,属于DML操作,可回滚,可带WHERE条件

    sql 复制代码
    DELETE FROM table WHERE condition; -- 删除特定行
    DELETE FROM table; -- 删除所有行但保留表结构
  • DROP:删除整个数据库对象(表、视图、索引等),属于DDL操作,不可回滚

    sql 复制代码
    DROP TABLE table_name; -- 完全删除表(结构和数据)
    DROP DATABASE db_name; -- 删除整个数据库

GRANT 语句中角色与用户的区别

  • 角色(Role):权限集合的抽象概念,不关联主机名

    sql 复制代码
    CREATE ROLE 'public_role'; -- 创建角色
    GRANT SELECT ON db.* TO 'public_role'; -- 授权给角色(无@host部分)
  • 用户(User):具体账户,必须指定访问来源

    sql 复制代码
    CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password'; -- 创建用户
    GRANT 'public_role' TO 'user1'@'localhost'; -- 将角色授予用户

% 与 localhost 的区别

  • localhost:仅允许本地连接(通过Unix socket或本地回环IP 127.0.0.1)

    sql 复制代码
    CREATE USER 'user'@'localhost'; -- 只能从本机连接
  • %:允许从任何主机连接(包括远程)

    sql 复制代码
    CREATE USER 'user'@'%'; -- 可从任意IP连接

其他易错点

  1. TRUNCATE 与 DELETE

    • TRUNCATE是DDL,重置自增值,不触发触发器

    • DELETE是DML,保留自增值,触发触发器

  2. HAVING 与 WHERE

    • WHERE过滤行,在GROUP BY前执行

    • HAVING过滤组,在GROUP BY后执行

  3. CHAR 与 VARCHAR

    • CHAR定长,适合短且长度固定的数据

    • VARCHAR变长,适合长度变化的数据

  4. INNER JOIN 与 LEFT JOIN

    • INNER JOIN只返回匹配的行

    • LEFT JOIN返回左表所有行(不匹配的右表字段为NULL)

  5. UNION 与 UNION ALL

    • UNION去重并排序

    • UNION ALL简单合并(更快)

相关推荐
我是一颗柠檬17 小时前
【MySQL全面教学】MySQL面试高频考点汇总Day15(2026年)
数据库·后端·mysql·面试
凯瑟琳.奥古斯特18 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
身如柳絮随风扬18 小时前
数据库读写分离:从原理到实战,构建高并发系统
数据库·mysql
提笔了无痕19 小时前
RAG存储策略中.md格式的切片与存储怎么处理
数据库·ai·rag
陳土19 小时前
DuckDB精读——基于Getting started with DuckDB
数据库·oracle
凯瑟琳.奥古斯特20 小时前
数据库原理选择题精选
数据库·python·职场和发展
曹牧20 小时前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
朝阳58120 小时前
MongoDB 副本集从零搭建到生产可用
数据库·mongodb
雨辰AI21 小时前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务