Oracle 学习笔记第三天

Oracle 学习笔记第三天

这阵子一堆乱七八糟的事,一直没有继续学Oracle,不过快速看了一本Oracle的PDF的书,但是看得速度过快,导致还是一知半解,现在来好好整理一下。

现在表已经建好了,约束也加了,现在准备插入数据。

插入数据的方式有很多,现在数据量不大,我先记录一种最普通的数据插入,一次插入一条数据,后面再学到批量插入时在进行记录。

语法格式:

insert into [user.]table [@db_link][(column1[,column2...])]
values (express1[,express2...])
注:[] 中的内容表示可写可不写,小括号就是小括号,
1. insert into: 固定语法
2. user:表示要插入的表属于的用户名,如果是本用户,可以不写,其他用户的话,应该要注意权限,我这边暂时没有遇到将数据插入到别的用户表里的。
3. table:数据要插入哪张表的表名
4. @db_link:数据库连接名,额,这个没用过,暂时不明白,
5. [(column1[,column2...])]:
	这部分表示列名,可以不写,不写表示插入的数据包括表里所有的字段,写的话,表示插入的数据只有写的那几个字段。
6. values:固定语法
7. (express1[,express2...]):插入的数据,如果之前没写列名,则这里插入的数据要与所有的字段对应,如果写了列名,这里的数据需要与列名对应。
建议:插入数据时不管是不是全部插入,最好写列名,这样可以清晰的知道插入了什么数据,同时,如果以后万一对表的字段进行修改了,这样的话也不会受到影响。

练习插入的数据:

-- 先插入老师数据
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (804,'李诚','男',TO_DATE('1977-08-14','YYYY-MM-DD'),'副教授','计算机系');
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (856,'张旭','男',TO_DATE('1969-03-12','YYYY-MM-DD'),'讲师','电子工程系');
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (825,'王萍','女',TO_DATE('1972-05-05','YYYY-MM-DD'),'助教','计算机系');
INSERT INTO TEACHERS(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)
VALUES (831,'刘冰','女',TO_DATE('1977-08-14','YYYY-MM-DD'),'助教','电子工程系');
--再插入学生数据
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (101 ,'李军' ,'男' ,TO_DATE('1976-02-20','YYYY-MM-DD'),42,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (102 ,'张三' ,'男' ,TO_DATE('1974-05-03','YYYY-MM-DD'),41,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (103 ,'陆君' ,'男' ,TO_DATE('1974-06-03','YYYY-MM-DD'),41,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (105 ,'匡明' ,'男' ,TO_DATE('1975-10-02 ','YYYY-MM-DD'),43,95031);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (107 ,'王丽' ,'女' ,TO_DATE('1976-01-23','YYYY-MM-DD'),42,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (108 ,'曾华' ,'男' ,TO_DATE('2011-2-24 ','YYYY-MM-DD'),7,95033);
INSERT INTO STUDENTS (SNO,SNAME,SSEX,SBIRTHDAY,SAGE,CLASS) VALUES (109 ,'王芳' ,'女' ,TO_DATE('1976-02-20','YYYY-MM-DD'),42,95031);
-- 插入课程数据
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856);
INSERT INTO COURSES(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,831);
-- 插入成绩数据
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (105,'3-105',88);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (107,'6-166',79);
INSERT INTO SCORES(SNO,CNO,DEGREE)VALUES (108,'6-166',81);
插入数据时浪费好多时间,主要是第一次插入时表弄错了,然后数据计算生日的时候多写了一个数据,导致报错,然而PL/SQL报错后之前执行的语句效果一直存在,但是需要提交事务才能看到。
我没有提交事务,所以一直报:ORA-00001:违反唯一约束条件,查数据也没有,单个字段插入也不行,后面点了提交事务,发现里面已经有数据了,导致主键违反了递增的规则,所以报错。
ORA-00001:违反唯一约束条件:插入数据时,如果设置主键自增,注意:主键的自增字段必须要大于之前插入的数据,否则就会报错,
PL/SQL软件在执行完后必须要点提交事务,否则数据不会展示出来。
注意:练习时可以随意添加,但是上面的数据不要乱,因为之后会有练习用到上面的数据。

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/84429710