DML语句
数据操纵语言用于插入 修改 删除 数据
数据操纵语言是最常用的SQL命令
文章目录
1.insert 插入
往数据库中,插入一条记录
insert into 表名(字段1,字段2…) values(字段1,字段2…);
--创建t_table
create t_table(
id number(4),
name varchar2(20),
age number(2)
);
--插入数据
insert into t_table (id,name,age) values (1,'Tom',18);
--省略字段 (如果插入时,字段省略,默认插入所有字段数据)
insert into t_table values (2,'John',19);
--插入部分字段 (插入的时候,字段和字段值一致)
insert into t_table (id,name) values (3,'Amy');
1.1注意事项
- 插入执行后,数据并没有提交到数据库,需要**点击
commit
**把数据提交到数据库 - 字符串需要用
‘’
包裹 - 插入的时候,字段和字段值一致
- 如果插入时,字段省略,默认插入所有字段数据
- 指定字段则只插入相应字段数据
1.2插入多条数据记录
-- select 字段1,字段2… 数据出处表名; 把数据出处表名中的数据查出来
-- 把查出来的数据插入到数据接收表名
insert into 【数据接收表名】(字段1,字段2…) select 字段1,字段2… from 【数据出处表名】
--创建表t_table_copy
create table t_copy_table(
id number(4),
name varchar(20),
age number(2)
);
--复制命令
insert into t_table_copy(id,name) select id,name from t_table;
1.3复制表结构和数据
- 复制结构和数据
--select * from t_table 查询表中的数据
--crate table t_table_copy 创建表
crate table t_table_copy as select * from t_table;
- 复制表结构
create table t_table_copy as select * from t_table where 1 != 1;
1.4序列
是oracle 独有,通过插入实现主键自动增长的操作
1.4.1创建序列
- 右侧对象栏 --> Squence --> 右键 --> 新建
- 填入数据 --> 应用
- seq_stu.nextval 下一个序列的值 (重点)
- seq_stu.currval 当前会话的序列值
1.4.2dual伪表
-- 查看下一个序列是多少?
-- dual 伪表 (专门用来 测试 我们的sql 一些数据或者函数 )
-- 可以通过 下一个序列的值 实现自增
select seq_stu.nextval from dual;
1.4.3序列起始不为 “ 1 ”
Oracle
从 11.2.0.1版本开始,提供了一个“延迟段创建”特性:即
当我们创建了新的表(table)和序列(sequence),
在插入(insert)语句时,序列会跳过第一个值(1)。
所以结果是插入的序列值从 2(序列的第二个值) 开始, 而不是 1开始。
- 解决方法
- 创建表时让
seqment
立即执行,
SEGMENT CREATION IMMEDIATE;
- 创建表时让
create table t_user(
id number(3) primary key,
name varchar2(20)
)--这里没有“;”
SEGMENT CREATION IMMEDIATE;
1.4.4注意事项
-
每次执行序列 会自动增长
-
序列本身是一个变化的数据 可以独立使用
-
nextval
获取下一序列currval
获取当前的序列 从新开始了一个会话 不能获取 当前会话序列currval
需要先获取下一个序列 才可以currval
-
创建序列时候 默认从2开始 解决(创建表的时候 添加 SEGMENT CREATION IMMEDIATE
2.update 修改
update 表名 set 字段1 = 字段值1,字段2 = 字段值2 where 判断条件;
--修改单个字段
update t_table set age = 19 where id = 1;
--修改多个字段
update t_table set age = 18, name = ‘Tom’ where id = 4;
2.1注意事项
- 1.更新数据后 数据修改 一定要点击
commit
按钮 (事务按钮) - 修改的时候 一定给添加 where 判断条件;(如果多个条件满足 把满足的数据 都进行修改 如果没有写where 把表中的所有的数据都修改了
- 一般修改都是以 主键为条件
3.delete 删除
delete from 表名 where 判断条件
delete from t_table where id = 4;
3.1注意事项
- 删除数据后,点击提交按钮 (事务按钮)
- 没有where条件时,删除所有数据
3.2delete & truncate 的区别
- delete删除:先将删除的数据放在内存中,执行
commit
删除数据库 - truncate:直接删除数据,不经过内存环节