### 自己收藏的经典SQL语句
#### 数据库操作
**1. 创建数据库**
- **命令格式**: `CREATE DATABASE database-name;`
- **说明**: 此命令用于创建一个新的数据库。
- **示例**: `CREATE DATABASE myDatabase;`
**2. 删除数据库**
- **命令格式**: `DROP DATABASE dbname;`
- **说明**: 使用此命令可以删除一个已存在的数据库。
- **示例**: `DROP DATABASE myDatabase;`
**3. 备份数据库**
- **命令格式**:
- **设置备份设备**: `USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat';`
- **执行备份**: `BACKUP DATABASE pubs TO testBack;`
- **说明**: 上述命令首先设置了一个备份设备,然后对`pubs`数据库进行了备份。
#### 表操作
**4. 创建新表**
- **命令格式**: `CREATE TABLE tabname (col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ...);`
- **说明**: 此命令用于创建一个新的表,并定义其结构。
- **示例**: `CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);`
- **基于已有表创建新表**:
- **命令格式 A**: `CREATE TABLE tab_new LIKE tab_old;`
- **说明**: 此命令用于根据现有的表结构创建一个新的空表。
- **示例**: `CREATE TABLE new_employees LIKE employees;`
- **命令格式 B**: `CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY;`
- **说明**: 此命令仅复制表的定义,而不复制数据。
- **示例**: `CREATE TABLE new_employees AS SELECT id, name FROM employees DEFINITION ONLY;`
**5. 删除表**
- **命令格式**: `DROP TABLE tabname;`
- **说明**: 此命令用于删除指定的表。
- **示例**: `DROP TABLE employees;`
**6. 修改表**
- **增加一个列**
- **命令格式**: `ALTER TABLE tabname ADD COLUMN col type;`
- **说明**: 向现有表中添加新的列。
- **示例**: `ALTER TABLE employees ADD COLUMN email VARCHAR(50);`
- **添加主键**
- **命令格式**: `ALTER TABLE tabname ADD PRIMARY KEY (col);`
- **说明**: 为表添加主键约束。
- **示例**: `ALTER TABLE employees ADD PRIMARY KEY (id);`
- **删除主键**
- **命令格式**: `ALTER TABLE tabname DROP PRIMARY KEY;`
- **说明**: 删除表中的主键约束。
- **示例**: `ALTER TABLE employees DROP PRIMARY KEY;`
**7. 索引操作**
- **创建索引**
- **命令格式**: `CREATE [UNIQUE] INDEX idxname ON tabname (col...);`
- **说明**: 为表中的一个或多个列创建索引。
- **示例**: `CREATE UNIQUE INDEX emp_idx ON employees (id);`
- **删除索引**
- **命令格式**: `DROP INDEX idxname;`
- **说明**: 删除指定的索引。
- **示例**: `DROP INDEX emp_idx;`
**8. 视图操作**
- **创建视图**
- **命令格式**: `CREATE VIEW viewname AS SELECT statement;`
- **说明**: 基于一个或多个表的结果集创建视图。
- **示例**: `CREATE VIEW v_employees AS SELECT id, name FROM employees;`
- **删除视图**
- **命令格式**: `DROP VIEW viewname;`
- **说明**: 删除一个视图。
- **示例**: `DROP VIEW v_employees;`
#### 基本SQL语句
- **选择数据**
- **命令格式**: `SELECT * FROM table1 WHERE 范围;`
- **示例**: `SELECT * FROM employees WHERE id > 10;`
- **插入数据**
- **命令格式**: `INSERT INTO table1 (field1, field2) VALUES (value1, value2);`
- **示例**: `INSERT INTO employees (id, name) VALUES (1, 'John Doe');`
- **删除数据**
- **命令格式**: `DELETE FROM table1 WHERE 范围;`
- **示例**: `DELETE FROM employees WHERE id = 1;`
- **更新数据**
- **命令格式**: `UPDATE table1 SET field1=value1 WHERE 范围;`
- **示例**: `UPDATE employees SET name='Jane Doe' WHERE id = 1;`
- **查找数据**
- **命令格式**: `SELECT * FROM table1 WHERE field1 LIKE '%value1%';`
- **示例**: `SELECT * FROM employees WHERE name LIKE '%John%';`
- **排序数据**
- **命令格式**: `SELECT * FROM table1 ORDER BY field1, field2 [DESC];`
- **示例**: `SELECT * FROM employees ORDER BY name 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;`
#### 高级查询
**12. 运算词**
- **UNION 运算符**
- **命令格式**: `SELECT * FROM table1 UNION SELECT * FROM table2;`
- **示例**: `SELECT name FROM employees UNION SELECT name FROM managers;`
- **说明**: 返回两个查询结果中的唯一记录。
- **UNION ALL 运算符**: 包含所有记录,包括重复记录。
- **示例**: `SELECT name FROM employees UNION ALL SELECT name FROM managers;`
- **EXCEPT 运算符**
- **命令格式**: `SELECT * FROM table1 EXCEPT SELECT * FROM table2;`
- **示例**: `SELECT name FROM employees EXCEPT SELECT name FROM managers;`
- **说明**: 返回出现在第一个表中但不在第二个表中的记录。
- **EXCEPT ALL 运算符**: 不消除重复行。
- **示例**: `SELECT name FROM employees EXCEPT ALL SELECT name FROM managers;`
- **INTERSECT 运算符**
- **命令格式**: `SELECT * FROM table1 INTERSECT SELECT * FROM table2;`
- **示例**: `SELECT name FROM employees INTERSECT SELECT name FROM managers;`
- **说明**: 返回同时出现在两个表中的记录。
- **INTERSECT ALL 运算符**: 不消除重复行。
- **示例**: `SELECT name FROM employees INTERSECT ALL SELECT name FROM managers;`
以上是关于SQL的基础与高级操作的知识点,包括数据库的创建与删除、表的操作、索引管理、视图处理以及常见的数据操作命令等。这些知识点覆盖了SQL的核心功能,对于初学者来说是非常实用且重要的学习材料。通过理解这些命令和概念,可以有效地管理和操作数据库,满足不同场景下的需求。