本资料汇集了多种实用且经过验证的SQL查询语句,涵盖数据操作、检索和管理等各个方面,旨在为数据库管理员及开发者提供便捷高效的参考。
本段落将对提供的文件中的SQL知识点进行详细解析。内容涵盖了创建数据库、创建表、删除表、清空表、修改表等基本操作,以及更复杂的查询语句、插入语句、更新语句和删除语句的使用方法。此外,还将介绍如何在SQL中创建索引与视图,并简述访问控制的相关知识。
### 一、创建数据库
#### 语法
```sql
CREATE DATABASE 数据库名;
```
#### 示例
```sql
CREATE DATABASE Gary;
```
该命令用于创建一个名为`Gary`的新数据库。如果该数据库已经存在,则会报错。为了确保不会覆盖已有的数据库,可以在创建时加上`IF NOT EXISTS`关键字:
```sql
CREATE DATABASE IF NOT EXISTS Gary;
```
### 二、创建表
#### 语法
```sql
CREATE TABLE <表名>(
<列名> <数据类型>[完整性约束条件],
...
);
```
在定义列的约束条件中,可以使用以下选项:
- `NULL`: 表示该字段允许空值。
- `NOT NULL`: 表示该字段不允许为空。
- `UNIQUE`: 确保每个记录在这个字段中的值都是唯一的。
这些约束条件可单独或组合使用,但不能出现相互矛盾的情况。例如`NULL`和`NOT NULL`不能同时出现在同一列定义中。
#### 示例
```sql
CREATE TABLE Student(
Id INT NOT NULL UNIQUE PRIMARY KEY,
Name VARCHAR(20) NOT NULL,
Age INT NULL,
Gender VARCHAR(4) NULL
);
```
此示例创建了一个名为`Student`的表,包含四个字段:`Id`, `Name`, `Age`和`Gender`. 其中`Id`为主键且唯一;`Name`不允许为空;而年龄(Age)与性别(Gender)允许为空。
### 三、删除表
#### 语法
```sql
DROP TABLE <表名>;
```
#### 示例
```sql
DROP TABLE Student;
```
这条命令用于移除名为`Student`的整个表格。执行后,该表及其所有数据将被永久性地从数据库中清除。
### 四、清空表
#### 语法
```sql
TRUNCATE TABLE <表名>;
```
#### 示例
```sql
TRUNCATE TABLE Student;
```
此命令用于删除`Student`表格中的全部记录。注意,执行该操作后数据无法恢复,请务必确认是否真的需要清除所有信息。
### 五、修改表
可以在已存在的表格中添加新列或更改现有字段的数据类型等属性:
#### 添加列
```sql
ALTER TABLE <表名>
ADD <新列名> <数据类型>[完整性约束条件];
```
#### 删除列
```sql
ALTER TABLE <表名>
DROP COLUMN <列名>;
```
#### 修改列的定义
```sql
ALTER TABLE <表名>
MODIFY COLUMN <字段名称> 新的数据类型 [新的完整性约束条件];
```
以上命令分别用于向`Student`表格中添加一个新列(如电话号码),移除该新增加的列,以及修改已有的电话号数据类型的长度。
### 六、SQL 查询语句
#### 语法
```sql
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…
FROM <表名或视图名>[,<表名或视图名>]…
[WHERE <条件表达式>]
[GROUP BY <列名> [HAVING <条件表达式>]]
[ORDER BY <列名> [ASC|DESC]…];
```
#### 示例
```sql
SELECT * FROM Student
WHERE Id > 10
GROUP BY Age
HAVING AVG(Age) > 20
ORDER BY Id DESC;
```
此查询从`Student`表中选择所有字段,其中条件是`Id`大于10。然后按年龄分组并计算每组的平均值,并筛选出那些具有超过20岁平均值的学生记录,最后按照ID降序排列结果。
### 七、SQL 插入语句
#### 语法
- 向表中插入新数据:
```sql
INSERT INTO <表名> [(字段名称[,字段名称]…)]
VALUES (常量[,常量]…);
```
- 将查询的数据插入到目标表格内:
```sql
INSERT INTO <表名> [(字段名称[,字段名称]…)]
SELECT 查询语句;
```
#### 示例
```sql
INSERT INTO Student(Id, Name,Age,Gender)
VALUES (49,Gary,30,男);
INSERT INTO Student(Name,Age,Gender)
SELECT Name,Age,Gender FROM AnotherTable;
```
第一条命令向`Student`表中插入一条新记录,第二条则将来自另一张表格的数据添加到