根据提供的文件信息,本文将对其中提及的SQL知识点进行详细解释与补充,旨在为读者提供一个全面、深入的理解。以下是对各个SQL语句及其应用场景的详细介绍: ### 1. 创建数据库 ```sql CREATE DATABASE database-name; ``` 这条命令用于创建一个新的数据库。`database-name`是新数据库的名称。如果该数据库已经存在,则会报错。 ### 2. 删除数据库 ```sql DROP DATABASE dbname; ``` 这条命令用于删除一个已存在的数据库。需要注意的是,在执行此操作前,最好确保不再需要该数据库中的数据,因为一旦执行了`DROP DATABASE`命令,数据库及其所有内容都将被永久删除。 ### 3. SQL Server备份操作 #### 添加备份设备 ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` 这里使用`sp_addumpdevice`存储过程来添加一个备份设备,参数分别为: - `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]`: 指定列为表的主键。 #### 使用现有表结构创建新表 ```sql CREATE TABLE tab_new LIKE tab_old; ``` 这条命令使用已有表`tab_old`的结构来创建新表`tab_new`。 #### 使用SELECT语句创建新表 ```sql CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY; ``` 该命令基于`tab_old`表中的某些列(`col1`, `col2`)创建新表`tab_new`,但不包含实际数据。 ### 5. 删除表 ```sql DROP TABLE tabname; ``` 这条命令用于删除指定的表。 ### 6. 修改表 #### 添加列 ```sql ALTER TABLE tabname ADD COLUMN col type; ``` 该命令向表`tabname`中添加一个新列`col`。 #### 修改数据类型 对于`DB2`数据库,可以更改列的数据类型,但需要注意的是,不是所有的数据类型都可以直接修改,例如`VARCHAR`类型不能直接转换为其他类型。 ### 7. 添加/删除主键 #### 添加主键 ```sql ALTER TABLE tabname ADD PRIMARY KEY (col); ``` 该命令为表`tabname`的指定列`col`设置为主键。 #### 删除主键 ```sql ALTER TABLE tabname DROP PRIMARY KEY (col); ``` 该命令删除表`tabname`中的主键约束。 ### 8. 常用SQL操作 #### 查询 ```sql SELECT * FROM table1 WHERE 条件; ``` 这条命令用于从`table1`表中选择满足特定条件的所有记录。 #### 插入 ```sql INSERT INTO table1 (field1, field2) VALUES (value1, value2); ``` 这条命令用于向`table1`表中插入一条新记录。 #### 删除 ```sql DELETE FROM table1 WHERE 条件; ``` 该命令用于删除`table1`表中满足特定条件的所有记录。 #### 更新 ```sql UPDATE table1 SET field1 = value1 WHERE 条件; ``` 这条命令用于更新`table1`表中满足特定条件的记录。 #### 分组查询 ```sql SELECT COUNT(*) AS total_count FROM table1; ``` 这条命令返回`table1`表中的记录总数。 #### 聚合函数 ```sql SELECT SUM(field1) AS sum_value FROM table1; ``` 该命令返回`table1`表中`field1`列的总和。 ```sql SELECT AVG(field1) AS avg_value FROM table1; ``` 这条命令返回`table1`表中`field1`列的平均值。 ```sql SELECT MAX(field1) AS max_value FROM table1; ``` 该命令返回`table1`表中`field1`列的最大值。 ```sql SELECT MIN(field1) AS min_value FROM table1; ``` 这条命令返回`table1`表中`field1`列的最小值。 ### 9. 数据集合操作 #### UNION ```sql SELECT * FROM table1 UNION SELECT * FROM table2; ``` 该命令返回两个表(`table1`和`table2`)中所有不同的行。如果想要包含重复行,可以使用`UNION ALL`。 #### EXCEPT ```sql SELECT * FROM table1 EXCEPT SELECT * FROM table2; ``` 这条命令返回`table1`中但不在`table2`中的行。如果想要保留重复行,可以使用`EXCEPT ALL`。 #### INTERSECT ```sql SELECT * FROM table1 INTERSECT SELECT * FROM table2; ``` 该命令返回`table1`和`table2`中都存在的行。如果想要保留重复行,可以使用`INTERSECT ALL`。 ### 10. 外连接操作 #### 左外连接 ```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; ``` 左外连接返回左边表(`a`)的所有行,即使右边表(`b`)中没有匹配项也会显示。如果右边表中有匹配项,则显示匹配项,否则显示NULL。 #### 右外连接 ```sql SELECT * FROM a RIGHT OUTER JOIN b ON a.a = b.c; ``` 右外连接返回右边表(`b`)的所有行,即使左边表(`a`)中没有匹配项也会显示。如果左边表中有匹配项,则显示匹配项,否则显示NULL。 #### 全外连接 ```sql SELECT * FROM a FULL OUTER JOIN b ON a.a = b.c; ``` 全外连接返回左右两边表(`a`和`b`)中所有行的组合。如果在一边表中有匹配项而在另一边表中没有,则使用NULL填充缺失的值。 ### 11. 子查询 子查询是指在一个查询语句中嵌套另一个查询语句,通常用于更复杂的数据检索逻辑。 #### IN子查询 ```sql SELECT a, b, c FROM a WHERE a IN (SELECT d FROM b); ``` 这条命令从表`a`中选择满足条件`a`存在于表`b`的`d`列中的所有记录。 ### 12. 其他操作 #### 插入空记录 ```sql SELECT TOP 0 * INTO b FROM a; ``` 这条命令用于从表`a`中选择0条记录并插入到表`b`中,这样可以在表`b`中创建一个空的结构。 通过上述详细介绍,我们可以看到SQL语言的强大功能和灵活性。掌握了这些基本的SQL操作后,就能更加高效地管理和操作数据库中的数据。
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [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
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
剩余9页未读,继续阅读
- 粉丝: 0
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip