DML 是数据操作语言,可以对数据进行插入、修改、查询 和 删除。因为查询所涉及到的知识点有点繁杂,因此之后特意单独拿出来讲下,现在我们来讲下插入(insert),修改(update),删除(delete)。
还是以student 表为例。
先创建表格,点左上角的齿轮(execute)来运行,就可以创建好表格了
create table student(
s_id number(4) primary key ,
s_name varchar2(5 char) not null,
s_gender char(3) check(s_gender in ('男','女')),
s_age number(2) check(s_age between 15 and 45),
s_date date,
s_dept varchar2(20) default('计算机系')
)
我们先来插入两条数据。注意:我们要输入字符串的时候要用单引号引起来。
insert into student values (1001,'张三','男',20,sysdate,'数学系');
insert into student values (1002,'小红','女',18,sysdate,'计算机系');
插入数据的语法是 insert into 表名 values(字段的值列表);所谓字段值列表就是我们创建表格给出的表头的值,所以传的值列表要满足创建表时的数据类型和约束条件。然后点击小齿轮就添加进去了。这是可以点击齿轮旁边的按钮,一个绿色的commit提交按钮,一个是红色的rollback回滚按钮。回滚后数据就回到没有添加的状态。
也可以指定字段赋值。如insert into 表名(字段列表) values(字段列表对应的值列表);
insert into student(s_id,s_name,s_age) values(1003,'王五',19);
这样也可以添加表格,没有添加的显示为空值,但因为s_dept有默认值,所以s_dept显示 计算机系。需要注意的是主键primary 和 notnull约束的字段列以及与其他表格有外键约束的字段列 是必须要填写的,否则会报错。
插入之后可以用**select * from student;**用来查看所有的数据。
插入好数据后,我们总会遇到数据需要修改更新的情况,这时就需要使用update来解决了。
update 表名 set 字段名=字段值,字段名=字段值… where 满足条件才修改;
没有where 条件就是所有的数据都更改。
下面我们把张三的年龄改为21。
update student set s_age = 21 where s_name = '张三';
这样就把张三的成绩改好了,之后点下齿轮运行,然后在输入 **select * from student;**就可以看改好的数据了。
这里的删除是删除表格的数据,和我们之前的drop(删除表)还是有区别的。
我们可以删除整张表的数据,也可以删除某个字段所在行的数据。用delete from 表名 where 满足条件的删除来删除数据。
我们先来删除‘王五’所在行的数据。
delete from student where s_name='王五';
也可以直接删除student表的数据
delete from student;
上面的是一般表格的删除,但有些表格是通过主外键约束,有主从表关系的,这种就不可以随便删除主表了。
首先,删除的数据是主表中没有被从表中数据关联的主表数据,可以直接删除。
其次,删除的数据是主表中被从表数据引用的主表数据时候,不能删除,3中处理解决方案
1>默认先删除从表中引用了当前主表的从表数据,再删除主表中当前数据。
2>直接删除主表中数据的同时,为从表中引用了当前主表的数据外键字段设置为null 。 on delete set null
3>直接删除主表中数据的同时,级联删除从表中引用了当前主表数据的那些从表数据。on delete cascade
create table clazz(
cid number(5) primary key,
cname varchar2(15)
);
create table student1(
sid number(5) primary key,
sname varchar2(15),
sage number(3),
--外键约束
cid number(5) constraint fk_cid references clazz(cid) on delete cascade --on delete set null
)