• Oracle DDL 数据定义语言


     SQL分为5大类:

             DDL:数据定义语言

       DCL:数据控制语言

       DML:数据操纵语言

       DTL:数据事务语言

       DQL:数据查询语言

    【创建表格分为两个步骤:  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

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

      

      1.Oracle中的5种约束类

               primary key                         PK                                 含义:主键约束,非空唯一(表中最多只能含有一个主键约束)

               not null                                NN                                含义:非空

               unique                                 UK                                含义:唯一    

               check                                  CK                                 含义:自定义约束(往往用来定义业务的约束,如分数不能为负)                                

               foreign key                          FK                                 含义:外键约束(表示此列的值是引用自己的或其他表的主键)

                 【 注意:能够被外键所引用的列,其本身也必须是主键约束或唯一性约束】

      2.创建表格的第一种方法:

                  语法:

               create table 表名(

                        列名 数据类型(默认值) 约束,

                        列名 数据类型(默认值) 约束,

                        列名 数据类型(默认值) 约束

               );

           例:

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

             create table tbl_user(

                      id number(6),

                      name varchar2(25),

                      password varchar2(25)

       );

     

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

     

      添加约束名的语法:

               constraint 约束名 约束类型;

      约束名的命名规范:

               表名_列名_约束类型缩写;

    3.添加约束的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) reference primary key(id)

                    );

      6.补充:创建表格的第二种方法(根据已经存在的某张表创建一张新表格):

               --复制某张表中的指定列,构建一张新的表格(拷贝了数据)

               create table 新表格名 as select 列,列,列from原表格;

               例:创建一张表格,表格中只有s_emp表中的idfirst_name,salary三列数据

               create table new_emp as select id,first_name,salary from s_emp;

               --复制了某张表格的指定列,构建一张新表格(不拷贝数据,取表结构)

               create table 新表格名 as select 列,列,列from原表格 where 恒假条件;

               例:创建一张表格,表格中只有s_emp表中的idfirst_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 约束名

  • 相关阅读:
    分享一个难得的YiBo微博客户端应用源码Android版
    js的cookie操作及知识点详解
    c#中out参数的作用
    取消安卓listview,scrollview,gridview滑动时候边缘模糊问题
    分块+deque维护 Codeforces Round #260 (Div. 1) D. Serega and Fun
    并发
    感想
    windows服务器允许MySQL远程连接
    C. Vasya And The Mushrooms
    cf1017 D. The Wu
  • 原文地址:https://www.cnblogs.com/ty-v/p/7880315.html
Copyright © 2020-2023  润新知