根据题目要求,我们将从以下几个方面来解析文档中的知识点: ### 数据库设计 #### 1. 学生表 `T_STUDENT` - **字段说明** - `STUNO`: 学号,`VARCHAR2(16)` 类型,作为表的主键。 - `STUNAME`: 姓名,`VARCHAR2(16)` 类型。 - `STUSEX`: 性别,`VARCHAR2(6)` 类型。 - `STUBIR`: 出生日期。 #### 2. 课程信息表 `T_COURSE` - **字段说明** - `COURSENO`: 课程号,`VARCHAR2(16)` 类型,作为表的主键。 - `COURSENAME`: 课程名称,`VARCHAR2(16)` 类型。 - `TEANO`: 教师编号,`VARCHAR2(16)` 类型,是外键,关联到教师信息表的主键。 #### 3. 教师信息表 `T_TEACHER` - **字段说明** - `TEANO`: 教师编号,`VARCHAR2(16)` 类型,作为表的主键。 - `TEANAME`: 教师姓名,`VARCHAR2(16)` 类型。 - `TEATITLE`: 教师职称,`VARCHAR2(16)` 类型。 #### 4. 考试成绩表 `T_SCORE` - **字段说明** - `STUNO`: 学号,`VARCHAR2(16)` 类型,是主键之一。 - `COURSENO`: 课程编号,`VARCHAR2(16)` 类型,是主键之一,也是外键,关联到课程信息表的主键。 - `TYPE`: 考试类型(期中/期末),`VARCHAR2(6)` 类型。 - `SCORE`: 分数,`FLOAT` 类型。 ### SQL 语句练习 #### 1. 创建表格并插入数据 ```sql CREATE TABLE T_STUDENT ( STUNO VARCHAR2(16) PRIMARY KEY, STUNAME VARCHAR2(16), STUSEX VARCHAR2(6), STUBIR DATE ); CREATE TABLE T_COURSE ( COURSENO VARCHAR2(16) PRIMARY KEY, COURSENAME VARCHAR2(16), TEANO VARCHAR2(16) REFERENCES T_TEACHER(TEANO) ); CREATE TABLE T_TEACHER ( TEANO VARCHAR2(16) PRIMARY KEY, TEANAME VARCHAR2(16), TEATITLE VARCHAR2(16) ); CREATE TABLE T_SCORE ( STUNO VARCHAR2(16), COURSENO VARCHAR2(16), TYPE VARCHAR2(6), SCORE FLOAT, PRIMARY KEY (STUNO, COURSENO), FOREIGN KEY (STUNO) REFERENCES T_STUDENT(STUNO), FOREIGN KEY (COURSENO) REFERENCES T_COURSE(COURSENO) ); INSERT INTO T_STUDENT (STUNO, STUNAME, STUSEX, STUBIR) VALUES ('S001', '郭莉芳', '女', TO_DATE('1987.2', 'YYYY.MM')); INSERT INTO T_STUDENT (STUNO, STUNAME, STUSEX, STUBIR) VALUES ('S002', '郑义', '男', TO_DATE('1988.2', 'YYYY.MM')); -- ... 其他学生信息 INSERT INTO T_COURSE (COURSENO, COURSENAME, TEANO) VALUES ('C001', 'DB', 'T001'); INSERT INTO T_COURSE (COURSENO, COURSENAME, TEANO) VALUES ('C002', 'VC++', 'T002'); -- ... 其他课程信息 INSERT INTO T_TEACHER (TEANO, TEANAME, TEATITLE) VALUES ('T001', '梁天', '教授'); INSERT INTO T_TEACHER (TEANO, TEANAME, TEATITLE) VALUES ('T002', '王一', '副教授'); -- ... 其他教师信息 INSERT INTO T_SCORE (STUNO, COURSENO, TYPE, SCORE) VALUES ('S001', 'C001', '期中', 98); INSERT INTO T_SCORE (STUNO, COURSENO, TYPE, SCORE) VALUES ('S001', 'C001', '期末', 78); -- ... 其他成绩信息 ``` #### 2. 查询所有学生数据 ```sql SELECT * FROM T_STUDENT; ``` #### 3. 查询所有学生的姓名和性别 ```sql SELECT STUNAME, STUSEX FROM T_STUDENT; ``` #### 4. 显示学号和姓名,姓名格式为:“姓名:xxx” ```sql SELECT '姓名:' || STUNAME AS "姓名", STUNO FROM T_STUDENT; ``` #### 5. 显示 T_SCORE 表中分数与 60 分的差值 ```sql SELECT SCORE - 60 AS "分数" FROM T_SCORE; ``` #### 6. 显示学号和姓名,列名分别显示为“学生”和“姓名” ```sql SELECT STUNO AS "学生", STUNAME AS "姓名" FROM T_STUDENT; ``` #### 7. 显示学号和姓名在一个列中,列名显示为“信息” ```sql SELECT STUNO AS "信息" FROM T_STUDENT UNION ALL SELECT STUNAME AS "信息" FROM T_STUDENT; ``` #### 8. 查询教师的职称种类 ```sql SELECT DISTINCT TEATITLE FROM T_TEACHER; ``` #### 9. 查询女生的姓名 ```sql SELECT STUNAME FROM T_STUDENT WHERE STUSEX = '女'; ``` #### 10. 同上 ```sql SELECT STUNAME FROM T_STUDENT WHERE STUSEX = '女'; ``` #### 11. 查询课程 VB 的信息 ```sql SELECT * FROM T_COURSE WHERE COURSENAME = 'VB'; ``` #### 12. 显示所有期中考试及格的记录 ```sql SELECT * FROM T_SCORE WHERE TYPE = '期中' AND SCORE >= 60; ``` #### 13. 显示所有期末考试分数在 90-100 的考试记录 ```sql SELECT * FROM T_SCORE JOIN T_STUDENT ON T_SCORE.STUNO = T_STUDENT.STUNO WHERE TYPE = '期末' AND SCORE > 90; ``` #### 14. 查询 90 分以上的期末考试记录,以及不及格的期末考试记录 ```sql SELECT * FROM T_SCORE JOIN T_STUDENT ON T_SCORE.STUNO = T_STUDENT.STUNO WHERE TYPE = '期末' AND (SCORE > 90 OR SCORE < 60); ``` #### 15. 使用 BETWEEN 谓词显示所有期末考试在 65-80 的考试记录 ```sql SELECT * FROM T_SCORE JOIN T_STUDENT ON T_SCORE.STUNO = T_STUDENT.STUNO WHERE TYPE = '期末' AND SCORE BETWEEN 65 AND 80; ``` #### 16. 使用 IN 谓词,显示分数是 60,70,80 的考试记录 ```sql SELECT * FROM T_SCORE JOIN T_STUDENT ON T_SCORE.STUNO = T_STUDENT.STUNO WHERE SCORE IN (60, 70, 80); ``` #### 17. 查询姓李的学生 ```sql SELECT * FROM T_STUDENT WHERE STUNAME LIKE '李%'; ``` 这些SQL语句覆盖了基础的数据操作,包括创建表、插入数据以及各种复杂的查询需求,旨在帮助学习者掌握SQL的基础语法和常见操作技巧。通过实际操作这些SQL语句,可以加深对数据库管理系统的理解,并提高解决实际问题的能力。
剩余7页未读,继续阅读
- 粉丝: 582
- 资源: 7530
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助