Oracle系列第八章----DML,我在码歌坚持的第八天

开头的寄语:

成年人情绪稳定的秘诀之一:总是把对他人的期待放到最低。

棋势无定,棋局难料,以不变应万变,胸有成竹,等闲应对看春秋。

读完了这些,开始这一天的美好。美好从学习开始

8.1 DML介绍

DML(Data ManipulationLanguage 数据操控语言)用于操作数据库对象中包含的数据,也就是说操作的单位是记录。
Oracle数据库的DML表数据的操作有三种:
①insert (插入)② update(更新)③ delete(删除)。 

语句 作用
insert 向数据表张插入一条记录
delete 删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录
update 用于修改已存在表中的记录的内容

表名:tb_user(用户表)

编号 字段名 字段类型 说明
1 userid number(5) 用户id,主键
2 username varchar2(60) 用户名,非空,4~20个字符
3 userpwd varchar2(60) 密码,非空,4~18个字符
4 age number(3) 年龄,默认18,值大于等于18
5 gender char(3) 性别,默认‘男’,只能是‘男’或‘女’
6 email varchar2(60) 邮箱,唯一
7 regtime date 注册日期,默认当前日期

表名:tb_txt(文章表)

编号 字段名 字段类型 说明
1 txtid number(10) 文章编号,主键
2 title varchar2(60) 文章标题,非空,长度为4~20字符
3 txt varchar2(1024) 内容,最大长度1024
4 pubtime date 发布日期,默认当前日期
5 userid number(5) 作者,外键,参考用户表的用户id,删除时,自设为null
create table  tb_user(
       userid number(5),
       username varchar2(60)  constraint nn_user_name not null ,
       userpwd varchar2(60)  constraint nn_user_pwd not null  ,
       age  number(3) default(18) ,
       gender char(3) default('男'),
       email  varchar2(30),
       regtime date default(sysdate),
       constraint pk_user_id  primary key (userid),
       constraint ck_user_name check(length(username)between 4 and 20) ,
       constraint ck_user_pwd check(length(userpwd) between 4 and 18),
       constraint ck_user_age check(age>=18),
       constraint ck_user_gender  check(gender in('男','女')),
       constraint uq_user_email unique(email) 
);
create table tb_txt(
       txtid number(10),
       title varchar2(60) constraint nn_txt_title not null,
       txt varchar2(1024),
       pubtime date default(sysdate),
       userid number(5) ,
       constraint pk_txt_id  primary key(txtid),
       constraint ck_txt_id  check(length(title)>=4 and length(title)<=30),
       constraint fk_txt_ref_user_id foreign key(userid) references tb_user(userid) on delete  set null       
);

8.2 DML之insert

通过insert语句向指定的表中添加记录,添加记录时需要满足以下条件,类型和长度要兼容,(字段 兼容值);值满足约束,主键 (唯一+非空) ,非空(必填),唯一(不重复 ),默认(没有填写使用默认值),检查(满足条件),外键(参考主表主键列的值);个数必须相同,指定列,个数顺序与列相同;没有指定,个数与表结构的列个数和顺序相同 (null也得占位,没有默认值)。
insert into 表名 [(字段列表)] values(值列表);

8.2.1 默认方式添加

insert into 表名 values(值列表)
此时的值列表顺序和个数以及类型需要和标结构一致,默认的,可以为空的列也都必须填上值。可以手写也可以从别的表中获取。

insert into tb_user values(1001,'test','test123',null,'女',null, sysdate);
insert into tb_user_copy values(select * from tb_user);

8.2.2 添加时指定列和顺序

insert into 表名(指定列) values(值列表)
此时的值列表要和指定的列个数、顺序、类型保持一致

insert into tb_user(username, userid, userpwd) values('tom',1002,'tompwd');
insert into tb_user_copy(username, userid, userpwd) (select username, userid, userpwd from tb_user);

当添加的记录中,存在外键关联时需要注意,可以采取先查询后添加的方式

insert into tb_txt(txtid, title,userid)  (1001,'title01',(select userid from tb_user where username='随笔大师'));

约束状态的演示
alter table 表名 disable novalidate constraint 约束名;
disable enable 是否启用(对新添加的记录做约束)
validate novalidate 石否校验(对已存在的记录做约束)

8.2 DML之update

通过update语句可以更新(修改)表中的记录值。
update 表名 set 字段1=值1[,字段2=值2,…] where 过滤行记录;

update tb_user set userpwd=8888 where 1=1;
update tb_user set userpwd='good',age='29' where username='zzz' and pwd='123';
update tb_user set(username, userpwd) = (select 'god','block' from dual) where userid=1;

8.3 DML之delete

通过delete语句可以删除表中的记录。(注意存在主外键约束的记录)
delete from 表名 where 条件;

delete from tb_user where userid<10;
delete from tb_user;

篇幅限制,获取更多资料,添加码歌悠悠 1811119218

猜你喜欢

转载自blog.csdn.net/u014332333/article/details/87856781