What’s more?
山东大学 2020级数据库系统 实验一
山东大学 2020级数据库系统 实验二
山东大学 2020级数据库系统 实验三
山东大学 2020级数据库系统 实验四
山东大学 2020级数据库系统 实验五
山东大学 2020级数据库系统 实验六
山东大学 2020级数据库系统 实验七
山东大学 2020级数据库系统 实验八、九
写在前面
做数据库实验一定要静得下心来,才能发现其中的错误然后进行改正。同时,如果发现 SQL 语句总是报错,“一定是你错了,只是不知道错在哪里”
其次,SQL 语句中较为复杂的点博主都进行了注释,希望大家一定要看懂思路后自己写一遍,而不是盲目的 Ctrl+C,Ctrl+V,切记切记!!
实验一
1-1 到 1-3 都是根据题目要求使用 create 建表即可。
注意:一定要看清哪里有 not null 限制,哪里没有!!否则后面插入可能无法成功
- 1-1
create table test1_student
(sid char(12) not null,name varchar(10) not null,sex char(2),age int,birthday date,dname varchar(30),class varchar(10)
);
- 1-2
create table test1_course
(cid char(6) not null,name varchar(40) not null,fcid char(6), --注意没有 not null!!credit numeric(4, 1)
);
- 1-3
create table test1_student_course
(sid char(12) not null,cid char(6) not null,score numeric(5, 1),tid char(6),sctime date
)
- 1-4 插入数据使用 insert into (表名) values() 即可。
注意:Oracle 字符串用的是单引号!!
还有现在使用的 insert 一次只能插入一条数据,所以这三条数据需要一条一条的插入,执行成功之后再插入下一个元组
insert into test1_student
values('200700030101', '赵中华', '男', 19, to_date('20120202', 'yyyymmdd'), '计算机学院', '2010')
insert into test1_student
values('200800020101', '王欣', '女', 21, to_date('19940202', 'yyyymmdd'), '计算机学院', '2010')
insert into test1_student
values('200800020102', '李华', '女', 20, to_date('19950303', 'yyyymmdd'), '软件学院', '2009')
- 1-5 同样也是插入数据,只是换了个位置,多了个空值。
Tip:此时就体现出了建表时的重要性,由于其中有空值,因此再建表时那一列不能添加 not null,我当时就是因为添加了 not null 卡了半小时才发现 /(ㄒoㄒ)/~~
insert into test1_course
values('300001', '数据结构', null, 2)
insert into test1_course
values('300002', '数据库', '300001', 2.5)
还是一条一条的插入哦~
- 1-6 同样还是插入数据,注意日期的设置格式就好。
关于日期设置的解释:- yyyy-mm-dd: y - year, m - month, d - day; 它设置了年、月、日的格式,需要注意的地方在于 < 10 的月和日前面要加上 0 补足位数;
- hh24-mi-ss: hh24 - 以 24 小时制来显示 hour, mi - 显示 minutes, ss - 显示 seconds;同样,< 10 的地方前面要加上 0 补足位数;
insert into test1_student_course
values('200800020101', '300001', 91.5, '100101', to_date('2009-07-15 09-09-09', 'yyyy-mm-dd hh24-mi-ss'))
insert into test1_student_course
values('200800020101', '300002', 92.6, '100102', to_date('2009-07-15 10-10-10', 'yyyy-mm-dd hh24-mi-ss'))
Tip:It’s 92.6 rather than 92.5 !!
再次强调:一定是看懂思路之后自己实践哈~~
有错的话烦请告知哈,做了有一段时间了,平台上的 SQL 已经被淹没了,这是相当于重新做了一遍,见谅~~ 后续我会在 MySQL 上跑一跑。