DML语句
单行插入:
语法1: insert into 表名(字段1,....,字段n) values(值1,...,值n)
注意:表名后跟着的字段列表必须是表结构中存在的字段,values 后面跟着的值列表必须与字段列表一一对应。
例:
insert into t_student(sid,sname,ssex,sage,saddress) values(2,'张三','男',18,'上海');
所有的DML操作执行后都需要提交或者回滚才可以改变数据库中的内容。
若是没有提交或者未回滚,这些操作是可以后悔,修改的内容存在于内存中。
语法二:insert into 表名 values(值列表);
insert into t_class values(1,'Java01班');
commit;
这个语法主要针对表机构字段比较少的情况,省略了表名后面的字段列表,
那么值列表就默认跟表机构中的字段的顺序一致,所有的字段都插入了数据
insert into t_student(sid,sname,ssex,sage,saddress,sbirth)
values(4,'李四','男',22,'深圳',to_date('2017-01-15','yyyy-mm-dd'));
commit;
每一次插入数据,系统都会自动检查主键是否唯一。
序列:作用就是用来管理表中的主键的。
命名规范:seq+表名
nextval 获取序列的下一个数字
currval 获取序列的当前数字。
多行插入
insert into t_student(sid,sname,ssex,sage,saddress,sbirth)
values(seq_t_student.nextval,'李四','男',22,'深圳',to_date('2017-01-15','yyyy-mm-dd'));
commit;
修改语句(update):
update 表名 set 字段名1=值1,...,字段名n = 值n where 条件
修改多个字段是,每个字段之间用英文逗号隔开。
如果没有where 修改的是所有的数据。
案例1:更新学生表中所有的数据,地址改为成都。
update t_student set saddress = '成都' ;
commit;
当修改所有数据时,会有提示是否删除所有数据
案例2:更新学生表中的sid为3的学生的地址为杭州
update t_student set saddress ='杭州' where sid = 3;
commit;
案例三:
update t_student set sage = 21 where sage is not null;
commit;
删除数据:
语法:delete from 表名 where 条件
delete from t_student where sid = 11;
快速删除数据
truncate
truncate table 表名; 不需要提交 DDL语言 也没有提示就把所有数据全部删除。
truncate table t_student_copy2;
delete 和 truncate 的区别:
truncate是DDL语言 没有提交和回滚,
delete 是DML语言。是需要提交和回滚的。有提示
delete 删除的数据保存在内存中,可以恢复,
truncate删除的数据时不可以恢复的。
truncate删除数据效率高
若是要删除大量数据,truncate执行速度比delete快。
DML :数据库操作语言(插入、删除、修改数据)
创建表-----------http://blog.youkuaiyun.com/qq_18733135/article/details/77487719
单行插入:
语法1: insert into 表名(字段1,....,字段n) values(值1,...,值n)
注意:表名后跟着的字段列表必须是表结构中存在的字段,values 后面跟着的值列表必须与字段列表一一对应。
例:
insert into t_student(sid,sname,ssex,sage,saddress) values(2,'张三','男',18,'上海');
所有的DML操作执行后都需要提交或者回滚才可以改变数据库中的内容。
若是没有提交或者未回滚,这些操作是可以后悔,修改的内容存在于内存中。
语法二:insert into 表名 values(值列表);
insert into t_class values(1,'Java01班');
commit;
这个语法主要针对表机构字段比较少的情况,省略了表名后面的字段列表,
那么值列表就默认跟表机构中的字段的顺序一致,所有的字段都插入了数据
insert into t_student(sid,sname,ssex,sage,saddress,sbirth)
values(4,'李四','男',22,'深圳',to_date('2017-01-15','yyyy-mm-dd'));
commit;
每一次插入数据,系统都会自动检查主键是否唯一。
序列:作用就是用来管理表中的主键的。
命名规范:seq+表名
nextval 获取序列的下一个数字
currval 获取序列的当前数字。
多行插入
insert into t_student(sid,sname,ssex,sage,saddress,sbirth)
values(seq_t_student.nextval,'李四','男',22,'深圳',to_date('2017-01-15','yyyy-mm-dd'));
commit;
修改语句(update):
update 表名 set 字段名1=值1,...,字段名n = 值n where 条件
修改多个字段是,每个字段之间用英文逗号隔开。
如果没有where 修改的是所有的数据。
案例1:更新学生表中所有的数据,地址改为成都。
update t_student set saddress = '成都' ;
commit;
当修改所有数据时,会有提示是否删除所有数据
案例2:更新学生表中的sid为3的学生的地址为杭州
update t_student set saddress ='杭州' where sid = 3;
commit;
案例三:
update t_student set sage = 21 where sage is not null;
commit;
删除数据:
语法:delete from 表名 where 条件
delete from t_student where sid = 11;
快速删除数据
truncate
truncate table 表名; 不需要提交 DDL语言 也没有提示就把所有数据全部删除。
truncate table t_student_copy2;
delete 和 truncate 的区别:
truncate是DDL语言 没有提交和回滚,
delete 是DML语言。是需要提交和回滚的。有提示
delete 删除的数据保存在内存中,可以恢复,
truncate删除的数据时不可以恢复的。
truncate删除数据效率高
若是要删除大量数据,truncate执行速度比delete快。