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)