1、复制工作表(练习使用)
create table myemp as select * from emp where 1=1 -----1=1 1:1复制表
select * from myemp;
create table myyemp as select * from emp where 1=2----1=2 只复制表名
2、插入记录
语法格式:
insert into 表名 (字段列表(列名))
value(值列表)
例 insert into myemp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (7999,'小葵','前台',7369,'06-5月-2019',2000,200,20);
select * from myemp where empno=7999;--- 查询员工信息
当插入的记录部分信息为空值时--注:插入记录时要注意插入的值和列名一一对应
方法一
insert into myemp (empno,ename,job,hiredate,sal,deptno)
values (7993,'小葵111','后台','06-5月-2019',2000,20);
select * from myemp
方法二
insert into myemp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (7999,'小葵','前台',null,'06-5月-2019',2000,null,20);
--1 若省略的字段列表,有空值时用 null 代替
--2 不省略时值列表的顺序类型与字段列表顺序一致
插入日期的格式
insert into myemp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (7996,'张韶涵','音乐总监',null,to_date('20180823','yyyymmdd'),8000,200,30);
insert into myemp (empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (7996,'张韶涵','音乐总监',null,to_date('2018-08-23','yyyy-mm-dd'),8000,200,30);
3、批量插入
语法格式
insert into 表名
select 字段列表 from 表名
where 条件 (empno,ename,job,mgr,hiredate,sal,comm,deptno)
create table lxy as select * from emp ---创建
insert into lxy select * from emp-----插入
insert into lxy select * from myemp where empno=7996---插入编号为7996一行信息
4、删除
(1)delete from lx --删除数据,保持表结构但可以回滚
(2)truncate table lx---删除数据,保持表结构(字段列表),不可以回滚
(3)drop table lx; --直接删除表,也把表结构删除了,不可以回滚
语法格式
delete from 表名 where 条件
例:删除员工7999的员工信息
delete from myemp where empno=7999---where用来指定删除条件,否则会改变表中记录
解释
1、事务,工作的一个逻辑单位,由一个或多个sql语句组成
2、回滚,rollback 是撤销未提交事务中sql语句中所做的数据修改
3、提交,commit 事务提交之后就说明sql语句所执行的改变将永久化
5、数据更新
语法格式
update 表名 set 要修改的字段(列名)=新值,要修改的字段=新值......
where 条件 -------where限定条件,一定不能忘用来指定修改条件
例:给员工7999奖金再加100元
update myemp set comm=300
where empno=7998
关联更新
update emp a set deptno=(select b.deptno from dept b where b.deptno=a.deptno)
where exists (select 1 from dept b where b.deptno=a.deptno)
6、merge:插入/更新
create database link link_zwz connect to scott identified by tiger using 'zwz'
grant create database link to scott
merge into 表名 a
using (select * from 表名@数据库连接名) b
on (a.empno=b.empno)
when matched then
update set a.ename=b.ename where a.ename!= b.ename
when not matched then
insert (a.empno,a.ename) values (b.empno,b.ename)