Sq数据库命令大全有哪些核心命令?

SQL数据库命令大全涵盖了数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)以及事务控制语言(TCL)等多个方面,以下将详细分类介绍常用命令,并通过表格形式对比部分语法差异,帮助用户全面掌握SQL操作。

sq数据库命令大全
(图片来源网络,侵删)

数据定义语言(DDL)

DDL用于定义和管理数据库的结构,包括创建、修改和删除数据库对象。

  1. 创建数据库

    • 基本语法:CREATE DATABASE 数据库名;
    • 示例:CREATE DATABASE company_db;
    • 指定字符集:CREATE DATABASE company_db DEFAULT CHARACTER SET utf8mb4;
  2. 创建表

    • 基本语法:
      CREATE TABLE 表名 (
          列名1 数据类型 [约束],
          列名2 数据类型 [约束],
          ...
          [表级约束]
      );
    • 示例(创建员工表):
      CREATE TABLE employees (
          emp_id INT PRIMARY KEY,
          emp_name VARCHAR(50) NOT NULL,
          gender ENUM('男', '女'),
          hire_date DATE,
          salary DECIMAL(10,2),
          dept_id INT,
          FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
      );
  3. 修改表结构

    sq数据库命令大全
    (图片来源网络,侵删)
    • 添加列:ALTER TABLE 表名 ADD COLUMN 列名 数据类型;
      示例:ALTER TABLE employees ADD COLUMN email VARCHAR(100);
    • 修改列:ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型;
      示例:ALTER TABLE employees MODIFY COLUMN emp_name VARCHAR(60);
    • 删除列:ALTER TABLE 表名 DROP COLUMN 列名;
      示例:ALTER TABLE employees DROP COLUMN email;
    • 重命名表:RENAME TABLE 旧表名 TO 新表名;
      示例:RENAME TABLE employees TO staff;
  4. 删除数据库或表

    • 删除表:DROP TABLE 表名;
    • 删除数据库:DROP DATABASE 数据库名;
    • 清空表数据(保留结构):TRUNCATE TABLE 表名;(比DELETE更快,不可回滚)

数据操纵语言(DML)

DML用于操作数据库中的数据,包括插入、更新和删除记录。

  1. 插入数据(INSERT)

    • 插入单条记录:INSERT INTO 表名 (列名1, 列名2) VALUES (值1, 值2);
      示例:INSERT INTO employees (emp_id, emp_name, hire_date) VALUES (1001, '张三', '2023-01-15');
    • 插入多条记录:
      INSERT INTO employees (emp_id, emp_name, hire_date) VALUES 
          (1002, '李四', '2023-02-20'),
          (1003, '王五', '2023-03-10');
    • 从其他表插入:INSERT INTO 目标表 (列名) SELECT 列名 FROM 源表 WHERE 条件;
  2. 更新数据(UPDATE)

    sq数据库命令大全
    (图片来源网络,侵删)
    • 基本语法:UPDATE 表名 SET 列名1=值1, 列名2=值2 WHERE 条件;
    • 示例:UPDATE employees SET salary=8500 WHERE emp_id=1001;
    • 注意:省略WHERE会更新全表数据,需谨慎使用。
  3. 删除数据(DELETE)

    • 基本语法:DELETE FROM 表名 WHERE 条件;
    • 示例:DELETE FROM employees WHERE emp_id=1003;
    • 与TRUNCATE的区别:DELETE可回滚,逐条删除;TRUNCATE不可回滚,清空表并重置自增ID。

数据查询语言(DQL)

