SQL上机考试(答案).docx
SQL上机考试(答案)
问题1:创建数据库和表
题目:创建一个名为`school`的数据库,并在该数据库中创建两个表:`students`和`teachers`。
```sql
创建数据库
CREATEDATABASEschool;
使用数据库
USEschool;
创建学生表
CREATETABLEstudents(
idINTAUTO_INCREMENTPRIMARYKEY,
nameVARCHAR(50)NOTNULL,
ageINTNOTNULL,
genderENUM(M,F)NOTNULL,
class_idINTNOTNULL
);
创建教师表
CREATETABLEteachers(
idINTAUTO_INCREMENTPRIMARYKEY,
nameVARCHAR(50)NOTNULL,
ageINTNOTNULL,
subjectVARCHAR(50)NOTNULL
);
```
问题2:插入数据
题目:向`students`表和`teachers`表中插入数据。
```sql
向学生表插入数据
INSERTINTOstudents(name,age,gender,class_id)VALUES
(Alice,20,F,1),
(Bob,21,M,1),
(Charlie,22,M,2),
(Diana,20,F,2);
向教师表插入数据
INSERTINTOteachers(name,age,subject)VALUES
(Mr.Smith,40,Mathematics),
(Ms.Johnson,35,English),
(Mrs.Lee,45,Science);
```
问题3:查询数据
题目:编写SQL查询语句,满足以下要求:
1.查询所有学生的姓名和年龄。
2.查询所有教授数学的教师姓名和年龄。
```sql
查询所有学生的姓名和年龄
SELECTname,ageFROMstudents;
查询所有教授数学的教师姓名和年龄
SELECTname,ageFROMteachersWHEREsubject=Mathematics;
```
问题4:更新数据
题目:更新`students`表中年龄大于21岁的学生年龄加1。
```sql
UPDATEstudentsSETage=age+1WHEREage21;
```
问题5:删除数据
题目:删除`teachers`表中年龄大于45岁的教师记录。
```sql
DELETEFROMteachersWHEREage45;
```
问题6:连接查询
题目:查询学生的姓名、年龄和他们所在班级的教师姓名。
```sql
SELECTs.nameASstudent_name,s.age,t.nameASteacher_name
FROMstudentss
JOINteacherstONs.class_id=t.id;
```
问题7:子查询
题目:查询年龄大于平均年龄的学生的姓名和年龄。
```sql
SELECTname,age
FROMstudents
WHEREage(SELECTAVG(age)FROMstudents);
```