sql语法学习 sql各种语法 sql增删改查 数据库各种操作 数据库指令
sql语法学习 sql各种语法 sql增删改查 数据库各种操作 数据库指令
学习SQL语法时,理解其基本结构和用法是关键。下面是SQL语法的详细学习指南,涵盖了SQL的主要部分,包括查询、插入、更新、删除、表操作等。
1. 基本查询语法
SQL 的查询语句主要使用 SELECT 语句,从数据库中提取数据。
1.1. SELECT 查询
SELECT column1, column2, ...
FROM table_name;
示例:
SELECT name, age FROM students;
1.2. SELECT ALL 与 DISTINCT
ALL 是默认的,返回所有行,包括重复行。
DISTINCT 用于消除重复行,只返回唯一的结果。
SELECT DISTINCT column1 FROM table_name;
1.3. WHERE 子句
用于筛选符合条件的记录。
SELECT column1, column2
FROM table_name
WHERE condition;
示例:
SELECT name, age
FROM students
WHERE age > 18;
1.4. 逻辑运算符
=: 等于
<> 或 !=: 不等于
>: 大于
<: 小于
>=: 大于等于
<=: 小于等于
BETWEEN: 在两个值之间
IN: 在指定的集合中
LIKE: 模糊匹配
AND、OR、NOT: 逻辑运算符
示例:
SELECT *
FROM students
WHERE age >= 18 AND name LIKE 'A%';
2. 数据排序 (ORDER BY)
使用 ORDER BY 对查询结果进行排序,默认是升序。
SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC];
示例:
SELECT name, age
FROM students
ORDER BY age DESC;
3. 聚合函数
COUNT(): 计算记录数量
SUM(): 计算总和
AVG(): 计算平均值
MAX(): 最大值
MIN(): 最小值
示例:
SELECT COUNT(*) AS total_students
FROM students;
4. GROUP BY 子句
将数据按某列分组,并结合聚合函数使用。
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;
示例:
SELECT age, COUNT(*)
FROM students
GROUP BY age;
5. HAVING 子句
HAVING 类似于 WHERE,但用于过滤聚合后的数据。
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1
HAVING COUNT(*) > 1;
6. 连接 (JOIN)
用于从多个表中获取数据,最常用的连接方式有内连接、外连接、左连接、右连接。
6.1. INNER JOIN (内连接)
只返回两个表中匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b
ON a.common_field = b.common_field;
6.2. LEFT JOIN (左连接)
返回左表的所有记录,即使右表中没有匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
LEFT JOIN table2 b
ON a.common_field = b.common_field;
6.3. RIGHT JOIN (右连接)
返回右表的所有记录,即使左表中没有匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
RIGHT JOIN table2 b
ON a.common_field = b.common_field;
6.4. FULL JOIN (全连接)
返回两个表中所有匹配和不匹配的记录。
SELECT a.column1, b.column2
FROM table1 a
FULL JOIN table2 b
ON a.common_field = b.common_field;
7. 子查询 (Subqueries)
子查询是在一个 SQL 语句中嵌套另一个查询。
SELECT column1
FROM table_name
WHERE column2 = (SELECT MAX(column2) FROM table_name2);
8. 插入数据 (INSERT INTO)
向表中插入新的记录。
8.1. 基本插入
INSERT INTO table_name (column1, column2, …)
VALUES (value1, value2, …);
示例:
INSERT INTO students (name, age)
VALUES ('John', 22);
8.2. 插入多个值
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...), (value3, value4, ...);
9. 更新数据 (UPDATE)
用于修改表中的现有记录。
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
示例:
UPDATE students
SET age = 23
WHERE name = 'John';
10. 删除数据 (DELETE)
用于删除表中的记录。
DELETE FROM table_name
WHERE condition;
示例:
DELETE FROM students
WHERE age < 18;
11. 创建表 (CREATE TABLE)
创建一个新表。
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
…
);
示例:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
12. 修改表结构 (ALTER TABLE)
修改现有表的结构,比如添加、删除列等。
12.1. 添加列
ALTER TABLE table_name
ADD column_name datatype;
12.2. 删除列
ALTER TABLE table_name
DROP COLUMN column_name;
12.3. 修改列的数据类型
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
13. 删除表 (DROP TABLE)
删除整个表以及表中的所有数据。
DROP TABLE table_name;
14. 事务 (TRANSACTIONS)
事务确保一系列操作要么全部成功,要么全部失败。
14.1. 开启事务
START TRANSACTION;
14.2. 提交事务
COMMIT;
14.3. 回滚事务
ROLLBACK;
15. 索引 (INDEX)
索引用于提高数据库查询的效率。
CREATE INDEX index_name
ON table_name (column1, column2, ...);
16. 视图 (VIEW)
视图是基于 SQL 查询结果的虚拟表。
CREATE VIEW view_name AS
SELECT column1, column2
FROM table_name
WHERE condition;
17. 常见的SQL数据类型
17.1. 数值类型
INT、INTEGER: 整数
FLOAT、DOUBLE: 浮点数
DECIMAL: 精确小数
17.2. 字符串类型
CHAR: 固定长度字符串
VARCHAR: 可变长度字符串
TEXT: 大文本
17.3. 日期和时间类型
DATE: 日期(YYYY-MM-DD)
TIME: 时间(HH:MI
)
DATETIME: 日期和时间(YYYY-MM-DD HH:MI)