SQL重要语句及用法详解
SQL(结构化查询语言)是与关系型数据库交互的标准语言,下面我将分类介绍最重要的SQL语句及其用法。
一、数据查询语句(SELECT)
1. 基础查询
SELECT * FROM 表名;
-
查询表中所有数据
SELECT 列1, 列2 FROM 表名;
-
查询指定列的数据
2. 条件查询(WHERE)
SELECT * FROM 表名 WHERE 条件;
-
常用条件运算符:
=
,<>
,>
,<
,>=
,<=
,BETWEEN
,LIKE
,IN
-
示例:
-
SELECT * FROM 员工 WHERE 工资 > 5000; SELECT * FROM 产品 WHERE 类别 IN ('电子产品', '家居用品'); SELECT * FROM 客户 WHERE 姓名 LIKE '张%';
3. 排序(ORDER BY)
SELECT * FROM 表名 ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC];
-
ASC
升序(默认),DESC
降序 -
示例:
SELECT * FROM 员工 ORDER BY 工资 DESC;
4. 分组统计(GROUP BY)
SELECT 列1, 聚合函数(列2)
FROM 表名
GROUP BY 列1;
-
常用聚合函数:
COUNT()
,SUM()
,AVG()
,MAX()
,MIN()
-
示例
SELECT 部门, AVG(工资) FROM 员工 GROUP BY 部门;
5. 连接查询(JOIN)
SELECT a.列, b.列
FROM 表1 a
JOIN 表2 b ON a.关联列 = b.关联列;
-
连接类型:
-
INNER JOIN
(内连接):只返回匹配的行 -
LEFT JOIN
(左连接):返回左表所有行,右表不匹配则为NULL -
RIGHT JOIN
(右连接):返回右表所有行,左表不匹配则为NULL -
FULL JOIN
(全连接):返回所有行,不匹配则为NULL。
-
二、数据操作语句(DML)
1. 插入数据(INSERT)
INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);
示例:
INSERT INTO 员工 (姓名, 工资) VALUES ('张三', 8000);
2. 更新数据(UPDATE)
UPDATE 表名 SET 列1=值1, 列2=值2 WHERE 条件;
-
注意:不加WHERE条件会更新所有行!
-
示例:
UPDATE 员工 SET 工资=工资*1.1 WHERE 部门='技术部';
3. 删除数据(DELETE)
DELETE FROM 表名 WHERE 条件;
-
注意:不加WHERE条件会删除所有数据!
-
示例:
DELETE FROM 员工 WHERE 离职日期 IS NOT NULL;
三、数据定义语句(DDL)
1. 创建表(CREATE TABLE)
CREATE TABLE 表名 (
列1 数据类型 [约束],
列2 数据类型 [约束],
...
);
-
常用数据类型:
INT
,VARCHAR(n)
,DATE
,DECIMAL(m,n)
,BOOLEAN
等 -
常用约束:
PRIMARY KEY
,FOREIGN KEY
,NOT NULL
,UNIQUE
,DEFAULT
-
示例:
CREATE TABLE 员工 (
员工ID INT PRIMARY KEY,
姓名 VARCHAR(50) NOT NULL,
工资 DECIMAL(10,2),
部门ID INT,
FOREIGN KEY (部门ID) REFERENCES 部门(部门ID)
);
2. 修改表结构(ALTER TABLE)
ALTER TABLE 表名 ADD 列名 数据类型; -- 添加列
ALTER TABLE 表名 DROP COLUMN 列名; -- 删除列
ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型; -- 修改列
3. 删除表(DROP TABLE)
DROP TABLE 表名;
-
注意:这会删除表结构和所有数据!
四、高级SQL特性
1. 子查询
SELECT 列 FROM 表
WHERE 列 IN (SELECT 列 FROM 表 WHERE 条件);
示例:
SELECT 姓名 FROM 员工
WHERE 部门ID IN (SELECT 部门ID FROM 部门 WHERE 地点='北京');
2. 视图(VIEW)
CREATE VIEW 视图名 AS SELECT语句;
示例:
CREATE VIEW 高薪员工 AS
SELECT 姓名, 工资 FROM 员工 WHERE 工资 > 10000;
3. 索引(INDEX)
CREATE INDEX 索引名 ON 表名 (列);
-
提高查询性能
-
示例:
CREATE INDEX idx_员工姓名 ON 员工(姓名);
五、事务控制
BEGIN TRANSACTION; -- 开始事务
-- 执行SQL语句
COMMIT; -- 提交事务
-- 或
ROLLBACK; -- 回滚事务
这些是SQL中最重要和最常用的语句,掌握它们可以完成绝大多数数据库操作任务。实际应用中,不同数据库系统(MySQL, Oracle, SQL Server等)可能会有一些语法差异。