开头的寄语:
成年人情绪稳定的秘诀之一:总是把对他人的期待放到最低。
棋势无定,棋局难料,以不变应万变,胸有成竹,等闲应对看春秋。
读完了这些,开始这一天的美好。美好从学习开始
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 | 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