史上最全 SQL 基础知识总结(理论 + 举例 + 10 条吐血建议)

刚接触 SQL 时,我曾因查询效率低、操作失误等问题吃过不少亏。经过长期实践,我总结了一套实用知识和经验,希望能帮大家少走弯路。

一、SQL基础认知

SQL 即结构化查询语言,是操作关系型数据库的核心工具。MySQL、Oracle 等主流数据库,都依赖它实现数据的查询、增删改操作。虽然 SQL 有标准语法,但各数据库存在差异,使用时需特别注意,例如:

-- MySQL使用LIMIT限制查询结果数量
SELECT * FROM table_name LIMIT 10; 
-- Oracle则需用ROWNUM实现同样功能
SELECT * FROM table_name WHERE ROWNUM <= 10;

二、SQL核心分类与应用

2.1 DDL(数据定义语言)

用于创建、修改和删除数据库对象:

-- 使用CREATE建库建表
CREATE DATABASE mydb;
CREATE TABLE users (
    id INT,
    name VARCHAR(50),
    age INT
);
-- 使用ALTER修改表结构,例如添加一列
ALTER TABLE users ADD COLUMN email VARCHAR(100);
-- 使用DROP删除对象,删除表
DROP TABLE users;

2.2 DML(数据操作语言)

负责数据的增删改:

-- INSERT用于插入数据
INSERT INTO users (id, name, age, email) VALUES (1, 'John', 30, 'john@example.com');
-- UPDATE修改数据
UPDATE users SET age = 31 WHERE id = 1;
-- DELETE删除数据,若遗漏WHERE条件,可能清空整张表
DELETE FROM users WHERE id = 1;

2.3 DCL(数据控制语言)

主要用于管理数据库权限:

-- GRANT赋予用户操作权限,赋予用户user1对users表的SELECT权限
GRANT SELECT ON users TO user1;
-- REVOKE收回权限,收回用户user1对users表的SELECT权限
REVOKE SELECT ON users FROM user1;

2.4 DQL(数据查询语言)

SELECT语句是 DQL 的核心,例如从employees表中筛选出年龄大于 30 岁的员工姓名和年龄:

SELECT name, age FROM employees WHERE age > 30;

三、数据类型选择要点

数据类型决定数据的存储格式与范围。

-- 存储整数可选用INT、BIGINT
CREATE TABLE numbers (
    num_int INT,
    num_bigint BIGINT
);
-- VARCHAR适用于存储可变长度字符串
CREATE TABLE texts (
    content VARCHAR(255)
);
-- 处理日期时间时,需区分DATE(仅存储日期)和DATETIME(存储日期和时间)
CREATE TABLE events (
    event_date DATE,
    event_datetime DATETIME
);

四、实用查询技巧

WHERE用于条件筛选,ORDER BY实现结果排序,LIMIT限制返回记录数。

-- 按工资从高到低展示员工信息
SELECT * FROM employees ORDER BY salary DESC;
-- 限制查询结果为前10条记录
SELECT * FROM employees LIMIT 10;

编写查询语句时,建议先用小数据量测试,全表查询在数据量大时易造成服务器负载过高,影响性能。

五、10条实战经验建议

①执行删除操作前,一定要对数据进行备份,避免操作不当导致数据丢失。
②复杂查询拆分成多个子查询分步实现,方便调试和维护。
③表和字段命名采用英文,方便团队协作和代码复用。
④定期清理临时表和冗余数据,防止数据库性能下降。
⑤不要过度使用数据库函数,复杂计算尽量在程序层面处理。
⑥代码中添加必要注释,提升可读性,有利于后续修改。
⑦进行分页查询时,关注分页逻辑的性能,避免数据量大时出现效率问题。
⑧不同数据库的函数用法存在差异,遇到问题优先查找官方文档。
⑨合理使用事务,确保数据操作的一致性和完整性。
⑩多和别人交流 SQL 编写经验,学习高效的查询优化方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值