SQL语句-常用版
SQL语句是关系型数据库中不可缺少的部分
1. 数据定义语言(DDL)
用于定义数据库结构:
-- 创建数据库
CREATE DATABASE database_name;
-- 创建表
CREATE TABLE table_name (column1 datatype constraints,column2 datatype constraints,...
);
这里面column是数据列名,datatype 是该列里面存储的数据类型,constraints 是约束条件(常见的有 not null 非空, unique 唯一 等等)
-- 修改表结构
ALTER TABLE table_name ADD column_name datatype;
ALTER TABLE table_name MODIFY column_name new_datatype;
ALTER TABLE table_name DROP COLUMN column_name;
ADD 增加表的数据列
MODIFY 修改原有表的数据类型
DROP COLUNM 删除已有的数据列
-- 删除表或数据库
DROP TABLE table_name;
DROP DATABASE database_name;
-- 创建索引
CREATE INDEX index_name ON table_name (column_name);
SQL 的索引并不是C语言的*、@,而是一种优化途径:基于数据结构 B树 / B+树 存储列值和对应行位置的映射,帮助数据库快速定位数据而不用全局扫描,大幅提高 WHERE 、ORDER BY 、JOIN 的速度(尽管功能和哈希表类似,但是B树主要是通过平衡树实现,虽然时间复杂度比哈希表更高,但是也支持范围、前缀、等值等更多操作)
像我的智选果实项目数据库脚本里面就可以通过
-- 为fruit_type列创建索引,加速按水果类型查询
CREATE INDEX idx_fruit_type ON fruit_weights (fruit_type);-- 为timestamp列创建索引,加速时间范围查询
CREATE INDEX idx_timestamp ON fruit_weights (timestamp);
创建索引,加快下面的查询操作
-- 查找所有苹果记录
SELECT * FROM fruit_weights WHERE fruit_type = '苹果';-- 查找特定日期范围内的记录
SELECT * FROM fruit_weights WHERE timestamp BETWEEN '2025-05-01' AND '2025-05-21';
2. 数据操作语言(DML)
用于操作数据:
-- 插入数据:INSERT
INSERT INTO table_name (column1, column2) VALUES (value1, value2);-- 更新数据:UPDATE
UPDATE table_name SET column1 = value1 WHERE condition;-- 删除数据:DELETE
DELETE FROM table_name WHERE condition;
3. 数据查询语言(DQL)
用于查询数据:
-- 基本查询
SELECT column1, column2 FROM table_name;-- 带条件查询
SELECT * FROM table_name WHERE condition;-- 排序
SELECT * FROM table_name ORDER BY column_name ASC/DESC;-- 分组
SELECT column1, COUNT(*) FROM table_name GROUP BY column1;-- 连接查询
SELECT a.column1, b.column2
FROM table1 a
JOIN table2 b ON a.key = b.key;-- 子查询
SELECT * FROM table_name
WHERE column_name IN (SELECT column_name FROM another_table);-- 聚合函数
SELECT COUNT(*), AVG(column_name), SUM(column_name) FROM table_name;-- 限制结果数量
SELECT * FROM table_name LIMIT 10;
4. 数据控制语言(DCL)
用于控制数据库访问权限:
-- 授权
GRANT privilege ON database.table TO user@host;-- 撤销权限
REVOKE privilege ON database.table FROM user@host;
5. 事务控制语言(TCL)
用于管理事务:
-- 开始事务
BEGIN TRANSACTION; -- 或 START TRANSACTION;-- 提交事务
COMMIT;-- 回滚事务
ROLLBACK;-- 设置保存点
SAVEPOINT savepoint_name;-- 回滚到保存点
ROLLBACK TO SAVEPOINT savepoint_name;
在果实智选项目的duqu3.py脚本中,主要使用了DDL语句创建表结构和DML语句插入水果重量数据。