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;

Oracle笔记-表的管理的更多相关文章

  1. Oracle undo 表空间管理 (摘DAVID)

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  2. 【Oracle】表空间管理

    --表空间管理为主.附带 权限管理.数据字典 /* 表空间是逻辑结构,数据文件是物理结构 一个表空间对应多个段segment 段可以对应多个数据文件.跨磁盘 一个段对应多个盘区 extent 一个盘区 ...

  3. Oracle创建表及管理表

    转自:https://www.linuxidc.com/Linux/2018-05/152566.htm   1. Oracle表的创建及管理 创建表包括三个要素,表名,列名,数据类型.每个表都有对应 ...

  4. Oracle笔记之用户管理

    1. 创建用户 创建用户使用create user语句,需要DBA权限: CREATE USER tom IDENTIFIED BY mot; 2. 更改用户密码 修改别人的密码需要DBA权限,或者a ...

  5. Oracle 数据表的管理

    1.创建表的的表名规则 a.必须已字母开头 b.长度不能超过30 c.不能是Oracle的保留字 d.只能使用如下字符:A-Z.a-z.1-9.#,$等 2.Oracle基本数据类型 2.1 字符型数 ...

  6. Oracle外部表的管理和应用

    外部表作为oracle的一种表类型,虽然不能像普通库表那么应用方便,但有时在数据迁移或数据加载时,也会带来极大的方便,有时比用sql*loader加载数据来的更为方便,下面就将建立和应用外部表的命令和 ...

  7. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  8. oracle 笔记

    1.Oracle认证,与其它数据库比较,安装 Oracle安装会自动的生成sys用户和system用户: (1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create databas ...

  9. Oracle建表插数据等等

    Oracle的表的管理: 表名和列的命名规则,详见 数据库命名规范 . 必须以字母开头 . 长度不能超过30个字符 . 不能使用Oracle的保留字 . 只能使用如下字符 column_name-Z, ...

随机推荐

  1. TortoiseSVN下载,安装,配置,常用操作 svn教程

    一. 首先在百度搜索并下载 TortoiseSVN 推荐从官网下载,软件分为32位和64位版本,下载时请根据自己的系统位数进行下载:

  2. 关于Json传递的日期/Date(数字)/解析

    在将DateTime类型的数据Json后传到前台展示,出现如下效果 ,在客户端如何解析呢?在jquery easyui 的字段中加一个格式化的函数调用.   { field: 'CreateTime' ...

  3. ☀【Grunt】package.json, Gruntfile.js, npm install, grunt

    npm install --registry http://registry.npm.taobao.org/ 切换源 Grunt.js 在前端项目中的实战http://beiyuu.com/grunt ...

  4. Azure 媒体服务的 RTMP 支持和实时编码器

    Cenk Dingiloglu Azure 媒体服务高级项目经理 直播流媒体目前已在公共预览版中提供,其中一项受支持的输入协议便是 RTMP.RTMP 是用于输入和分发包括直播流媒体在内的丰富媒体的一 ...

  5. (转载)javascript转自世纪流年blog

    (转载)http://www.cnblogs.com/tfe/articles/164205.html 础知识 2005年5月2日22:25星期一 [ Dhtml ] 有些时候你精通一门语言,但是会发 ...

  6. Delphi TcxTreeList 怎么设置分组

    Delphi 的TcxTreeList控件设置按种类分组,操作如下: 1. 在TcxTreeList控件中双击,打开 Bands 属性,在这里面建需要分的组,在Captions->Text 输入 ...

  7. c++通过jnihelper调用java方法刷新androidUI的注意事项

    2dx android项目需接入第三方sdk完成支付,玩家点击充值界面,通过jnihelper来调用java的方法并弹出android组件界面,之前采用直调的简单方法,顺利的把参数传到java层,但后 ...

  8. HDOJ/HDU 1015 Safecracker(深搜)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  9. Kth Ancestor 第k个祖先问题

    题目出处 这道题目出自hackerrank的8月月赛的第三题. 题目大意: 先给出一棵树 之后有三种操作分别为:加边,查询,和删除一个节点 查询的时候要给出任意节点x的第k个祖先 每组数据有t个cas ...

  10. 找回linux丢失的磁盘空间

    最近一台服务器空间总是报警,磁盘空间不足. 使用 df 命令查看,磁盘空间耗用接近 100%,将机器上过期的数据以及日志清理掉,但是空间很快又是接近 100%. 使用 du 查看,想找出磁盘空间被耗用 ...