根据给定的信息,本文将对经典SQL语句进行详细的解读与总结,以便更好地理解这些基本且重要的数据库操作命令。在数据库管理和数据处理中,SQL(Structured Query Language,结构化查询语言)是必不可少的一种工具,它提供了创建、读取、更新和删除数据的能力。
### 一、创建数据库
#### SQL语句
```sql
CREATE DATABASE database-name;
```
#### 解释
此命令用于创建一个新的数据库。`database-name`是新数据库的名字。
### 二、删除数据库
#### SQL语句
```sql
DROP DATABASE dbname;
```
#### 解释
这条语句用于删除一个已存在的数据库。需要注意的是,一旦执行该命令,数据库及其所有内容都将被永久删除。
### 三、备份数据库
#### SQL语句
```sql
-- 添加备份设备
USE master;
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat';
-- 开始备份
BACKUP DATABASE pubs TO testBack;
```
#### 解释
通过`sp_addumpdevice`存储过程添加一个备份设备,这里指定了备份的类型为磁盘,并给出了备份文件的路径。接着使用`BACKUP DATABASE`命令将数据库`pubs`的数据备份到之前定义的备份设备上。
### 四、创建表
#### SQL语句
```sql
CREATE TABLE tabname (col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ...);
```
#### 解释
此命令用于创建一张新的表。`tabname`是表名,`col1`和`col2`等表示列名,`type1`和`type2`等表示列的数据类型。`NOT NULL`表示该列不允许为空,`PRIMARY KEY`表示该列为表的主键。
### 五、删除表
#### SQL语句
```sql
DROP TABLE tabname;
```
#### 解释
这条命令用于删除指定的表。
### 六、添加列
#### SQL语句
```sql
ALTER TABLE tabname ADD COLUMN col type;
```
#### 解释
此命令用于向现有的表中添加一列。
### 七、添加/删除主键
#### SQL语句
```sql
ALTER TABLE tabname ADD PRIMARY KEY (col);
ALTER TABLE tabname DROP PRIMARY KEY (col);
```
#### 解释
第一条命令用于向表中添加主键,第二条命令用于删除表中的主键。
### 八、基本的SQL操作
#### SQL语句
```sql
-- 查询
SELECT * FROM table1 WHERE 条件;
-- 插入
INSERT INTO table1 (field1, field2) VALUES (value1, value2);
-- 删除
DELETE FROM table1 WHERE 条件;
-- 更新
UPDATE table1 SET field1 = value1 WHERE 条件;
-- 模糊查询
SELECT * FROM table1 WHERE field1 LIKE '%value1%';
-- 排序
SELECT * FROM table1 ORDER BY field1, field2 [DESC];
-- 计数
SELECT COUNT(*) AS totalCount FROM table1;
-- 求和
SELECT SUM(field1) AS sumValue FROM table1;
-- 平均值
SELECT AVG(field1) AS avgValue FROM table1;
-- 最大值
SELECT MAX(field1) AS maxValue FROM table1;
-- 最小值
SELECT MIN(field1) AS minValue FROM table1;
```
#### 解释
这些是最常见的SQL操作,包括查询、插入、删除、更新等。`WHERE`子句用于指定查询条件;`LIKE`用于模糊匹配查询;`ORDER BY`用于排序结果集;聚合函数如`COUNT`、`SUM`、`AVG`、`MAX`和`MIN`用于对数据进行统计分析。
### 九、集合运算
#### SQL语句
```sql
-- UNION
SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2;
-- EXCEPT
SELECT * FROM TABLE1 EXCEPT SELECT * FROM TABLE2;
-- INTERSECT
SELECT * FROM TABLE1 INTERSECT SELECT * FROM TABLE2;
```
#### 解释
`UNION`返回两个查询结果集的并集,并自动去重;`EXCEPT`返回第一个查询结果集中不在第二个查询结果集中的行;`INTERSECT`返回两个查询结果集的交集。
### 十、连接操作
#### SQL语句
```sql
-- 左外连接
SELECT a.a, a.b, a.c, b.c, b.d, b.f
FROM a LEFT OUTER JOIN b ON a.a = b.c;
-- 右外连接
SELECT a.a, a.b, a.c, b.c, b.d, b.f
FROM a RIGHT OUTER JOIN b ON a.a = b.c;
-- 全外连接
SELECT a.a, a.b, a.c, b.c, b.d, b.f
FROM a FULL OUTER JOIN b ON a.a = b.c;
```
#### 解释
外连接允许返回两个表中不匹配的行。左外连接返回左侧表的所有行及右侧表匹配的行,右外连接反之,全外连接则返回两个表的所有行。
### 十一、分组与聚合
#### SQL语句
```sql
SELECT column1, COUNT(column2) AS count_column2
FROM table
GROUP BY column1
HAVING COUNT(column2) > 10;
```
#### 解释
`GROUP BY`子句用于按一个或多个列对结果集进行分组,可以结合聚合函数一起使用。`HAVING`子句用于筛选满足特定条件的分组。
### 十二、分离与附加数据库
#### SQL语句
```sql
-- 分离数据库
sp_detach_db;
-- 附加数据库
sp_attach_db;
```
#### 解释
`sp_detach_db`和`sp_attach_db`分别用于分离和附加数据库。分离数据库会从SQL Server实例中移除数据库文件,但不会删除文件本身;附加数据库则是将数据库文件重新连接到SQL Server实例。
### 十三、重命名数据库
#### SQL语句
```sql
sp_renamedb 'old_name', 'new_name';
```
#### 解释
此命令用于更改现有数据库的名称。
以上总结了经典SQL语句中的一些核心知识点,这些命令在日常的数据库管理工作中非常常见,熟练掌握它们对于提高工作效率至关重要。