zoukankan      html  css  js  c++  java
  • sql 两大类 DDL数据定义语言 和DCL数据控制语言

           SQL分为五大类:

      DDL:数据定义语言   DCL:数据控制语言     DML:数据的操纵语言  DTL:数据事务语言  DQL:数据查询语言。

    DDL (date definition language):create,drop,alter,rename to   创建表,删除表,alter对列的修改 对列中约束的修改 ,修改列名 alter table 表名 rename column 原列名 to 新列名 。(对表和列的操作)

      创建表:定义列(列名),   数据类型,添加约束

    数据类型:

                 数字类型 : number (数字位数)          (数字总位数,小数位数)            

                  字符型  :  char(字符长度) 规定的字符长度  不够空格填满      varchar2(字符长度)    不定长  最长字符长度

                日期类型  :  Date        年月日时分秒
                                      Time        时分秒
                                      Timestamp    年月日时分秒,还有小时位,如1.2秒

                                    插入日期格式' 03-5月-1990' 或者 to_date('年月日','yyyy-mm-dd')

                大数据类型:clob character large object    大字符型对象,最大可存4G
                                      blob binary large object    大二进制对象,最大可存4G       (图片,视频,音频,转换                    成2进制存取)

         DCL: 数据控制语言  

             约束  constraint

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

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

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

    创建表的第二种方法:

    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 模拟非空


    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 约束名


       

     

           

      

  • 相关阅读:
    mui h5 动态实现数据的移除和数据操作完后的重新获取
    mui H5 js动态添加不同类型的数据
    hbuider 中点击就显示出一个单选的列表 ,然后后台跨域向里面动态添加数据,注意里面的格式是json object
    H-UI的前端处理验证,判断是否已经存在,比较健全的模板,可以自己添加一些校验
    spring mvc 和mybatis整合 的异常处理
    列表显示数据 但是数据的字体颜色要js添加
    hadoop环境都配置好后,当运行sbin下的start-hdfs.sh时报WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...错误
    VisualVM初次使用BTrace功能方法步骤
    二叉树--递归实现
    二叉树--非递归实现
  • 原文地址:https://www.cnblogs.com/w-xibao/p/7797561.html
Copyright © 2011-2022 走看看