• DDL和DML


    DDL (Data Definition Language 数据定义语言)
    create table 创建表    
    alter table  修改表   
    drop table 删除表   
    truncate table 删除表中所有行    
    create index 创建索引   
    drop index  删除索引 
    当执行DDL语句时,在每一条语句前后,oracle都将提交当前的事务。如果用户使用insert命令将记录插入到数据库后,执行了一条DDL语句(如create table),此时来自insert命令的数据将被提交到数据库。当DDL语句执行完成时,DDL语句会被自动提交,不能回滚。 
    DML (Data Manipulation Language 数据操作语言)
    insert 将记录插入到数据库 
    update 修改数据库的记录 
    delete 删除数据库的记录 
    当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动发出commit命令,使未提交的DML命令提交。

    1. DDL语句

    SQL语句:结构化查询语句,使用SQL与数据库“沟通”,完成相应的数据库操作。

    l DDL:数据定义语言,用来维护数据库对象

    1.1 创建表

    Ø CREATE:创建表

    演示:创建员工表

    CREATE TABLE employee(

    id NUMBER(4),

    name VARCHAR2(20),

    gender CHAR(1),

    birth DATE,

    salary NUMBER(6,2),

    job VARCHAR2(30),

    deptno NUMBER(2)

    );

    Ø DESC:查看表的数据结构

    演示:查看创建的员工表

    DESC employee;

    clip_image002

    Ø DEFAULT:设置默认值

    可以通过DEFAULT子句给列指定默认值

    演示:建表时给gender默认值为”M”

    CREATE TABLE emptest(

    id NUMBER(4),

    name VARCHAR2(20),

    gender CHAR(1) DEFAULT 'M',

    birth DATE

    );

    Ø NOT NULL:非空

    默认情况下,任何列都允许有空值。非空(NOT NULL)是一种条件约束,用于确保字段值不为空,当某个字段被设置了非空约束条件,这个字段中必须存在有效值,即:当执行插入数据操作时,必须提供这个列的数据;当执行更新操作时,不能给这个列的值设置为NULL。

    演示:创建员工表设置那么为非空字段

    CREATE TABLE emptest(

    id NUMBER(4) ,

    name VARCHAR2(20) NOT NULL,

    gender CHAR(1) DEFAULT 'M',

    birth DATE

    );

    clip_image004

    1.2 修改表

    Ø RENAME:修改表名

    演示:修改表名

    RENAME emptest to testemp;

    Ø ALTER TABLE的ADD子句

    增加列,列只能增加在最后,不能插入现有的列中。

    演示:在testemp表下面增加hiredate列,并将默认值设置为当前时间

    ALTER TABLE testemp ADD(hiredate DATE DEFAULT sysdate);

    Ø ALTER TABLE的DROP子句

    删除列,删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间。

    演示:删除testemp表下的hiredate

    ALTER TABLE testemp DROP (hiredate);

    Ø DROP删除表

    DROP TABLE emptest;

    Ø ALTER TABLE的MODIFY子句

    修改列,使用MODIFY可以改变表中列的数据类型、长度和默认值,注意这种修改仅对以后插入的数据有效。另外如果表中已经有数据的情况下,把长度由大改小,有可能不成功,比如原来类型是VARCHAR2(100),其中已经存放了100字节长度的数据,如果改为80字节,则不会修改成功。

    演示:修改testemp表中name的长度为30

    ALTER TABLE testemp MODIFY(name VARCHAR2(30));

    2. DML语句

    l 用于增删改表中数据,DML是伴随TCL事务控制的。

    Ø INSERT

    INSERT语句用来给数据表增加记录,每次增加一条记录。所有的DML操作,需要再执行事务提交语句COMMIT才算真正确认了此操作。

    演示:想testemp中插入一条记录

    INSERT INTO testemp (id,name,gender) VALUES (1,'张三','M');

    COMMIT;

    clip_image006

    插入数据时忽略字段则是全列插入,顺序不能错误,如下:

    INSERT INTO testemp VALUES (10,'李四','F',sysdate);

    COMMIT;

    Ø UPDATE

    更新表中的记录,需要配合WHERE子句使用,否则全表的数据都会被更新。

    演示:更新testemp表中张三的ID为2

    UPDATE testemp SET id=2 WHERE name='张三';

    COMMIT;

    clip_image008

    同时修改两个类型:

    UPDATE testemp SET id=5,name='王五' WHERE name='李四';

    COMMIT;

    Ø DELETE

    删除表中的记录,和UPDATE一样,需要配合WHERE子句使用,不然会将全表数据删除。

    演示:将testemp表中id为2的记录删除

    DELETE FROM testemp WHERE id=2;

    清空表:

    DELETE FROM testemp;

  • 相关阅读:
    Zookeeper and The Infinite Zoo(CF1491D)(位运算)
    树上差分
    最近公共祖先
    极角排序
    最长路spfa
    树的基础
    树的遍历~
    最小圆覆盖板子
    动态凸包(询问点是否在凸包内部)
    凸包内最大三角形
  • 原文地址:https://www.cnblogs.com/T8888/p/13879994.html
Copyright © 2020-2023  润新知