zoukankan      html  css  js  c++  java
  • Oracle数据库教程-数据定义语言(表操作)

    创建表

    建表语法:

    CREATE TABLE 表名 (
    
     列1 数据类型 [primary key],
    
     列2 数据类型 default 默认值 [not null],
    
      …,
     constraint 约束名 约束类型(列),
     …
    )
    /

    例如,创建学生信息表:

    --创建表
    CREATE TABLE INFOS(
    STUID VARCHAR2(7) NOT NULL, --学号 学号=‘S’+班号+2位序号
    STUNAME VARCHAR2(10) NOT NULL, --姓名
    GENDER VARCHAR2(2) NOT NULL, --性别
    AGE NUMBER(2) NOT NULL, --年龄
    SEAT NUMBER(2) NOT NULL, --座号
    ENROLLDATE DATE, --入学时间
    STUADDRESS VARCHAR2(50) DEFAULT '地址不详', --住址
    CLASSNO VARCHAR2(4) NOT NULL --班号 班号=学期序号+班级序号
    )

    注意:在 Oracle 代码中, “/” 执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/” 。

    数据类型

    Oracle数据库中常用的数据类型有CHAR、VARCHAR2、NUMBER、DATE、TIMESTAMP、CLOB、BLOB、LONG。

    类型

    含义

    CHAR(length)

    存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

    VARCHAR2(length)

    存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

    NUMBER(p,s)

    既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。 Number(10,3)

    DATE

    存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。TO_DATE()系统函数,格式化日期。

    TIMESTAMP

    不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。

    CLOB

    存储大的文本,比如存储非结构化的XML文档

    BLOB

    存储二进制对象,如图形、视频、声音等。

    LONG

    LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的。LONG 数据类型中存储的是可变长字

       能够操作 LONG 的 SQL 语句:

        1、Select语句

        2、Update语句中的SET语句

        3、Insert语句中的VALUES语句

      数据类型的限制:

        1、一个表中只能包含一个 LONG 类型的列。

        2、不能索引LONG类型列。

        3、不能将含有LONG类型列的表作聚簇。

        4、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insert into ...select。

        5、不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如create table as select。

        6、不能对LONG类型列加约束条件(NULL、NOT NULL、DEFAULT除外),如:关键字列(PRIMARY KEY)不能是 LONG 数据类型。

        7、LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。

        8、LONG类型列不能用于分布查询。

    约束类型

    【】内是惯性命名法

    --主键约束 
    ALTER TABLE 表名 ADD CONSTRAINT 主键约束名【PK_表名】 PRIMARY KEY(列名)
    
    --唯一约束 
    ALTER TABLE 表名 ADD CONSTRAINT 唯一约束名【UN_表名_列名】 UNIQUE(列名)
    
    --默认约束 
    ALTER TABLE 表名 MODIFY 列名 DEFAULT 默认值
    
    --检查约束 
    ALTER TABLE 表名 ADD CONSTRAINT 检查约束名【CK_表名_列名】 CHECK(列名 条件)
    
    --外键约束 
    ALTER TABLE 表名 ADD CONSTRAINT 外键约束名【FK_子表名_主表名_列名】 FOREIGN KEY REFERENCES 主表名(列名)

    例如:为学生信息表添加约束

    --为INFOS 添加主键约束
    ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID)
    
    --为INFOS 添加唯一约束
    ALTER TABLE INFOS ADD CONSTRAINT UN_INFOS_CLASSNO UNIQUE(CLASSNO)
    
    --为INFOS 添加默认约束
    ALTER TABLE INFOS MODIFY ENROLLDATE DEFAULT TO_DATE('2018-01-01','YYYY-MM-DD')
    
    --为INFOS 添加检查约束
    ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER='' OR GENDER='')
    
    --为INFOS 添加外键约束
    ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID)

    删除约束

    --删除约束  
    ALTER TABLE 表名 DROP 约束名

    修改表

    --添加列(加字段)
    
    --语法: alter table 表名 add(列名 数据类型 [not null], …);
    
    alter table person add address01 varchar2(300);
    
    alter table person add address02 varchar2(300);
    
    ​
    --修改列的类型
    
    --语法: alter table 表名 modify(列名 数据类型 [not null], …);
    
    alter table person modify address01 varchar2(500);
    
    ​
    --修改列名
    
    --语法: alter table 表名 rename column 旧列名 to 新列名;
    
    alter table person rename column address02 to address;
    
    ​
    --删除列
    
    --语法: alter table 表名 drop(列名 1, 列名 2, …);
    
    alter table person drop column address;

    删除表

    --语法(如果没有指定 purge 参数,被删除的表就会保存在回收站中)
    drop table 表名 [purge];
    
    
    --删除 userinfo表
    --保存在回收站中,可以从回收站中恢复.
    drop table userinfo;
    
    --永久删除表,不会保存在回收站中
    drop table userinfo purge;

    复制表

    --语法:
    create table 表名 as select 列名 from 表名 [where 条件];
    
    
    --复制表的结构和数据:
    
    --创建一个 userinfo表的备份表(复制表的结构和数据)
    
    create table userinfo as select * from user;
    
    
    --只复制表的结构:
    
    create table userinfo as select * from user where 1=2;
  • 相关阅读:
    HDU_1009_FatMouse' Trade
    WCF配置
    SQL Server ltrim(rtrim()) 去不掉空格
    安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details"错误.原因是启动"VisualSVN Server"失败
    WPF 设置回车触发按钮时间
    WPF:验证登录后关闭登录窗口,显示主窗口的解决方法
    无法获取链接服务器 "XXX" 的 OLE DB 访问接口 "SQLNCLI10" 的架构行集 "DBSCHEMA_TABLES_INFO"。该访问接口支持该接口,但使用该接口时返回了失败代码。
    The current identity ( XXXX) does not have write access to ‘C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files’.解决办法
    安装SQL sever2008时显示重新启动计算机规则失败,应该怎么解决?
    清楚数据库日志的方法
  • 原文地址:https://www.cnblogs.com/buaixiaoyumi/p/13565156.html
Copyright © 2011-2022 走看看