操作表数据
增加表记录
//插入记录的语法格式:
insert into [方案名].表名[列名] values (值)
【例3.1】建立school_stu,向学生(school_stu)表插入如下记录
学号 | 姓名 | 专业名 | 性别 | 出生时间 | 总学分 | 备注 |
---|---|---|---|---|---|---|
061102 | 王平 | 计算机 | 女 | 1986-09-02 | 38 | NULL |
061103 | 王燕 | 计算机 | 女 | 1985-10-06 | 40 | NULL |
061104 | 韦严平 | 计算机 | 男 | 1986-08-26 | 40 | NULL |
061105 | 吴庆红 | 计算机 | 男 | 1985-12-30 | 36 | 有两门不及格 |
061106 | 李方方 | 计算机 | 男 | 1986-11-20 | 40 | NULL |
061107 | 李明 | 计算机 | 男 | 1986-05-01 | 40 | NULL |
061108 | 林一帆 | 计算机 | 男 | 1985-08-05 | 42 | 已提前修完 |
061109 | 张强民 | 计算机 | 男 | 1984-08-11 | 40 | NULL |
061110 | 张蔚 | 计算机 | 女 | 1987-07-22 | 40 | NULL |
061111 | 赵琳 | 计算机 | 女 | 1986-03-18 | 40 | NULL |
061112 | 罗林琳 | 计算机 | 女 | 1984-01-30 | 40 | NULL |
create table school_stu
(
学号 nvarchar2(20) not null,
姓名 nvarchar2(20) not null,
专业名 nvarchar2(20) not null,
性别 nvarchar2(20) ,
出生时间 DATE,
总学分 number(2),
备注 nvarchar2(250),
CONSTRAINT pk_学号 PRIMARY key(学号)
);
insert into school_stu
(学号,姓名,专业名,性别,出生时间,总学分,备注)
values
('061102','王平','计算机','女',to_date('1986-09-02','yyyy-MM-dd'),38,null);
【例3.2】建立school_stu2,向学生(school_stu2)表中插入school_stu记录
//方法1
create table school_stu2 as select * from school_stu;
//方法2
create table school_stu2
(
学号 nvarchar2(20) not null,
专业名 nvarchar2(20) not null,
姓名 nvarchar2(20) not null,
性别 nvarchar2(20) ,
出生时间 DATE,
总学分 number(2),
备注 nvarchar2(250),
CONSTRAINT pk_学号2 PRIMARY key(学号)
);
insert into school_stu2
(学号,姓名,专业名,性别,出生时间,总学分,备注)
select 学号,姓名,专业名,性别,出生时间,总学分,备注 from school_stu;
merge语句语法格式:
merge into 要合并的表名
using 要匹配的表名 on(要匹配的字段)
when matched then update set
when not matched then insert
where 条件;
【例3.4】合并school_stu数据到school_stu2中(school_stu2已经存在的不合并)
merge into school_stu2
using school_stu
on (school_stu2.学号=school_stu.学号)
when not matched then
insert
(学号,姓名,专业名,性别,出生时间,总学分,备注)
values
(b.学号,b.姓名,b.专业名,b.性别,b.出生时间,b.总学分,b.备注);
删除表记录
1.使用 DELETE删除数据
delete from 表名 where 条件;
2.使用truncate table语句删除表数据
truncate table 表名;
两者区别:使用delete删除表记录是一行一行删除,当数据量大时,效率较低,使用truncate 删除表记录即把整个表的记录删除;两者最终的结果是一样的。
修改表记录
//语法格式:
update 表名或者视图名
set 字段名=字段值
where 条件;
【例3.6】 将school_stu表中学号为“061102”的学生备注列值改为“三好学生”
update school_stu
set 总学分=总学分+5
where 学号='061102';
【例3.7】将school_stu表中的所有学生的总学分都增加10。
update school_stu
set 总学分=总学分+5
【例3.8】将姓名为“王平”的同学的专业改为“通信工程”,备注改为“转专业学习”,学号改为“061241”。
update school_stu
set
专业名='通信工程',
备注='转专业学习',
学号='061241'
where 姓名='王平';
默认值约束
1. 默认值约束的定义
//默认值约束定义的一般格式为:
create table 表名
(
列名 列的类型 (长度) default 值
);
【例3.10】在定义表时定义一个字段的默认值约束。
create table school_stu
(
学号 nvarchar2(20) not null,
姓名 nvarchar2(20) not null,
专业名 nvarchar2(20) not null,
性别 nvarchar2(20) default '男',
出生时间 DATE,
总学分 number(2) default 0,
备注 nvarchar2(250),
CONSTRAINT pk_学号 PRIMARY key(学号)
);
【例3.11】在修改表时定义一个字段的默认值约束。
//方法一:
alter table school_stu
modify 备注 default '123';
//方法二:
alter table school_stu
add(
备注2 nvarchar2(250)
)