zoukankan      html  css  js  c++  java
  • Oracle数据库3

    在前两章,我们学习了SQL语言中基本的一些查询语句,也就是数据库查询语言DQL,今天我们要介绍的数据库操作语言DML

    数据库中,我们除了查询之外,最主要的就是日常的增、删、改、查了。


    数据库操作语言 DML
    插入
    删除
    修改

    1、--创建一张表

    CREATE TABLE BJSXT AS SELECT * FROM EMP;(按照EMP表达的格式创建一张名为BJSXT的表)

    之后我们用SELECT * FROM BJSXT;可以查询到我们建立的表

    2、插入--必须完全参照表的结构顺序
    INSERT INTO BJSXT VALUES('裴老师','teacher',666,333);
    INSERT INTO BJSXT VALUES('teacher','胡老师',666,333);

    --错误的方式
    INSERT INTO BJSXT VALUES('teacher','胡老师',666,333,10);
    INSERT INTO BJSXT VALUES('teacher','胡老师',666);

    --自定义插入顺序
    INSERT INTO BONUS(ENAME,SAL) VALUES('闫老师',777);

    3--删除
    DELETE FROM BONUS;
    DELETE FROM BONUS WHERE SAL>666;
    DELETE FROM EMP WHERE ENAME LIKE '%A%' AND SAL >1500 AND DEPTNO = 10;

    4--修改
    UPDATE BONUS SET SAL = 8888 WHERE ENAME='裴老师';
    UPDATE BONUS SET SAL = 8888,COMM = 888 WHERE ENAME='裴老师';

    2--数据库的事务

    --事务已经被开启

    一旦对数据库的表进行操作,即代表事务的开始
    DELETE FROM BJSXT WHERE EMPNO = 7788;
    DELETE FROM BJSXT WHERE EMPNO = 7781;
    DELETE FROM BJSXT WHERE EMPNO = 7782;
    INSERT INTO
    UPDATE
    DELETE FROM BJSXT WHERE EMPNO = 7783;
    DELETE FROM BJSXT WHERE EMPNO = 7784;
    DELETE FROM BJSXT WHERE EMPNO = 7785;
    DELETE FROM BJSXT WHERE EMPNO = 7786;

    --结束事务
    /*
    手动结束
    COMMIT;
    提交本次事务操作
    ROLLBACK;
    回滚本次事务操作
    自动结束
    当用户执行DDL语句的时候(创建表,删除表,修改表结构)
    事务自动提交
    用户正常退出
    事务自动提交
    用户非正常退出
    事务回滚
    系统崩溃或断电时
    事务自动回滚
    事务的四大特性
    ACID原则
    原子性
    事务中的操作要么全部执行,要么全部回滚
    一致性
    事务的执行前后,数据库处于一个一致的状态
    隔离性
    事务的执行不受其他事务的干扰
    持久性
    事务在提交之后,就会进入一个新的状态,所有的数据不能被改变
    事务的隔离级别
    读未提交--给数据加锁
    读已提交o--解决脏读
    可重复读--解决虚读,和幻读的删除
    可序列化o--解决幻读的新增

    更新丢失
    是因为没有锁
    脏读
    读取别人未提交的数据
    虚读
    第一个事务读取的数据,另外一个事务可以修改
    幻读
    第一个事务中读取的数据多了第二个事务插入的数据

    死锁ORA-00060
    线程1
    DELETE FROM BJSXT WHERE EMPNO = 7499;
    线程2
    DELETE FROM BJSXT WHERE EMPNO = 7521;
    线程1
    DELETE FROM BJSXT WHERE EMPNO = 7521;
    线程2
    DELETE FROM BJSXT WHERE EMPNO = 7499;
    */

    /*
    范式
    第一范式
    每一列都是不可分割的原子数据项
    第二范式(2NF)
    要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性
    每一行数据都要有主键,主键是唯一的,
    第三范式
    任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]
    所有的属性都要完全依赖于主键
    表与表之间的关系
    1:1
    随意持有对方主键
    拥有相同主键
    1:N
    外键由多方进行维护
    N:N
    建立中间表,在中间表维护

    /*
    DDL:数据库定义语言



    */

    SELECT TABLE_NAME FROM USER_TABLES;

    设计要求:
    建立一张用来存储学生信息的表,
    表中的字段包含了学生的学号、姓名、年龄、入学日期、年级、班级、email等信息,
    并且为grade指定了默认值为1,
    如果在插入数据时不指定grade得值,就代表是一年级的学生
    --如何创建表
    CREATE TABLE STUDENT(
    SNO VARCHAR2(12),
    NAME VARCHAR2(12),
    AGE NUMBER(3),
    SCHOOLDATE DATE,
    GRADE NUMBER(2) DEFAULT 1,
    CLAZZ NUMBER(2),
    EMAIL VARCHAR2(100)
    );

    --刚创建的表示一个空表,需要人为的插入数据
    INSERT INTO STUDENT VALUES('BJSXT2016','张三丰',80,SYSDATE,NULL,10,'ZSF@BJSXT.COM');
    INSERT INTO STUDENT(SNO,NAME) VALUES('BJSXT2015','张无忌');

    --新增一个列
    ALTER TABLE STUDENT ADD BIRTHDAY DATE;
    --删除一个列
    ALTER TABLE STUDENT DROP COLUMN AGE;
    --修改一个列
    ALTER TABLE STUDENT MODIFY SNO VARCHAR2(40);
    --修改表名称
    RENAME STUDENT TO STU;
    --删除表
    DROP TABLE STU;

  • 相关阅读:
    shell脚本,文件里面的英文大小写替换方法。
    shell脚本,100以内的质数有哪些?
    shell脚本,当用sed删除某一文件里面的内容时,并追加到同一个文件会出现问题。
    shell脚本,按行读取文件的几种方法。
    shell脚本,锁机制
    shell脚本,通过一个shell程序计算n的阶乘。
    shell脚本,如何写进度条。
    shell脚本,判断给出的字符串是否相等。
    shell脚本,按空格开始60秒的倒计时。
    18:django 日志系统
  • 原文地址:https://www.cnblogs.com/yuyufeng/p/5418360.html
Copyright © 2011-2022 走看看