### SQL数据库期末复习备考必备知识点解析
#### 一、数据库操作基础
- **数据库的创建**
使用`CREATE DATABASE`语句来创建一个新的数据库。例如,在本例中创建了一个名为`stuManage`的数据库:
```sql
CREATE DATABASE stuManage;
```
- **表的创建**
创建表时需要指定表名以及表中的各个字段及其属性。例如,创建一个名为`department`的表:
```sql
USE stuManage; -- 指定在哪个数据库中执行操作
GO
CREATE TABLE department (
dNO VARCHAR(6) PRIMARY KEY, -- 部门编号
dName VARCHAR(50), -- 部门名称
dTel VARCHAR(20) -- 部门电话
);
```
- **数据插入**
使用`INSERT INTO`语句向表中插入数据。例如,向`department`表中插入一条记录:
```sql
USE stuManage;
INSERT INTO department (dNO, dName, dTel)
VALUES ('115500', '金融系', '02085560371');
```
- **数据修改**
使用`UPDATE`语句来更新已存在的记录。例如,将满足条件的教师的职称更新为“副教授”:
```sql
USE stuManage;
UPDATE teacher
SET tRank = '副教授'
WHERE tBirth > '1979/12/31';
```
- **数据删除**
使用`DELETE`语句来删除表中的记录。例如,删除名为“金融系”的部门记录:
```sql
USE stuManage;
DELETE FROM department
WHERE dName = '金融系';
```
- **数据库备份**
使用`BACKUP DATABASE`语句来备份整个数据库到指定位置。例如,备份`stuManage`数据库到硬盘上的某个路径:
```sql
BACKUP DATABASE stuManage
TO DISK = 'F:\DATA\HOMEWORK1\Manage.bak'
WITH FORMAT, NAME = '数据的完整备份';
```
#### 二、数据查询基础
- **基本查询**
使用`SELECT`语句进行数据查询。
- 查询特定专业的学生信息(学号、姓名、性别和出生年月):
```sql
SELECT sno, sname, ssex, sbirth
FROM student
WHERE mno = '100165';
```
- 查询职称不是“教授”的所有教师的信息:
```sql
SELECT *
FROM teacher
WHERE trank <> '教授';
```
- 查询不姓“陈”的学生学号和姓名:
```sql
SELECT sno, sname
FROM student
WHERE sname NOT LIKE '陈%';
```
- 查询特定专业中1991年之前出生的学生信息:
```sql
SELECT sno, sname, ssex, sbirth
FROM student
WHERE (mno = '100165') AND (sbirth < '1991/01/01');
```
- **高级查询**
使用更复杂的`SELECT`语句进行数据处理。
- 计算学生的年龄:
```sql
SELECT sno, sname, CAST((GETDATE() - sbirth) AS INT) / 365 AS 年龄
FROM student;
```
- 按照特定顺序排序查询结果:
```sql
SELECT sno, sname, Ssex, sbirth, mno
FROM student
ORDER BY mno, sbirth DESC;
```
- 查询某学生的各门课程成绩统计信息(平均分、最高分和最低分):
```sql
SELECT AVG(grade) AS 平均分, MAX(grade) AS 最高分, MIN(grade) AS 最低分
FROM skc
WHERE sno = '091650102';
```
- 查询成绩排名前三的学生及其成绩:
```sql
SELECT TOP 3 sno, grade
FROM skc
WHERE kno = '0901120001'
ORDER BY grade DESC;
```
- **条件查询**
使用`LIKE`和逻辑运算符进行条件筛选。
- 查询姓名中包含“秋”或以“张”开头的学生:
```sql
SELECT *
FROM student
WHERE sname LIKE '%秋%' OR sname LIKE '张%';
```
- **聚合函数与分组**
使用聚合函数和`GROUP BY`对查询结果进行汇总。
- 查询每门课程的成绩统计信息(平均分、最低分、最高分):
```sql
SELECT kno, MAX(grade), MIN(grade), AVG(grade)
FROM skc
GROUP BY kno;
```
- 查询平均分大于80分且至少选修了2门课程的学生学号:
```sql
SELECT student.sno, AVG(grade) AS 平均分
FROM student
JOIN skc ON student.sno = skc.sno
GROUP BY student.sno
HAVING AVG(grade) > 80 AND COUNT(*) >= 2;
```
#### 三、多表查询
- **联表查询**
使用`INNER JOIN`连接多个表。
- 查询每个学生的学号、姓名、性别、专业名称等信息:
```sql
SELECT sno, sname, ssex, mname, dname
FROM student s
INNER JOIN Major m ON s.mno = m.mno
INNER JOIN department d ON m.dno = d.dno;
```
以上知识点涵盖了SQL数据库操作的基础部分,包括创建数据库、创建表、数据的增删改查、备份恢复以及各种查询技巧。通过这些知识点的学习,可以帮助理解和掌握SQL语言的基本用法,并能够应对期末考试中的大部分题目。