### 经典SQL语句大全知识点详解 #### 一、基础操作 **1. 创建数据库** ```sql CREATE DATABASE database-name; ``` - **描述**:用于创建一个新的数据库。 - **参数**:`database-name`表示要创建的数据库名称。 **2. 删除数据库** ```sql DROP DATABASE dbname; ``` - **描述**:用于删除指定的数据库。 - **参数**:`dbname`表示要删除的数据库名称。 **3. 备份SQL Server数据库** - **创建备份设备**: ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` - **描述**:用于创建一个用于备份的设备。 - **参数**:`'disk'`表示设备类型为磁盘;`'testBack'`是备份设备的名字;`'c:\mssql7backup\MyNwind_1.dat'`是备份文件的具体路径。 - **执行备份**: ```sql BACKUP DATABASE pubs TO testBack; ``` - **描述**:用于对数据库进行备份。 - **参数**:`pubs`是要备份的数据库名称;`testBack`是上一步创建的备份设备名称。 **4. 创建新表** ```sql CREATE TABLE tabname (col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ...); ``` - **描述**:用于创建新的表,并定义每个列的数据类型以及是否允许为空。 - **参数**:`tabname`是表名;`col1`、`col2`等是列名;`type1`、`type2`等是数据类型;`NOT NULL`表示不允许为空;`PRIMARY KEY`表示该列为表的主键。 **5. 根据已有表创建新表** - **方法A**:使用`LIKE`关键字来创建新表,新表结构与原表相同但无数据。 ```sql CREATE TABLE tab_new LIKE tab_old; ``` - **描述**:用于创建一个与原表结构相同的空表。 - **方法B**:通过`SELECT`语句定义表结构和数据。 ```sql CREATE TABLE tab_new AS SELECT col1, col2, ... FROM tab_old; ``` - **描述**:用于创建一个包含指定列的新表,并填充原表中的数据。 **6. 删除表** ```sql DROP TABLE tabname; ``` - **描述**:用于删除指定的表。 - **参数**:`tabname`是要删除的表名。 **7. 增加列** ```sql ALTER TABLE tabname ADD COLUMN col type; ``` - **描述**:用于向现有表中添加新列。 - **参数**:`tabname`是表名;`col`是新列名;`type`是新列的数据类型。 **注意事项**:在某些数据库系统如DB2中,列一旦增加后将无法删除。此外,数据类型也不能改变,除非是增加`VARCHAR`类型的长度。 **8. 添加/删除主键** - **添加主键**: ```sql ALTER TABLE tabname ADD PRIMARY KEY (col); ``` - **描述**:用于向表中添加主键。 - **参数**:`tabname`是表名;`col`是设置为主键的列名。 - **删除主键**: ```sql ALTER TABLE tabname DROP PRIMARY KEY (col); ``` - **描述**:用于删除表中的主键。 - **参数**:`tabname`是表名;`col`是主键对应的列名。 **9. 创建/删除索引** - **创建索引**: ```sql CREATE [UNIQUE] INDEX idxname ON tabname (col1, ..., colN); ``` - **描述**:用于创建索引,可以指定索引是否唯一。 - **参数**:`idxname`是索引名;`tabname`是表名;`col1`, `..., colN`是索引所基于的一个或多个列。 - **删除索引**: ```sql DROP INDEX idxname; ``` - **描述**:用于删除指定的索引。 - **参数**:`idxname`是索引名。 **注意事项**:索引创建后不可更改,若需修改则需先删除再重建。 **10. 创建/删除视图** - **创建视图**: ```sql CREATE VIEW viewname AS SELECT statement; ``` - **描述**:用于创建视图,视图基于一个或多个表的结果集。 - **参数**:`viewname`是视图名称;`SELECT statement`是定义视图的查询语句。 - **删除视图**: ```sql DROP VIEW viewname; ``` - **描述**:用于删除指定的视图。 - **参数**:`viewname`是视图名称。 **11. 基本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%'; ``` - **描述**:`LIKE`关键字用于模式匹配,其中`%`代表零个或多个任意字符。 - **排序**: ```sql SELECT * FROM table1 ORDER BY field1, field2 [DESC]; ``` - **描述**:`ORDER BY`用于对结果集进行排序,默认升序,`DESC`表示降序。 - **聚合函数** - **总数**: ```sql SELECT COUNT(*) AS total_count FROM table1; ``` - **求和**: ```sql SELECT SUM(field1) AS sum_value FROM table1; ``` - **平均值**: ```sql SELECT AVG(field1) AS avg_value FROM table1; ``` - **最大值**: ```sql SELECT MAX(field1) AS max_value FROM table1; ``` - **最小值**: ```sql SELECT MIN(field1) AS min_value FROM table1; ``` **12. 高级查询运算词** - **UNION运算符** ```sql SELECT column_name(s) FROM table1 UNION [ALL] SELECT column_name(s) FROM table2; ``` - **描述**:`UNION`用于合并两个或更多`SELECT`语句的结果集,且结果集中会自动去除重复的行。如果希望保留所有行(包括重复行),可以在`UNION`后面加上`ALL`。 - **EXCEPT运算符** ```sql SELECT column_name(s) FROM table1 EXCEPT [ALL] SELECT column_name(s) FROM table2; ``` - **描述**:`EXCEPT`用于返回在第一个`SELECT`语句结果集中出现但不在第二个`SELECT`语句结果集中的行。如果希望保留所有行(包括重复行),可以在`EXCEPT`后面加上`ALL`。 - **INTERSECT运算符** ```sql SELECT column_name(s) FROM table1 INTERSECT [ALL] SELECT column_name(s) FROM table2; ``` - **描述**:`INTERSECT`用于返回同时出现在两个`SELECT`语句结果集中的行。如果希望保留所有行(包括重复行),可以在`INTERSECT`后面加上`ALL`。 **注意事项**:使用这些运算符时,确保所有`SELECT`语句返回的列数量和类型相同。 **13. 使用外连接** - **LEFT (OUTER) JOIN** ```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; ``` - **描述**:左外连接(左连接)返回所有左表中的行,即使右表中没有匹配的行也会显示,未匹配的右表列用NULL填充。 - **RIGHT (OUTER) JOIN** ```sql SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a RIGHT OUTER JOIN b ON a.a = b.c; ``` - **描述**:右外连接(右连接)返回所有右表中的行,即使左表中没有匹配的行也会显示,未匹配的左表列用NULL填充。 - **FULL/CROSS (OUTER) JOIN** ```sql SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a FULL OUTER JOIN b ON a.a = b.c; ``` - **描述**:全外连接返回左表和右表中所有的行,无论是否有匹配。 **14. 分组:GROUP BY** ```sql SELECT column_name, COUNT(column_name) FROM table_name GROUP BY column_name; ``` - **描述**:`GROUP BY`子句用于结合聚合函数(如COUNT, SUM, AVG, MAX, MIN)来对结果集进行分组。 - **参数**:`column_name`是用于分组的列名。 以上是SQL语言中的一些基础和高级操作,掌握了这些知识点可以帮助你在实际工作中更高效地管理和操作数据。
- 粉丝: 43
- 资源: 45
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助