• Oracle笔记-表的管理



    3.1创建和管理表
    在Oracle表中使用的emp,dept,sal都是系统内建好的表,那么在
    SQL语法中同样支持了表的创建语句,要想创建表,则应先了解下Oracle
    中最常用的几种数据类型
    3.1.1常用的数据类型--(重点)
    常用的数据类型,如之前的emp表中已经出现了三种
    NUMBER(n):表示一个整数,数字长度是n,可以使用int代替
    NUMBER(m,n):表示一个小数,小数长度为n,整数长度为m-n,可以使用FLOAT代替
    VARCHAR/VARCHAR2::表示的是一个字符串,有长度限制,为255
    DATE:表示日期的类型,日期要按照标准的日期格式进行存放
    CLOB:大对象,表示大文本数据,一般可以存放4G的文本
    BLOB:大对象,表示二进制数据,最大可以存放4G,例如:存放电影,歌曲,图片
    3.1.2表的建立--(重点)
    表的建立按照标准的语法进行,但是在表的建立时候有时会指定约束,那么此处先给出一个来建立的一个简单语法
    表的建立语法
    CREATE TABLE 表名称(
    字段名称1 字段类型 [DEFAULT 默认值],
    字段名称2 字段类型 [DEFAULT 默认值],
    ...
    字段名称n 字段类型 [DEFAULT 默认值]

    之前学习过复制表的语法--------------------------------------------------
    CREATE TABLE 表名称 AS (子查询)
    --如果现在子查询写的是 select * from emp,表示将表结构和表内容一起复制
    --如果现在子查询、写的是 select * from emp where1=2,加入了一个永远不可能成立的条件,则此时表示的只是复制表结构,但是不复制表内容

    CREATE TABLE tmp AS(SELECT * FROM emp WHERE 1=2);

    SELECT * FROM tmp;

    例子:创建表
    CREATE TABLE person
    (
    pid VARCHAR2(18),
    NAME VARCHAR2(200),
    age NUMBER(3),
    birthday DATE,
    sex VARCHAR2(2) DEFAULT '男'
    );


    SELECT * FROM person;

    像表中插入数据
    INSERT INTO person(pid,NAME,age,birthday,sex)VALUES
    ('1111111111','张三',30,to_date('1976-02-13','yyyy-mm-dd'),'女');

    SELECT * FROM person;

    SELECT to_date('1889-09-12','yyyy-mm-dd') from dual;

    INSERT INTO person(pid,NAME,age,birthday) VALUES
    ('22222222','李四',31,to_date('1975-02-13','yyyy-mm-dd'));--sex默认了,两下都不要写

    如果现在希望在表中增加一个address的字段,则可以将表先删除之后再重新创建

    3.1.3表的删除--(重点)
    DROP TABLE 表名称
    例子:删除person表
    DROP TABLE person;
    重新编写新的脚本
    CREATE TABLE person
    (
    pid VARCHAR2(18),
    NAME VARCHAR2(200),
    age NUMBER(3),
    birthday DATE,
    sex VARCHAR2(2) DEFAULT '男',
    adress VARCHAR(200)
    );

    SELECT * FROM person;

    如果现在假设一个表中已经存在了大量的记录,再删除的话,是不是很麻烦,
    所以在SQL语句之中提供了专门修改表结构的命令。增加列,修改列。
    3.1.4表的修改(了解)
    --在一般的数据库程序开发中,很少去修改表结构,这一点在IBM DB2数据库中就没有
    --提供alter table指令,所以在建表的时候一定要考虑到位
    在SQL语法操作中,提供了ALTER指令,通过ALTER指令就可以增加新的列。
    例如:为最早的person表中增加一个address列
    --数据库脚本指删除,创建,测试数据

    DROP TABLE person;

    CREATE TABLE person
    (
    pid VARCHAR2(18),
    NAME VARCHAR2(200),
    age NUMBER(3),
    birthday DATE,
    sex VARCHAR2(2) DEFAULT '男'
    );

    INSERT INTO person(pid,NAME,age,birthday,sex)VALUES
    ('1111111111','张三',30,to_date('1976-02-13','yyyy-mm-dd'),'女');

    INSERT INTO person(pid,NAME,age,birthday) VALUES
    ('22222222','李四',31,to_date('1975-02-13','yyyy-mm-dd'));

    ALTER TABLE 表名称 ADD(列的名称 列的类型 DEFAULT 默认值,列的名称 列的类型 DEFAULT 默认值,。。。)


    ALTER TABLE person ADD(address VARCHAR2(200 ) DEFAULT '暂无地址' )


    现在假设修改person中name字段的值,为name的长度修改为50,默认值为”无名氏“

    ALTER TABLE 表名称 MODIFY(列的名称 列的类型 DEFAULT 默认值)
    --但是在修改表结构的时候。如果假设数据库中对应的字段里有一个很长的数据,则无法将表的长度缩小
    --例如现在name字段中存在一个长度为20个字符的字母,原本的name可以容纳200个内容,但是此时要将name字段的长度修改为10,则肯定无法实现

    例子:修改person表中的name列,加入默认值,修改大小

    ALTER TABLE person MODIFY (NAME VARCHAR2(20)DEFAULT '无名氏');

    例子:再向表中插入数据,但是不插入姓名和内容

    INSERT INTO person(pid,age,birthday) VALUES
    ('22222222',31,to_date('1975-02-13','yyyy-mm-dd'));

    --从以上的操作结果中发现身份证编号重复了,是因为没有约束条件

    3.1.5为表重命名(了解)
    --在Oracle中提供了rename命令,可以为表重新进行命名,但是此语句只能在Oracle照片那个使用

    RENAME 旧的表名称 TO 新的表名称;

    例子:将person表重命名为tperson

    RENAME person TO tperson;

    SELECT * FROM tperson;

    3.1.6截断表

    如果现在person表中的一条数据使用delete语句删除了,即可通过rollback进行回滚,如果现在假设想要清空一张
    表的数据,但是同时又不需要回滚,可以立刻释放资源就需要使用截断

    TRUNCATE TABLE 表名称;
    例子:截断tperson表

    TRUNCATE TABLE tperson;--立刻释放资源

    SELECT * FROM tperson;

  • 相关阅读:
    /etc/fstab 文件如何填写(转)
    在linux下PHP和Mysql环境搞事情
    nginx 添加的配置信息
    查看服务器硬件信息
    Centos下的SVN搭建
    20170413B端业务访问故障排查思路
    快速搭建BIND服务,并实现解析
    零基础学python-19.1 列表解析与序列映射函数map
    零基础学python-18.10 函数式编程工具:filter和reduce
    零基础学python-18.9 序列映射函数:map
  • 原文地址:https://www.cnblogs.com/tongx123/p/4700770.html
Copyright © 2020-2023  润新知