### SQL经典语句详解 #### 一、概述 SQL(Structured Query Language)是一种用于管理关系数据库的标准语言。本文档旨在提供一系列SQL语句的详细解释,涵盖了从基本的数据定义到复杂的查询操作,适用于Microsoft SQL Server (Mssql) 和 Microsoft Access 数据库系统。请注意,文档中提到的部分SQL语句仅适用于SQL Server,对于Access数据库可能不适用。 #### 二、SQL语句分类 SQL语句通常被分为以下几类: 1. **DDL(Data Definition Language)** - 数据定义语言,用于定义数据库结构,如创建、修改和删除表或数据库。 2. **DML(Data Manipulation Language)** - 数据操作语言,用于操作数据,如插入、更新和删除记录。 3. **DCL(Data Control Language)** - 数据控制语言,用于管理权限和事务,如授予用户访问权限或回滚事务。 #### 三、基础语句详解 1. **创建数据库** ```sql CREATE DATABASE database-name; ``` 该语句用于创建新的数据库。`database-name` 是您希望创建的新数据库的名称。 2. **删除数据库** ```sql DROP DATABASE dbname; ``` 此语句用于删除现有的数据库。请谨慎使用此命令,因为它会永久删除数据库及其所有内容。 3. **备份SQL Server** ```sql -- 创建备份设备 USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; -- 开始备份 BACKUP DATABASE pubs TO testBack; ``` 这组语句用于创建备份设备并在该设备上执行数据库备份。请注意,这些命令专为SQL Server设计,并且在Access中不可用。 4. **创建新表** ```sql CREATE TABLE tabname ( col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ... ); ``` 该命令用于创建新的表。`tabname` 是新表的名称,`col1`、`col2`等是列名,`type1`、`type2`等是相应的数据类型。 使用现有表创建新表有两种方法: ```sql -- 方法A: 使用现有表结构创建新表 CREATE TABLE tab_new LIKE tab_old; -- 方法B: 使用SELECT语句定义新表结构 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中,添加列后不能更改其数据类型,只能增加VARCHAR类型的长度。 7. **添加/删除主键** 添加主键: ```sql ALTER TABLE tabname ADD PRIMARY KEY (col); ``` 删除主键: ```sql ALTER TABLE tabname DROP CONSTRAINT PK_tabname; ``` 8. **创建/删除索引** 创建索引: ```sql CREATE [UNIQUE] INDEX idxname ON tabname (col1, ...); ``` 删除索引: ```sql DROP INDEX idxname; ``` 索引一旦创建就不能更改,如果需要修改则需先删除再重新创建。 9. **创建/删除视图** 创建视图: ```sql CREATE VIEW viewname AS SELECT statement; ``` 删除视图: ```sql DROP VIEW viewname; ``` 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 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; ``` 11. **高级查询** - **UNION 运算符** ```sql SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; ``` `UNION` 返回两个查询结果中的唯一记录。如果使用 `UNION ALL`,则会返回所有记录,包括重复记录。 - **EXCEPT 运算符** ```sql SELECT column_name(s) FROM table1 EXCEPT SELECT column_name(s) FROM table2; ``` `EXCEPT` 返回在第一个查询中存在但在第二个查询中不存在的记录。使用 `EXCEPT ALL` 保留重复项。 - **INTERSECT 运算符** ```sql SELECT column_name(s) FROM table1 INTERSECT SELECT column_name(s) FROM table2; ``` `INTERSECT` 返回两个查询结果中都存在的记录。使用 `INTERSECT ALL` 不消除重复记录。 12. **外连接** - **LEFT OUTER JOIN (左连接)** ```sql SELECT a.a, a.b, a.c, b.c FROM table_a a LEFT OUTER JOIN table_b b ON a.common_field = b.common_field; ``` 左连接返回所有左侧表的记录以及右侧表匹配的记录。如果没有匹配,则右侧表的字段为空。 以上是对SQL语句的一个较为全面的总结,涵盖了从基本的数据定义到复杂的查询操作,希望能帮助您更好地理解和使用SQL语言。请注意,不同的数据库系统可能有不同的实现细节,请根据您使用的具体数据库版本进行调整。
- 粉丝: 7
- 资源: 876
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- bdwptqmxgj11.zip
- onnxruntime-win-x86
- onnxruntime-win-x64-gpu-1.20.1.zip
- vs2019 c++20 语法规范 头文件 <ratio> 的源码阅读与注释,处理分数的存储,加减乘除,以及大小比较等运算
- 首次尝试使用 Win,DirectX C++ 中的形状渲染套件.zip
- 预乘混合模式是一种用途广泛的三合一混合模式 它已经存在很长时间了,但似乎每隔几年就会被重新发现 该项目包括使用预乘 alpha 的描述,示例和工具 .zip
- 项目描述 DirectX 引擎支持版本 9、10、11 库 Microsoft SDK 功能相机视图、照明、加载网格、动画、蒙皮、层次结构界面、动画控制器、网格容器、碰撞系统 .zip
- 项目 wiki 文档中使用的代码教程的源代码库.zip
- 面向对象的通用GUI框架.zip
- 基于Java语言的PlayerBase游戏角色设计源码