插入数据的基本语法:
INSERT INTO 数据表名(字段1,字段2,字段3···) VALUES(值1,值2,值3···)
DEMO:复制一张数据表
CREATE TABLE myemp AS SELECT * FROM emp;DEMO:向myemp表中增加数据
INSERT INTO myemp (empno,ename,job,sal,hiredate,comm,mgr,deptno)VALUES (1002,'李四','CLERCK',5000.00,SYSDATE,1000.00,7789,40);插入数据的时候要保证插入值类型和对应字段的类型要一致。
DEMO:每个字段都需要插入数据
INSERT INTO myemp VALUES ('1003','王五','CLERCK',7790,SYSDATE,3000.00,NULL,40);DEMO:批量增加数据
INSERT INTO myemp(empno,ename,job,sal) SELECT 1004,'AAA','总裁',19600 FROM dual union SELECT 1005,'AAA','总裁',19600 FROM dual union SELECT 1006,'AAA','总裁',19600 FROM dual这种方式在sql语句级别实现批量插入数据是不常用,常用方式是在jdbc级别去实现。
基本的语法
UPDATE 表名称 SET 字段=新的值,字段=新的值···WHERE 过滤条件
DEMO:将史密斯的基本工资修改为8000,佣金修改为1000
UPDATE myemp SET sal=8000.00,comm=1000 WHERE ename='SMITH';DEMO:将ALLEN的工资修改为SMITH的工资
UPDATE myemp SET sal=(SELECT sal FROM myemp WHERE ename='SMITH') WHERE ename='ALLEN';DEMO:将低于平均工资的雇员的工资上涨20%
UPDATE myemp SET sal=sal*1.2 WHERE sal<( SELECT AVG(sal) FROM myemp);删除的是表中的数据,表结构还在如果要删除表结构需要使用DROP关键字 基本语法: DELETE FROM 数据表 WHERE 过滤条件
DEMO:删除雇员编号是7788的雇员信息
DELETE FROM myemp WHERE empno=7788;DEMO:删除雇员编号是7934、7900、1234的雇员的数据
DELETE FROM myemp WHERE empno IN (7934,7900,1234); DELETE FROM myemp WHERE empno=7934 OR empno=7900 OR empno=1234);一般情况下每张数据表中都会有一个字段作为数据的唯一区分标志,而且该字段的数据不能重复,这个字段叫作数据表的主键。
在之前我们插入myemp表的数据的时候需要手工指定出主键值(目的是为了保证主键字段的数据不能重复)。
INSERT INTO myemp (empno,ename,job) VALUES (1001,张三-1,职员); INSERT INTO myemp (empno,ename,job) VALUES (1002,张三-2,职员); INSERT INTO myemp (empno,ename,job) VALUES (1003,张三-3,职员);
使用oracle的序列实现主键的自增长,要使用序列就需要先创建序列,基本的语法:
DROP SEQUENCE 序列名称;----表示删除序列CREATE SEQUENCE 序列名称;-----表示创建序列INSERT INTO myemp (empno,ename,job) VALUES (序列名.nextval,‘张三-1’,‘职员’);-----使用序列DEMO:创建和使用序列
DROP SEQUENCE empno_sq; CREATE SEQUENCE empno_sq; INSERT INTO myemp (empno,ename,job) VALUES (empno_sq.nextval,'张三-1','职员'); INSERT INTO myemp (empno,ename,job) VALUES (empno_sq.nextval,'张三-2','职员'); INSERT INTO myemp (empno,ename,job) VALUES (empno_sq.nextval,'张三-3','职员');以上使用序列实现了主键值的自动增长,但是从1开始增长,我们也可以指定从需要的数字开始增长, 需要在创建序列的时候指定开始值。
DEMO:删除数据表 DROP TABLE 表名称;
DEMO:查看回收站 SHOW RECYCLEBIN;
DEMO:清空回收站 PURGE RECYCLEBIN;
DEMO:彻底删除数据表(不保存在回收站) DROP TABLE 表名称 PURGE;
DEMO:指定序列的开始值
DROP SEQUENCE empno_sq; CREATE SEQUENCE empno_sq START WITH 1001; DROP TABLE myemp PURGE; CREATE TABLE myemp AS SELECT * FROM emp; INSERT INTO myemp(empno,ename,job) VALUES (empno_sq.nextval,'张三-1','职员'); INSERT INTO myemp(empno,ename,job) VALUES (empno_sq.nextval,'张三-2','职员'); INSERT INTO myemp(empno,ename,job) VALUES (empno_sq.nextval,'张三-3','职员');DEMO:指定步长(指定每条数据增长的步长)
DROP SEQUENCE empno_sq; CREATE SEQUENCE empno_sq INCREMENT BY 10 START WITH 1001; DROP TABLE myemp PURGE; CREATE TABLE myemp AS SELECT * FROM emp; INSERT INTO myemp(empno,ename,job) VALUES (empno_sq.nextval,'张三-1','职员'); INSERT INTO myemp (empno,ename,job) VALUES (empno_sq.nextval,'张三-2','职员'); INSERT INTO myemp (empno,ename,job) VALUES (empno_sq.nextval,'张三-3','职员');总结:
1.多张数据表可以使用一个序列(但是不建议去使用) 2.以上的开始值可能不是我们自己指定的开始值,这是系统的默认原因,你切换到SYS用户下执行
“ALTER SYSTEM SET deferred_segment_creation=FALSE;”
切换到超级管理员用户下:CONN SYS/CHANGE_ON_INSTALL AS SYSDBA; 执行命令:ALTER SYSTEM SET defferred_segment_creation=FALSE;