以下SQL均在Oracle10g环境下编写
一、两个基本的查询表信息的语句:
1 查看这个用户下一共有多少表
SELECT table_name
FROM user_tables;
2 查看表结构
DESCRIBLE/DESC example
二、表创建(Table Creation)
1 用'CREATE TABLE'创建表
CREATE TABLE [schema] tablename
(columnname datatype [DEFAULT value],
columnname datatype [DEFAULT value], …);
example
CREATE TABLE student
(
stu_id VARCHAR2(20),
fname VARCHAR2(20),
lname VARCHAR2(20),
phone VARCHAR2(15)
);
Ps. 表创建后如果要重新创建需要先用DROP语句把这个表格销毁掉才能重新定义。DROP详见后面。
2 用'CREATE TABLE … AS'来创建表
CREATE TABLE tablename [(columnname, columnname,…)]
AS (subquery)
//列名可以不写出来,那样默认就是subquery选出来的名字
example:
CREATE TABLE stu2 (studentid, familyname)
AS (SELECT stu_id, fname
FROM student)
Result:
PS. 用着个方法创建表格不仅仅把结构都复制过来,里面的数据也都会原封不动的复制过来。
三、表格修改(Table modification)
1 用'ALTER'来修改表
基本语法:
ALTER TABLE tablename
ADD|MODIFY|DROP COLUMN| columnname [definition]
1.1 ALTER TABLE … ADD 命令
ALTER TABLE tablename
ADD (columnname datatype, [DEFAULT] …)
Example:
1.2 ALTER TABLE … MODIFY 命令
ALTER TABLE tablename
MODIFY (columnname datetype [DEFAULT], …)
这条命令看上去简单,但是用的时候要注意,不是所有的数据类型都能顺利的转换成其他类型的数据类型的。
这条指令能够完成的任务有如下三条:
- 改变某一列的大小(SIZE),可以变大和变小
- 改变数据类型,如将VARCHAR2 改成 CHAR
- 改变或者增设某列的默认值(DEFAULT)
还有三个很重要的规定要遵守,否则会出现错误:
- 你改成的那个类型可以比原先的数据类型小,但是必须比存在表中的数据大。比如,原先有一列数据类型为VARCHAR2(10),存的最大的为长度为8的字符串,那么你可以将这个数据类型修改为8,但是不能小于8;
- 如果一个列的数据类型是NUMBER且里面装有数据,那么你不能修改它的精度和范围;
- 改变一列的默认值并不会改变这一列中已经存在的数据。
1.3 ALTER TABLE … DROP COLUMN 命令
ALTER TABLE tablename
DROP COLUMN columnname
example
ALTER TABLE student
DROP COLUMN fname;
-
这个命令的注意事项如下:
- 表格的最后剩下的一列不能drop;
- 主码不能drop;
- 这个是不可撤销的命令。
1.4 ALTER TABLE … SET UNUSED/DROP UNUSED COLUMNS 命令
ALTER TABLE tablename
SET UNUSED (columnname)
OR
ALTER TABLE tablename
SET UNUSED COLUMN columnname;
-
这个命令很简单,它的功能跟DROP的功能几乎是一样的,但是它存在肯定有它存在的理由。当Oracle10g中如果数据量很大,执行DROP指令的时候,会消耗很多很多系统资源,会严重印象其他SQL语句的执行。这个命令的功能就是将要删除的列标记为不可用,但是并没有物理上删除,等到系统比较空闲的时候在彻底删除这些列。需要注意的是虽然说这个指令执行后并未真正删除,但也无法恢复!DROP UNUSED COLUMNS通过下面例子说明,以下举例:
-
重命名表格
RENAME oldtablename TO newtablename;
--The end, to be continued...