###经典SQL语句详解####一、数据库操作**1.创建数据库**创建数据库是最基本的数据库管理操作之一。使用以下SQL语句可以创建一个名为`database-name`的新数据库: ```sql CREATE DATABASE database-name; ``` **2.删除数据库**删除数据库将永久删除所有与该数据库相关的数据和结构。此操作需谨慎执行: ```sql DROP DATABASE dbname; ``` ####二、数据表操作**3.备份SQL Server数据库**备份数据库对于数据安全至关重要。以下是在SQL Server中创建设备并进行数据库备份的步骤: ```sql --创建备份设备USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'; --开始备份BACKUP DATABASE pubs TO testBack; ``` **4.创建新表**创建新表时,可以通过指定列名和数据类型来定义表结构。如果希望根据现有表创建新表,有两种方法: ```sql --使用旧表结构创建新表CREATE TABLE tab_new LIKE tab_old; --使用旧表的定义创建新表CREATE TABLE tab_new AS SELECT col1, col2... FROM tab_old DEFINITION ONLY; ``` **5.删除表**删除表将移除其所有数据和结构: ```sql DROP TABLE tabname; ``` **6.修改表结构** - **增加列**:在现有表中添加新列。 ```sql ALTER TABLE tabname ADD COLUMN col type; ```注意:在某些数据库系统中,如DB2,列一旦添加便无法删除,且数据类型更改受限。 - **添加主键**:为主键列设置唯一约束。 ```sql ALTER TABLE tabname ADD PRIMARY KEY (col); ``` - **删除主键**:移除主键约束。 ```sql ALTER TABLE tabname DROP PRIMARY KEY (col); ``` **7.索引管理** - **创建索引**:提高查询效率。 ```sql CREATE [UNIQUE] INDEX idxname ON tabname (col...); ``` - **删除索引**:移除索引,减少维护成本。 ```sql DROP INDEX idxname; ``` **8.视图操作** - **创建视图**:封装复杂查询,简化数据访问。 ```sql CREATE VIEW viewname AS SELECT statement; ``` - **删除视图**:移除视图定义。 ```sql DROP VIEW viewname; ``` ####三、数据操作语言(DML) **10.基本SQL语句** - **选择**:根据条件检索数据。 ```sql SELECT * FROM table1 WHERE范围; ``` - **插入**:向表中添加新行。 ```sql INSERT INTO table1 (field1, field2) VALUES (value1, value2); ``` - **删除**:基于条件移除数据行。 ```sql DELETE FROM table1 WHERE范围; ``` - **更新**:修改现有数据。 ```sql UPDATE table1 SET field1 = value1 WHERE范围; ``` - **查找**:模糊匹配数据。 ```sql SELECT * FROM table1 WHERE field1 LIKE '%value1%'; ``` - **排序**:按特定顺序返回结果。 ```sql SELECT * FROM table1 ORDER BY field1, field2 [DESC]; ``` - **聚合函数**:计算统计数据。 ```sql SELECT COUNT(*) as total_count FROM table1; SELECT SUM(field1) as sum_value FROM table1; SELECT AVG(field1) as avg_value FROM table1; SELECT MAX(field1) as max_value FROM table1; SELECT MIN(field1) as min_value FROM table1; ``` ####四、高级查询**11.高级查询运算词** - **UNION**:合并两个或多个查询的结果,去除重复行。 ```sql SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; ``` - **EXCEPT**:返回在第一个查询中出现但在第二个查询中未出现的行。 ```sql SELECT column_name(s) FROM table1 EXCEPT SELECT column_name(s) FROM table2; ``` - **INTERSECT**:返回在两个或多个查询中都出现的行。 ```sql SELECT column_name(s) FROM table1 INTERSECT SELECT column_name(s) FROM table2; ``` **12.使用外连接** - **LEFT JOIN**:返回左表中所有行,即使右表中没有匹配。 ```sql SELECT a.a, a.b, a.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c; ``` - **RIGHT JOIN**:返回右表中所有行,即使左表中没有匹配。 ```sql SELECT a.a, a.b, a.c, b.d, b.f FROM a RIGHT OUTER JOIN b ON a.a = b.c; ``` - **FULL JOIN**:返回两个表中所有行,包括匹配和不匹配的行。 **12.分组查询:GROUP BY**使用`GROUP BY`子句对结果集进行分组,并应用聚合函数计算每个组的统计信息。例如,计算每个部门的员工数量: ```sql SELECT department, COUNT(*) as num_employees FROM employees GROUP BY department; ```以上涵盖了从基础到高级的SQL语句,是数据库管理和数据分析的强大工具。理解和掌握这些语句对于高效地进行数据库操作至关重要。