数据的操作、序列的创建和使用

    xiaoxiao2022-07-07  185

    文章目录

    数据的增加修改数据删除数据序列的使用

    数据的增加

    插入数据的基本语法:

    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;
    最新回复(0)