实验4 插入数据
综合性实验
1.insert导入
create database STU065;
go
use STU065;
go
-- 创建 student065 表
create table student065(Sno char(3) not null primary key,Sname nchar(4) not null,Ssex nchar(1) not null,Sbirthday date,Class char(5)
);
go
-- 创建 teacher065 表
create table teacher065(Tno char(3) not null primary key,Tname nchar(4) not null,Tsex nchar(1) not null,Tbirthday date,Prof nchar(3),Depart nchar(5) not null
);
go
-- 创建 Course065 表
create table Course065(Cno char(5) not null primary key,Cname varchar(20) not null,Tno char(3) not null references teacher065(Tno)
);
go
-- 创建 Score065 表
create table Score065(Sno char(3) not null references student065(Sno),Cno char(5) not null references Course065(Cno),primary key(Sno,Cno),Degree Decimal(4,1)
);
INSERT INTO student065 (Sno, Sname, Ssex, Sbirthday, Class) VALUES
('108', '曾华', '男', '1977-09-01', '95033'),
('105', '匡明', '男', '1975-10-02', '95031'),
('107', '王丽', '女', '1976-01-23', '95033'),
('101', '李军', '男', '1976-02-20', '95033'),
('109', '王芳', '女', '1975-02-10', '95031'),
('103', '陆君', '男', '1974-06-03', '95031');
INSERT INTO teacher065 (Tno, Tname, Tsex, Tbirthday, Prof, Depart) VALUES
('804', '李诚', '男', '1958-12-02', '副教授', '计算机系'),
('856', '张旭', '男', '1969-03-12', '讲师', '电子工程系'),
('825', '王萍', '女', '1972-05-05', '助教', '计算机系'),
('831', '刘冰', '女', '1977-08-14', '助教', '电子工程系');
INSERT INTO Course065 (Cno, Cname, Tno) VALUES
('3-105', '计算机导论', '825'),
('3-245', '操作系统', '804'),
('6-166', '数字电路', '856'),
('9-888', '高等数学', '831');
INSERT INTO Score065 (Sno, Cno, Degree) VALUES
('103', '3-245', 86),
('105', '3-245', 75),
('109', '3-245', 68),
('103', '3-105', 92),
('105', '3-105', 88),
('109', '3-105', 76),
('101', '3-105', 64),
('107', '3-105', 91),
('108', '3-105', 78),
('101', '6-166', 85),
('107', '6-166', 79),
('108', '6-166', 81);
2.文件导入
-- 插入student065表数据
BULK INSERT student065
FROM 'D:\Database\student.txt'
WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',FIRSTROW = 2 -- 如果第一行是标题,则跳过
);
-- 插入teacher065表数据
BULK INSERT teacher065
FROM 'D:\Database\teacher.txt'
WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',FIRSTROW = 2
);
这里就不展示了,和上面类似
-- 插入Course065表数据
BULK INSERT Course065
FROM 'D:\Database\course.txt'
WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',FIRSTROW = 2
);
-- 插入Score065表数据
BULK INSERT Score065
FROM 'D:\Database\score.txt'
WITH (FIELDTERMINATOR = ',',ROWTERMINATOR = '\n',FIRSTROW = 2
);
实验小结(实验中遇到的问题及解决过程、实验中产生的错误及原因分析、实验体会和收获)
- 本次实验确实有学到不少东西,通过反复地使用insert导入和文本导入表格数据,我比较熟悉的掌握了insert导入和文本导入的方法,也学会了删除和查看表格里的数据,最让我觉得有成就感的事情应该是文本导入,因为把记事本和一个数据库程序(SQL)这两个不同类型的程序联系在一起感觉非常奇妙。这次实验让我深刻体会到了数据库操作的实际挑战和些许乐趣。从创建数据库、设计表结构到插入数据,每一步都充满了挑战。刚开始时,面对复杂的SQL语句感到有些头疼,尤其是在处理外键约束和确保数据一致性方面遇到了不少困难。但是,随着不断尝试和调整,我逐渐掌握了技巧,并学会了如何有效利用INSERT INTO、BULK INSERT等命令来简化数据输入过程,还是挺有意义的。
- 通过文本文件导入数据的过程尤其让我感到满足,它不仅提高了工作效率,也让我对数据批量处理有了更深的理解。在解决思考题中的问题时,我对数据库的约束条件有了更加清晰的认识,明白了为什么正确设置主键、外键以及检查约束是如此重要。虽然过程中遇到了一些小挫折,但这些问题最终都被一一克服了。这次实验不仅巩固了我的理论知识,还大大提升了我的实践技能,使我更加期待未来更深入的学习和探索。
- 但是这次实验还存在着不足,就是我没能完成使用“csv”导入和Excel导入这两个方法对数据库表中插入数据,但我对此进行了学习,在csdn上找到了两篇博客,一个是关于如何利用SSMS图形界面操作导入,还有一个是驱动的下载步骤,这次实验没能完整的实现所有的要求有点难受,感觉缺失了一部分知识点的掌握,希望自己在未来的学习过程中可以学习到这部分更多的知识,补齐这次的缺失。