DQL用于从数据库中检索数据,核心是SELECT语句。

  1. 基本查询

    • 查询所有列:SELECT * FROM 表名;
    • 查询指定列:SELECT 列名1, 列名2 FROM 表名;
    • 去重:SELECT DISTINCT 列名 FROM 表名;
      示例:SELECT DISTINCT dept_id FROM employees;
  2. 条件查询(WHERE)

    • 比较运算符:, >, <, >=, <=, <>(或)
    • 逻辑运算符:AND, OR, NOT
    • 范围查询:BETWEEN...AND..., IN(值1, 值2)
    • 模糊查询:LIKE(匹配任意多个字符,_匹配单个字符)
      示例:SELECT * FROM employees WHERE emp_name LIKE '张%';
    • 空值判断:IS NULL, IS NOT NULL
  3. 排序(ORDER BY)

    • 升序(默认):SELECT * FROM 表名 ORDER BY 列名 ASC;
    • 降序:SELECT * FROM 表名 ORDER BY 列名 DESC;
    • 多列排序:SELECT * FROM employees ORDER BY dept_id ASC, salary DESC;
  4. 聚合函数

    • 常用函数:COUNT()(计数)、SUM()(求和)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值)
      示例:SELECT dept_id, AVG(salary) AS avg_salary FROM employees GROUP BY dept_id;
  5. 分组(GROUP BY)与筛选(HAVING)

    • 分组:SELECT 列名, 聚合函数 FROM 表名 GROUP BY 列名;
    • 分组后筛选:SELECT dept_id, COUNT(*) AS emp_count FROM employees GROUP BY dept_id HAVING COUNT(*)>5;
      (HAVING与WHERE的区别:WHERE在分组前过滤行,HAVING在分组后过滤组)
  6. 限制结果数量(LIMIT)

    • 基本语法:SELECT * FROM 表名 LIMIT 起始位置, 数量;
    • 示例(分页):SELECT * FROM employees LIMIT 0, 10;(从第1条开始取10条)

数据控制语言(DCL)

DCL用于控制数据库的访问权限,主要包括授权和撤销权限。

  1. 授权(GRANT)

    • 语法:GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];
    • 示例:GRANT SELECT, INSERT ON company_db.employees TO 'user1'@'localhost';
    • WITH GRANT OPTION允许用户将权限转授给其他用户。
  2. 撤销权限(REVOKE)

    • 语法:REVOKE 权限 ON 数据库对象 FROM 用户;
    • 示例:REVOKE INSERT ON company_db.employees FROM 'user1'@'localhost';

事务控制语言(TCL)

