###表与数据处理实验知识点总结####一、创建数据库及表结构根据题目要求,首先需要创建一个名为“教务管理”的数据库,并在该数据库中创建三个表:学生表(Student)、课程表(Course)以及选修表(SC)。每个表的具体字段及其属性如下: 1. **学生表(Student)** - **Sno** (学号):类型为`int`,不允许为空; - **Sname** (姓名):类型为`nvarchar(20)`,不允许为空; - **Sex** (性别):类型为`Char(2)`,不允许为空; - **Age** (年龄):类型为`tinyint`,允许为空。 2. **课程表(Course)** - **Cno** (课程号):类型为`Char(5)`,不允许为空; - **Cname** (课程名):类型为`Nvarchar(30)`,不允许为空; - **Credit** (学分):类型为`Tinyint`,不允许为空; - **PCno** (先修课):类型为`Char(5)`,允许为空。 3. **选修表(SC)** - **Sno** (学号):类型为`Int`,不允许为空; - **Cno** (课程号):类型为`Char(5)`,不允许为空; - **Score** (成绩):类型为`Smallint`,允许为空。 ####二、修改表结构接下来需要对表结构进行修改: 1. **将学生表(Student)和选修表(SC)中的Sno字段类型由int修改为char(10)。** ```sql ALTER TABLE Student ALTER COLUMN Sno char(10); ALTER TABLE SC ALTER COLUMN Sno char(10); ``` 2. **向学生表(Student)中增加一列:联系电话(Phone),类型为Varchar(20),允许为空。** ```sql ALTER TABLE Student ADD Phone varchar(20); ``` ####三、插入数据接着,需要为每个表插入至少三条数据。示例数据如下: 1. **学生表(Student)** ```sql INSERT INTO Student (Sno, Sname, Sex, Age, Phone) VALUES ('20210001', '张三', '男', 20, '13800000'), ('20210002', '李四', '女', 22, '13900000'), ('20210003', '王五', '男', 21, '13700000'); ``` 2. **课程表(Course)** ```sql INSERT INTO Course (Cno, Cname, Credit, PCno) VALUES ('C001', '计算机组成原理', 4, 'C003'), ('C002', '数据结构', 3, NULL), ('C003', '离散数学', 3, NULL); ``` 3. **选修表(SC)** ```sql INSERT INTO SC (Sno, Cno, Score) VALUES ('20210001', 'C001', 85), ('20210002', 'C002', 90), ('20210003', 'C003', 75); ``` ####四、修改数据1. **修改张三的联系电话。** ```sql UPDATE Student SET Phone = '13600000' WHERE Sname = '张三'; ``` 2. **将所有学生的年龄加一岁。** ```sql UPDATE Student SET Age = Age + 1; ``` 3. **删除张三的记录。** ```sql DELETE FROM Student WHERE Sname = '张三'; ``` 4. **有选课的学生年龄增加一岁。** ```sql UPDATE Student s SET Age = Age + 1 FROM Student s JOIN SC sc ON s.Sno = sc.Sno; ``` 5. **删除所有的选课记录。** ```sql DELETE FROM SC; ``` ####五、创建公司内部管理数据库1. **创建表tblEmployees** - **empID** (雇员代号):类型为`char(4)`,不允许为空; - **Name** (姓名):类型为`varchar(20)`,不允许为空; - **IDCardNum** (身份证号码):类型为`char(18)`,不允许为空; - **Salary** (工资):类型为`int`,不允许为空。创建表的SQL语句如下: ```sql CREATE TABLE tblEmployees ( empID char(4) NOT NULL, Name varchar(20) NOT NULL, IDCardNum char(18) NOT NULL, Salary int NOT NULL ); ``` 2. **创建表tblDepartments** - **DeptID** (部门号):类型为`char(2)`,不允许为空; - **DeptName** (部门名称):类型为`varchar(30)`,不允许为空。创建表的SQL语句如下: ```sql CREATE TABLE tblDepartments ( DeptID char(2) NOT NULL, DeptName varchar(30) NOT NULL ); ``` 3. **创建表tblWork** - **empID** (雇员代号):类型为`char(4)`,不允许为空; - **DeptID** (部门号):类型为`char(2)`,不允许为空; - **StartTime** (开始时间):类型为`datetime`,不允许为空; - **EndTime** (结束时间):类型为`datetime`,允许为空; - **Notes** (备注):类型为`varchar(1000)`,允许为空。创建表的SQL语句如下: ```sql CREATE TABLE tblWork ( empID char(4) NOT NULL, DeptID char(2) NOT NULL, StartTime datetime NOT NULL, EndTime datetime, Notes varchar(1000) ); ``` ####六、修改数据1. **修改表tblEmployees,将Salary的类型更改为money类型。** ```sql ALTER TABLE tblEmployees ALTER COLUMN Salary money; ``` 2. **为以上各表添加数据** ```sql INSERT INTO tblEmployees (empID, Name, IDCardNum, Salary) VALUES ('E001', '赵一', '110101199001011111', 5000), ('E002', '钱二', '110101199202022222', 6000), ('E003', '孙三', '110101199303033333', 7000); INSERT INTO tblDepartments (DeptID, DeptName) VALUES ('D1', '研发部'), ('D2', '销售部'), ('D3', '财务部'); INSERT INTO tblWork (empID, DeptID, StartTime, EndTime, Notes) VALUES ('E001', 'D1', '2022-01 09:00', '2022-01 18:00', '项目A'), ('E002', 'D2', '2022-01-02 09:00', '2022-01-02 17:00', '项目B'), ('E003', 'D3', '2022-01-03 09:00', NULL, '项目C'); ``` 3. **修改数据** ```sql --修改赵一的工资为6000 UPDATE tblEmployees SET Salary = 6000 WHERE Name = '赵一'; --修改钱二所在部门为财务部UPDATE tblWork w SET w.DeptID = (SELECT DeptID FROM tblDepartments WHERE DeptName = '财务部') FROM tblWork w JOIN tblEmployees e ON w.empID = e.empID WHERE e.Name = '钱二'; ``` 4. **删除数据** ```sql --删除赵一的所有工作记录DELETE FROM tblWork WHERE empID = (SELECT empID FROM tblEmployees WHERE Name = '赵一'); ```通过上述步骤,我们可以看到如何创建数据库和表,如何修改表结构,如何插入、更新和删除数据等关键知识点。这些操作是数据库管理和维护的基础,对于学习和掌握数据库技术非常重要。