数据表的创建与管理
来源:互联网 发布:java中的有参构造方法 编辑:程序博客网 时间:2024/05/16 11:24
在之前所使用的全部数据表都是由系统自己提供的,但是在实际的工作之中,数据表有可能需要由用户自己来根据具体的功能需求进行设计,此时就需要使用DDL语法(DDL主要是操作数据库对象),进行数据表的创建。
1.1、常用的数据类型(SQL)
几乎只要是进行数据库的常规开发,都会使用到以下的几种类型:
• VARCHAR2(n):定义字符串,如果保存的内容在200个左右就使用此类型,其他数据库为VARCHAR;
• NUMBER:表示的是一个数字,而这个NUMBER可以表示整数或实数(小数):
|- NUMBER(n):表示最多只能存放n位的整数,可以使用INT代替;
|- NUMBER(n,m):表示存放m位小数,n-m位整数,可以使用FLOAT代替;
• DATE/TIMESTAMP:表示日期时间,其中TIMESTMAP包含毫秒数据;
• CLOB:可以保存大文本数据,例如,保存一个《红楼梦》、《三国演义》,最多可以保存4G的文字;
1.2、创建数据表
如果要进行数据表的创建操作,那么可以采用如下的语法完成:
CREATE TABLE 表名称 ( 字段 类型 [DEFAULT 默认值] , 字段 类型 [DEFAULT 默认值] , ... 字段 类型 [DEFAULT 默认值] ) ;
范例:下面创建一张数据表,创建一张成员表
CREATE TABLE member( mid NUMBER, name VARCHAR2(30) DEFAULT '无名氏', age NUMBER(3), brithday DATE DEFAULT SYSDATE);
范例:插入数据
• 全部数据都插入:
INSERT INTO member(mid,name,age,brithday) VALUES (1,'张三',20,SYSDATE) ;
• 利用默认值自动设置数据:
INSERT INTO member(mid,age) VALUES (2,30) ;
如果存在了默认值,用户没有设置的时候(或者是没有明确设置NULL)的时候自动使用默认值进行字段内容设置。
1.3、复制数据表
用户除了创建属于自己的数据表之外,也可以从已有的数据表之中复制得来,复制数据表的语法如下:
CREATE TABLE 表名称 AS 子查询 ;
范例:复制一张只包含30部门雇员信息的数据表
CREATE TABLE emp30 AS SELECT * FROM emp WHERE deptno=30 ;
范例:将任意的一个子查询设置为数据表
CREATE TABLE dept_details ASSELECT d.deptno,d.dname,d.loc,temp.count,temp.avgFROM dept d , ( SELECT deptno dno,COUNT(empno) count , AVG(sal) avg FROM emp GROUP BY deptno) tempWHERE d.deptno=temp.dno(+) ;
实际上所谓的复制表,就是将子查询之中的内容定义为数据表保存而已。
范例:要求复制一张emp数据表,但是只复制表结构,不复制数据
CREATE TABLE empnull ASSELECT * FROM emp WHERE 1=2 ;
以上的这种复制表的操作语法,只能够针对于Oracle数据库使用,其他的数据库使用其他命令。
1.4、为表重命名
首先来观察一条查询:
SELECT * FROM tab ;
此操作的主要功能是查询一个用户下的所有数据表,可以理解为数据对象查询。但问题是,发现所有用户定义的数据表都可以立刻在此上查找到,为什么呢?
那么既然可以查找到,就证明一定存在一个记录对象的信息的数据表。那么这样的信息维护就可以称为数据字典表,即:所有的数据库对象都是通过数据字典表保存信息的,在Oracle之中数据字典表一共有三类:ALL_*、DBA_*、USER_*,例如,如果要查询所有的数据表,使用“user_tables”查看。
那么,如果说现在要想更新表名称,如果对于数据字典来讲,那么相当于更新了数据字典中的某一个列的信息,但是所有的数据字典都是由Oracle自己维护的,用户是没有权利直接操作,如果要操作只能够通过命令完成。为表重命名的命令如下:
RENAME 旧的表名称 TO 新的表名称 ;
范例:将member表修改为person表
RENAME member TO person ;
不过此操作只有Oracle自己操作,会与不会意义不大,知道就行了。
提醒:如果数据库之中发生了任何的DDL操作,那么所有未提交的事务,都会自动的进行提交,即:不可再回滚任何的更新操作。
1.5、截断表
如果现在数据表之中的数据不再需要的时候,最早的做法是:“DELETE FROM 表名称”,但是这种做法实际上并不会立刻释放掉数据表所占用的各个资源(物理存储、索引资源、约束资源等)。如果现在希望表中的数据彻底清空,所有的资源彻底释放,就可以采用截断表的操作完成。语法:
TRUNCATE TABLE 表名称 ;
范例:截断person表
TRUNCATE TABLE person ;
表一旦截断,就彻底清空了,所有的数据就都消失了。
1.6、删除表
表为数据库对象,如果一张表不再使用的时候,就可以将其删除,删除表的语法如下:
DROP TABLE 表名称 ;
范例:删除person表
DROP TABLE person ;
发现很有意思的一点是,所有的表删除之后都会留一些痕迹。
1.7、闪回技术
很明显,删除表操作是一件非常可怕的事情。在Oracle 10g之前,只要执行了删除表的操作,那么数据表就彻底被删除了,连一丝后悔的机会都不给用户,所以在Oracle 10g开始,引入了一个与Windows的回收站类似的功能,即:所有被删除的数据表,先放到回收站之中,如果有需要可以恢复。
范例:查看回收站
SHOW RECYCLEBIN ;
范例:从回收站之中恢复person表
FLASHBACK TABLE person TO BEFORE DROP ;
FLASHBACK TABLE person TO BEFORE DROP ;
可是不要忘记了,在windows之中,也有不经过回收站而彻底删除文件的操作支持,为此,在Oracle中也有一种相关的操作项。
范例:彻底删除person表,不经过回收站
DROP TABLE person PURGE ;
范例:从回收站之中删除dept_details表
PURGE TABLE dept_details ;
范例:清空回收站
PURGE RECYCLEBIN ;
回收站这一功能毕竟还是属于Oracle自己的功能,但是由于一些表删除之后会有一些痕迹,所以只需要记住清空回收站的指令即可。
1.8、修改表结构
当一张数据表创建完成之后,那么有可能发现表结构无法满足当前的系统开发要求,那么在这种情况下就必须修改表的结构,修改表语法使用ALTER开始,例如:现在有如下的数据表。
CREATE TABLE member( mid NUMBER , name VARCHAR2(20)) ;INSERT INTO member(mid,name) VALUES (1,'张三') ;INSERT INTO member(mid,name) VALUES (2,'李四') ;INSERT INTO member(mid,name) VALUES (3,'王五') ;
1、 为表中增加字段
要为数据表增加字段可以使用如下的语法完成:
ALTER TABLE 表名称 ADD (字段 类型 [DEFAULT 默认值] , 字段 类型 [DEFAULT 默认值] ,..) ;
范例:为member表添加一个email字段,此字段之中不设置默认值
ALTER TABLE member ADD(email VARCHAR2(30)) ;
此时,增加的email内容全部为null。
范例:为member表添加一个sex字段,此字段设置默认值
ALTER TABLE member ADD(sex VARCHAR2(10) DEFAULT '男') ;
此时,所有的行的数据都被更新了。
2、 修改已有字段
如果表中的某些字段不合适,可以通过如下语法完成:
ALTER TABLE 表名称 MODIFY (字段 类型 [DEFAULT 默认值] , 字段 类型 [DEFAULT 默认值] ,..) ;
范例:将name字段设置一个默认值
ALTER TABLE member MODIFY (name VARCHAR2(10) DEFAULT '无名氏') ;
在实际的工作之中,所有的数据表应该在先期设计完毕,实在必须修改的时候,最好的做法是删除表而后重新建立。IBM DB2数据库是根本就不允许修改表结构的。
- 数据表的创建与管理
- 数据表的创建与管理
- 数据表的创建与管理
- 数据表的创建
- DDL-数据表的创建
- MySQL创建与查看数据表
- 数据表的基本操作之创建数据表
- 创建与已有数据表结构相同的表
- 数据库的创建与管理
- 数据库的创建与管理
- HACMP 的创建与管理
- 分支的创建与管理
- 表的创建与管理
- SQL server 创建与删除数据库,数据表,约束的创建与删除语法
- 关于创建数据表的设想
- 创建数据表的一种方法
- 数据库、数据表的创建详细
- sql server 数据库系统整理——数据表的创建和管理
- 二叉树的理解
- Socket编程模型之异步选择模型
- 学生会竞选发言稿
- 我的第一个博客
- 在Matalb中如何读取TXT文件中的数据
- 数据表的创建与管理
- JMeter监控服务器CPU、内存及I/O ——plugin插件监控被测系统资源方法
- jquery操作checkbox
- 数据库设计三大范式
- TQ210 —— s5pv210 mem_setup.S分析
- Stetho查看Afinal框架操作sqlite的数据库
- CTF训练营-包罗万象-图片里的英语
- 数据库设计三大范式
- 移植内核学习笔记3-----支持yaffs文件系统