操作表数据
增加表记录
//插入记录的语法格式: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记录
//方法1create table school_stu2 as select * from school_stu;//方法2create 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 setwhen not matched then insertwhere 条件;
【例3.4】合并school_stu数据到school_stu2中(school_stu2已经存在的不合并)
merge into school_stu2using school_stuon (school_stu2.学号=school_stu.学号)when not matched theninsert(学号,姓名,专业名,性别,出生时间,总学分,备注)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_stuset 总学分=总学分+5where 学号=\'061102\';
【例3.7】将school_stu表中的所有学生的总学分都增加10。
update school_stuset 总学分=总学分+5
【例3.8】将姓名为“王平”的同学的专业改为“通信工程”,备注改为“转专业学习”,学号改为“061241”。
update school_stuset专业名=\'通信工程\',备注=\'转专业学习\',学号=\'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_stumodify 备注 default \'123\';//方法二:alter table school_stuadd(备注2 nvarchar2(250))