"这篇文档是关于SQL数据库基础语句的学习指南,涵盖了从入门到进阶的各种操作,包括数据定义、操作、查询和控制语言。它适用于SQL初学者和开发人员作为参考材料。"
**SQL基础知识**
SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。它允许用户执行多种操作,如查询、创建、更新和删除数据,以及管理数据库的权限。
**数据定义语言(DDL)**
DDL用于创建和修改数据库结构。包括以下语句:
1. **CREATE** - 创建数据库、表、视图或索引。
2. **DROP** - 删除数据库、表或其他对象。
3. **ALTER** - 修改已存在的数据库对象结构,如增加、删除或修改列。
**数据操作语言(DML)**
DML处理数据库中的数据:
1. **INSERT** - 向表中插入新记录。
2. **UPDATE** - 修改现有记录的数据。
3. **DELETE** - 从表中删除记录。
**数据查询语言(DQL)**
DQL用于检索数据:
1. **SELECT** - 查询表中的数据,可结合`DISTINCT`去除重复行,`WHERE`进行条件过滤,`ORDER BY`对结果排序。
**数据控制语言(DCL)**
DCL管理数据库的访问权限和事务:
1. **GRANT** - 授予用户或角色特定的权限。
2. **REVOKE** - 撤销已授予的权限。
3. **COMMIT** - 提交事务,永久保存更改。
4. **ROLLBACK** - 回滚事务,撤销所有更改。
**进阶SQL概念**
- **TOP** - 限制返回结果的数量,常用于分页。
- **LIKE** 和 **通配符** - 在查询中进行模式匹配,如 `%` 表示任意数量的字符,`_` 表示单个字符。
- **IN** - 检查值是否在指定列表内。
- **BETWEEN** - 选择介于两个值之间的数据。
- **JOIN** - 结合来自多个表的数据,如:
- **INNER JOIN** - 只返回两个表中匹配的记录。
- **LEFT JOIN** - 返回左表的所有记录,即使右表无匹配项。
- **RIGHT JOIN** - 返回右表的所有记录,即使左表无匹配项。
- **FULL JOIN** - 返回两个表中所有记录,无论是否有匹配项。
- **UNION** - 合并多个SELECT查询的结果。
- **SELECT INTO** - 将查询结果创建为新表。
- **Constraints** - 用于确保数据的完整性和一致性,如:
- **NOT NULL** - 确保字段不为空。
- **UNIQUE** - 确保字段中的值唯一。
- **PRIMARY KEY** - 定义唯一标识记录的字段。
- **FOREIGN KEY** - 引用另一个表的主键,实现关联。
- **CHECK** - 设定字段值的条件。
- **DEFAULT** - 设置字段的默认值。
- **INDEX** - 提高查询性能的结构,可通过`CREATE INDEX`创建。
**日期和NULL处理**
- **DATE** 类型用于存储日期和时间数据。
- **NULLS** - SQL允许值为NULL,表示未知或未定义。
- **ISNULL()** - 检查值是否为NULL。
**数据类型**
SQL支持多种数据类型,如数值型(INT, FLOAT等)、字符串型(VARCHAR, CHAR等)、日期时间型(DATE, DATETIME等)等。
**函数**
SQL提供了丰富的内置函数用于数据处理,如:
- **AVG()** - 计算平均值。
- **COUNT()** - 统计记录数。
- **MAX()** 和 **MIN()** - 查找最大值和最小值。
- **SUM()** - 计算总和。
- **GROUP BY** - 对数据进行分组。
- **HAVING** - 在GROUP BY后过滤数据。
- **UCASE()**, **LCASE()** - 转换字符串为大写或小写。
- **MID()** - 提取字符串的一部分。
- **LEN()** - 获取字符串长度。
- **ROUND()** - 四舍五入数值。
- **NOW()** - 获取当前日期和时间。
- **FORMAT()** - 格式化日期和数字输出。
**总结**
SQL是强大的数据库语言,涵盖数据的定义、操作、查询和控制,且其语法在各种数据库系统中虽有差异,但基本概念和关键语句保持一致。通过学习和实践,开发者能够有效地管理和操作数据库。