TCL用于管理事务,确保数据的一致性和完整性。

  1. 事务基本操作

    • 开启事务:START TRANSACTION;(或BEGIN;
    • 提交事务:COMMIT;(保存更改)
    • 回滚事务:ROLLBACK;(撤销未提交的更改)
    • 示例:
      START TRANSACTION;
      UPDATE accounts SET balance=balance-100 WHERE user_id=1;
      UPDATE accounts SET balance=balance+100 WHERE user_id=2;
      COMMIT; -- 或 ROLLBACK;
  2. 事务隔离级别

    • 查看当前隔离级别:SELECT @@transaction_isolation;
    • 设置隔离级别:SET TRANSACTION ISOLATION LEVEL 级别;
      (级别包括:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)

常用函数

SQL提供了丰富的内置函数,简化数据处理。

  1. 字符串函数

    • CONCAT(str1, str2):拼接字符串
    • SUBSTRING(str, 起始位置, 长度):截取子串
    • LENGTH(str):字符串长度
    • LOWER(str)/UPPER(str):转小写/大写
  2. 数值函数

    • ROUND(num, 小数位数):四舍五入
    • CEIL(num)/FLOOR(num):向上/向下取整
    • MOD(num1, num2):取余
  3. 日期函数

    • CURDATE()/NOW():当前日期/日期时间
    • DATE_FORMAT(date, 格式):格式化日期(如%Y-%m-%d
    • DATEDIFF(date1, date2):计算日期差

不同数据库的语法差异对比

功能MySQLSQL ServerOracle
自增列INT AUTO_INCREMENTINT IDENTITY(1,1)SEQUENCE + TRIGGER
分页查询LIMIT 0,10OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLYROWNUM <= 10 AND ROWNUM > 0
字符串拼接CONCAT(str1, str2)str1 + str2CONCAT(str1, str2)str1 || str2CONCAT(str1, str2)
注释-- 注释# 注释-- 注释/* 注释 */-- 注释/* 注释 */

相关问答FAQs

Q1: SQL中DELETE和TRUNCATE的区别是什么?
A1: 主要区别有三点:

  1. 功能:DELETE用于删除满足条件的行(可带WHERE条件),TRUNCATE直接清空全表数据;
  2. 性能:TRUNCATE是DDL语句,操作速度快(直接删除表数据并重建表),DELETE是DML语句,逐行删除,速度较慢;
  3. 事务与日志:DELETE操作会被记录到事务日志中,支持回滚(ROLLBACK),TRUNCATE不记录日志,通常不可回滚(部分数据库支持事务回滚);
  4. 自增ID:TRUNCATE会重置自增列的计数器(从1开始),DELETE不会影响自增ID的当前值。

Q2: 如何优化SQL查询性能?
A2: 优化SQL查询性能可从以下方面入手:

  1. 索引优化:为经常查询、排序或作为条件的列创建索引(如WHEREJOINORDER BY涉及的列),但避免过度索引(降低写入性能);
  2. 避免全表扫描:确保查询使用索引,避免对列进行函数操作(如WHERE YEAR(hire_date)=2023,应改为hire_date >= '2023-01-01' AND hire_date < '2024-01-01');
  3. 减少返回数据量:使用SELECT指定必要列,避免SELECT *;合理使用LIMIT分页;
  4. 优化JOIN操作:确保JOIN字段有索引,小表驱动大表(将小表放在驱动表位置);
  5. 使用EXPLAIN分析:通过EXPLAIN查询执行计划,检查是否走索引、是否出现临时表或filesort;
  6. 事务管理:避免长事务,及时提交或回滚,减少锁持有时间。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/359377.html<

(0)
运维的头像运维
上一篇2025-09-22 19:14
下一篇 2025-09-22 19:21

相关推荐

  • SQL批处理命令如何高效执行?

    SQL批处理命令是指将多条SQL语句组合在一起作为一个整体执行,以提高数据库操作的效率和简化管理流程,通过批处理,可以减少与数据库的交互次数,降低网络开销,并确保一组操作要么全部成功,要么全部失败,从而保证数据的一致性,在SQL Server、MySQL、Oracle等主流数据库中,批处理命令的实现方式略有不同……

    2025-11-18
    0
  • Linux MySQL命令参数有哪些常用选项?

    Linux环境下MySQL命令参数的掌握是数据库管理和开发的基础,无论是日常运维还是数据操作,都需要熟练运用这些参数来高效完成任务,MySQL命令行工具(mysql)提供了丰富的参数选项,允许用户连接服务器、执行SQL脚本、配置输出格式等,以下将从连接参数、执行参数、输出控制、安全选项及其他常用参数五个维度,详……

    2025-11-17
    0
  • Redis服务器命令有哪些常用操作?

    Redis 是一个高性能的内存数据库,常用于缓存、消息队列、实时统计等场景,掌握 Redis 服务器命令是高效使用 Redis 的基础,以下从连接管理、键值操作、数据类型操作、服务器管理等方面详细介绍常用命令,连接管理是使用 Redis 的第一步,通过 redis-cli 命令可以连接到 Redis 服务器,r……

    2025-11-14
    0
  • MySQL命令行工具有哪些核心操作?

    MySQL命令行工具是数据库管理员和开发人员日常工作中不可或缺的强大工具,它提供了直接与MySQL服务器交互的方式,通过简单的命令即可完成数据库的创建、表的管理、数据的查询与修改等复杂操作,与图形化界面工具相比,命令行工具具有轻量化、高效、跨平台以及脚本化自动化等优势,尤其适用于服务器环境或需要批量处理任务的场……

    2025-11-13
    0
  • SQLite数据库命令有哪些核心用法?

    SQLite 是一种轻量级、嵌入式的关系型数据库管理系统,它无需独立服务器进程,直接通过文件存储数据,具有零配置、高性能、跨平台等优点,广泛应用于移动应用、桌面软件、嵌入式系统和小型Web项目中,掌握 SQLite 数据库命令是高效操作数据的基础,以下从核心命令类型、实用技巧及常见场景进行详细说明,数据库与表操……

    2025-11-13
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注