《精妙SQL语句收集》
SQL(Structured Query Language)是一种用于管理关系数据库的标准语言,其强大之处在于能够高效地处理数据。以下是一些基础到高级的SQL语句及其应用场景,帮助你更好地理解和运用SQL。
1. **创建/删除数据库**:
- `CREATE DATABASE database-name` 用于创建一个新的数据库。
- `DROP DATABASE dbname` 用于删除指定的数据库。在执行此操作前,请确保数据已备份,因为删除操作不可逆。
2. **备份数据库**:
在SQL Server中,可以使用存储过程`sp_addumpdevice`来创建备份设备,如示例所示,然后使用`BACKUP DATABASE`命令对数据库进行备份。
3. **创建/删除表**:
- `CREATE TABLE tabname` 可以创建新的表格,并定义列的类型和约束。`NOT NULL`表示列不允许为空,`PRIMARY KEY`定义主键,确保数据的唯一性。
- `CREATE TABLE tab_new LIKE tab_old` 可以快速创建与现有表结构相同的空表。
- `CREATE TABLE AS SELECT` 仅根据查询结果创建新表,不包含数据。
- `DROP TABLE tabname` 用于删除表及其所有数据。
4. **修改表结构**:
- `ALTER TABLE tabname ADD COLUMN col type` 可以向已有表中添加列,但添加后列无法删除,且DB2中列的数据类型不可更改。
- `ALTER TABLE tabname ADD PRIMARY KEY(col)` 或 `DROP PRIMARY KEY(col)` 用于添加或删除主键。
5. **创建/删除索引**:
- `CREATE INDEX idxname ON tabname(col...)` 创建索引,提高查询速度。`UNIQUE`表示索引中的值不能重复。
- `DROP INDEX idxname` 删除索引,一旦创建,索引无法直接修改,需删除后重建。
6. **创建/删除视图**:
- `CREATE VIEW viewname AS SELECT statement` 创建视图,视图是基于查询的结果集。
- `DROP VIEW viewname` 删除视图。
7. **基本SQL查询**:
- `SELECT * FROM table1 WHERE X` 选择满足条件的行。
- `INSERT INTO table1(field1,field2) VALUES(value1,value2)` 插入新记录。
- `DELETE FROM table1 WHERE X` 删除满足条件的记录。
- `UPDATE table1 SET field1=value1 WHERE X` 更新满足条件的记录。
- `SELECT * FROM table1 WHERE field1 LIKE '%value1%'` 使用LIKE进行模糊搜索。
- `ORDER BY` 用于排序结果,`DESC`表示降序。
- `COUNT(*)`, `SUM(field1)`, `AVG(field1)`, `MAX(field1)`, `MIN(field1)` 分别用于计算总数、求和、平均值、最大值和最小值。
8. **高级查询**:
- `UNION` 运算符用于合并两个或更多`SELECT`语句的结果,去除重复行。
- `INTERSECT` 返回在所有`SELECT`语句中都存在的行,无重复。
- `EXCEPT` 返回在第一个`SELECT`中存在但在第二个`SELECT`中不存在的行。
9. **子查询**:
子查询可以在`SELECT`, `FROM`, `WHERE`等部分嵌套使用,用于更复杂的查询逻辑。
10. **连接查询**:
- `JOIN` 语句用于连接两个或更多表,基于它们之间的关联。
11. **分组与聚合**:
- `GROUP BY` 用于根据一个或多个列对结果进行分组。
- `HAVING` 与`WHERE`类似,但用于过滤`GROUP BY`后的结果。
12. **窗口函数**:
- 窗口函数如`RANK()`, `ROW_NUMBER()`, `LEAD()`, `LAG()`等,允许在数据集上进行更复杂的分析,如排名、计算差异等。
这些SQL语句构成了SQL语言的基础,熟练掌握它们将极大地提高你在数据库管理中的效率和灵活性。不断实践和学习,你将能够应对各种复杂的数据处理需求。