• Oracle中DDL的基础知识


    1.SQL分为5大类:
    DDL:数据定义语言
    DCL:数据控制语言
    DML:数据操纵语言
    DTL:数据事务语言
    DQL:数据查询语言

    2.DDL(data definition language):create,drop,alter,rename to

    创建表格分为两个步骤:
    a.定义列和数据类型
    b.添加约束

    数据类型:
    1.数字类型,可以做所有的数学运算
    number
    number(4)代表整数,最大能存9999
    number(7,2)代表double类型,整数长度为5,小数位2

    2.字符型,可以做拼接运算
    char(20) 定长
    varchar2(20) 不定长,表示字符窜最长是20
    注意:字符串在数据库中用''

    3.日期类型,可以做加减运算
    Date 年月日时分秒
    Time 时分秒
    Timestamp 年月日时分秒,还有小时位,如1.2秒

    4.大数据类型
    clob character large object 大字符型对象,最大可存4G
    blob binary large object 大二进制对象,最大可存4G
    注意:大数据类型不支持查看结果






    约束(constraint)
    作用:约束表格中是数据,相对于数据类型而言,用来进一步限定表中的数据,使得添加到表中的数据都是合法有效的,符合业务需求的数据,不会出现无效数据


    3.Oracle中的5种约束类型
    primary key PK 含义:主键约束,非空唯一(表中最多只能含有一个主键约束)
    not null NN 含义:非空
    unique UK 含义:唯一
    check CK 含义:自定义约束(往往用来定义业务的约束,如分数不能为负)
    foreign key FK 含义:外键约束(表示此列的值是引用自己的或其他表的主键)
    注意:能够被外键所引用的列,其本身也必须是主键约束或唯一性约束


    4.创建表格的第一种方法:
    语法:
    create table 表名(
    列名 数据类型(默认值) 约束,
    列名 数据类型(默认值) 约束,
    列名 数据类型(默认值) 约束
    );

    例:
    --创建用户表(无约束)
    create table tbl_user(
    id number(6),
    name varchar2(25),
    password varchar2(25)
    );

    注意:在创建表格时,如果不定义约束的名字,则数据库会给约束提供默认名字,并且把这些内容存储到数据库字典中

    添加约束名的语法:
    constraint 约束名 约束类型;
    约束名的命名规范:
    表名_列名_约束类型缩写;

    --创建用户表(有约束)


    5.添加约束的2中方法:
    1.列级语法添加——边定义,边添加约束
    如:创建用户表

    2.【重点】表级语法添加——先定义列,然后在添加约束
    --创建账户表(tbl_account,id,accountNo非空唯一,realName,password六位数/默认值000000,balance不能小于0)

    create table tbl_account (
    id number(6),
    accountNo number(6) not null,
    realName varchar2(26) not null ,
    password char(6) default '000000',
    balance number(10,2),

    constraints tbl_account_id_pk i primary key(id),
    constraints tbl_account_accountNo_nn unique (accountNo),
    constraints tbl_account_balance_ck check (balance>0)
    );

    注意:not null不支持表级语法,只能支持列级语法添加。但是也可以采用check 模拟非空
    例:
    --创建账户表(tbl_account,id,accountNo非空唯一,realName,password六位数/默认值000000,balance不能小于0)

    create table tbl_account (
    id number(6),
    accountNo number(6) ,
    realName varchar2(26) not null ,
    password char(6) default '000000',
    balance number(10,2),

    constraints tbl_account_id_pk primary key (id),
    constraints tbl_account_accountNo_ck check (accountNo is not null) ,
    constraints tbl_account_accountNo_un unique(accountNo) ,
    constraints tbl_account_balance_ck check (balance>0)
    );





    --创建员工表(自关联)

    create table p_emp(
    id number(6),
    name varchar2(25),
    title varchar2(25),
    salary number(10,2),
    start_date date,
    manager_id number(6),

    constraint p_emp_id_pk primary key (id),
    constraint p_emp_name_ck check(name is not null),
    constraint p_emp_title_ck check(title is not null),
    constraint p_emp_start_date_ck check(start_date is not null),
    constraint p_emp_manager_id_fk foreign key(manager_id) references primary key(id)

    );

    6.补充:创建表格的第二种方法(根据已经存在的某张表创建一张新表格):
    --复制某张表中的指定列,构建一张新的表格(拷贝了数据)
    create table 新表格名 as select 列,列,列from原表格;
    例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
    create table new_emp as select id,first_name,salary from s_emp;

    --复制了某张表格的指定列,构建一张新表格(不拷贝数据,取表结构)
    create table 新表格名 as select 列,列,列from原表格 where 恒假条件;
    例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
    create table new_emp as select id,first_name,salary from s_emp where 1=2;
    注意:此处1=2表示恒false,则数据库不会被拷贝,只能得到一张空表

    》》》》


    删除表格(注意约束控制)
    基本语法:drop table 表名 [cascade constraints];
    注意:cascade constraints表示连带约束一起删除(暴力删除);如果不添加,当有外键引用,不能删除。
    例:

    修改表格:
    --列相关
    1.添加列
    alter table 表名 add 列名 数据类型 [default默认值] 约束;
    例:--给tbl_user表添加一列年龄
    alter table tbl_user add age number(3) default 18 not null;

    2.删除列
    alter table 表名 drop column 列名;【注意关键字column】
    例:删除tbl_user表中age列
    alter table tbl_user drop column age;

    3.修改列(修改列数据类型和约束)
    alter table 表名 modify 原列名 新数据类型 新约束;
    例:修改tbl_user表中password列为char(6)默认值‘000000’非空
    alter table tbl_user modify password default'000000' not null;

    4.修改列名
    alter table 表名 rename column 原列名 to 新列名;
    --修改tbl_user表中password列名为pwd
    alter table tbl_user rename column password to pwd;





    --约束相关
    1.添加约束
    alter table 表名 add constraint 约束名 约束类型(列名)
    注意:如果是添加非空约束,则:
    alter table 表名 add constraint 表名_列名_nn check (is not null)

    注意:所有的DDL语句都是自动提交事务的,所以语句是不能回滚的
    2.删除约束
    alter table 表名 drop constraint 约束名;

    3.使约束生效
    alter table 表名 enable constraint 约束名

    4.使约束失效
    alter table 表名 disable constraint 约束名

  • 相关阅读:
    解析大型.NET ERP系统 权限模块设计与实现
    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架
    解析大型.NET ERP系统 单据编码功能实现
    解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计
    Windows 10 部署Enterprise Solution 5.5
    解析大型.NET ERP系统 设计异常处理模块
    解析大型.NET ERP系统 业务逻辑设计与实现
    解析大型.NET ERP系统 多国语言实现
    Enterprise Solution 管理软件开发框架流程实战
    解析大型.NET ERP系统 数据审计功能
  • 原文地址:https://www.cnblogs.com/qianqian528/p/7794838.html
Copyright © 2020-2023  润新知