### SQL常用语法详解 #### 一、SQL简介与分类 SQL (Structured Query Language) 是一种用于管理和处理关系型数据库的标准编程语言。它被广泛应用于各种数据库管理系统中,如MySQL、Oracle、SQL Server等。SQL主要分为以下几个部分: 1. **DDL(Data Definition Language 数据定义语言)**:用于定义数据库结构,包括创建、修改和删除数据库对象,如表、视图等。 - `CREATE`:创建新的数据库或表。 - `ALTER`:修改现有的数据库或表。 - `DROP`:删除数据库或表。 - `DECLARE`:声明变量等。 2. **DML(Data Manipulation Language 数据操作语言)**:用于对数据库进行操作,如查询、插入、更新和删除数据。 - `SELECT`:从表中检索数据。 - `INSERT`:向表中插入新记录。 - `UPDATE`:更新表中的现有记录。 - `DELETE`:从表中删除记录。 3. **DCL(Data Control Language 数据控制语言)**:用于管理数据库的安全性和访问权限。 - `GRANT`:授予用户特定的权限。 - `REVOKE`:撤销用户之前被授予的权限。 - `COMMIT`:提交事务。 - `ROLLBACK`:回滚事务。 #### 二、基础语句详解 1. **创建数据库** ```sql CREATE DATABASE database-name; ``` 用于创建一个新的数据库。 2. **删除数据库** ```sql DROP DATABASE dbname; ``` 用于删除指定的数据库。 3. **备份数据库** - 创建备份设备: ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7\backupMyNwind_1.dat'; ``` - 开始备份: ```sql BACKUP DATABASE pubs TO testBack; ``` 4. **创建新表** ```sql CREATE TABLE tabname ( col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ... ); ``` 可以通过以下方式基于已有表创建新表: - 使用旧表创建新表: ```sql CREATE TABLE tab_new LIKE tab_old; ``` - 根据旧表的定义创建新表: ```sql 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 PRIMARY KEY (col); ``` 8. **创建/删除索引** - 创建索引: ```sql CREATE [UNIQUE] INDEX idxname ON tabname (col...); ``` - 删除索引: ```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 (1, 2); ``` - 删除: ```sql DELETE FROM table1 WHERE 条件; ``` - 更新: ```sql UPDATE table1 SET field1 = 1 WHERE 条件; ``` - 查找: ```sql SELECT * FROM table1 WHERE field1 LIKE '%1%'; ``` - 排序: ```sql SELECT * FROM table1 ORDER BY field1, field2 [DESC]; ``` - 总数: ```sql SELECT COUNT(*) AS totalcount FROM table1; ``` - 求和: ```sql SELECT SUM(field1) AS sum FROM table1; ``` - 平均值: ```sql SELECT AVG(field1) AS avg FROM table1; ``` - 最大值: ```sql SELECT MAX(field1) AS max FROM table1; ``` - 最小值: ```sql SELECT MIN(field1) AS min 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 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; ``` - **右外连接** (`RIGHT OUTER JOIN`): 返回右边表的所有行和左边表的匹配行。 - **全外连接** (`FULL OUTER JOIN`): 返回两边表的所有行,无论是否匹配。 以上内容涵盖了SQL的基础语法及常用操作,适用于初学者系统学习SQL语言。通过这些基础知识的学习,可以为后续深入研究和应用打下坚实的基础。
剩余40页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pyheif-0.8.0-cp311-cp311-win-amd64.whl.zip
- pyheif-0.8.0-cp310-cp310-win-amd64.whl.zip
- 基于51单片机万年历(程序源码、原理图、实验报告)-基于单片机的万年历设计
- 51单片机万年历(源码+实验报告).zip (高分大作业项目)
- 基于51单片机交通灯(程序源码、原理图、实验报告)-基于单片机的红绿灯设计
- 基于51单片机交通灯(源码、实验报告PDF、原理图等)-基于单片机的红绿灯设计
- vue-plugin-hiprint-vue3
- hitcrt_trainHowork-卡尔曼滤波
- WeiXinMPSDK-c#
- django-django