SQL基础——DML(插入、修改和删除)

SQL基础——DML(插入、修改和删除)

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

我们先来插入两条数据。注意:我们要输入字符串的时候要用单引号引起来。

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来解决了。

update 表名 set 字段名=字段值,字段名=字段值… where 满足条件才修改;

没有where 条件就是所有的数据都更改。

下面我们把张三的年龄改为21。

update student set s_age = 21 where s_name = '张三';

这样就把张三的成绩改好了,之后点下齿轮运行,然后在输入 **select * from student;**就可以看改好的数据了。

删除 delete

这里的删除是删除表格的数据,和我们之前的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
)      

你可能感兴趣的:(数据库,sql,dml)