ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> Oracle >> Oracle常用SQL语句之二:表操作语句(DDL, DML, TCL)

Oracle常用SQL语句之二:表操作语句(DDL, DML, TCL)

来源:网络整理     时间:2014-12-30     关键词:

本篇文章主要介绍了"Oracle常用SQL语句之二:表操作语句(DDL, DML, TCL)",主要涉及到方面的内容,对于Oracle感兴趣的同学可以参考一下: 1、查看当前用户下所有数据库对象SELECT * FROM TAB;2、查出当前用户所有表名SELECT UNIQUE TNAME FROM COL;3、查看表...

1、查看当前用户下所有数据库对象
SELECT * FROM TAB;

2、查出当前用户所有表名
SELECT UNIQUE TNAME FROM COL;

3、查看表结构
DESC 表名;

4、数据定义 (DDL) 部分

(1) CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等),这里只讲创建表。

创建表时的一些建议:

创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面。

创建表时可以用中文的字段名, 但最好还是用英文的字段名。

创建表时可以给字段加上默认值, 例如 DEFAULT SYSDATE。这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间。

创建表时可以给字段加上约束条件,例如:不允许重复 UNIQUE, 关键字 PRIMARY KEY。

格式:
CREATE TABLE 表名(
    字段名1 数据类型(数据大小),
    字段名2 数据类型(数据大小),
    ......
);
例如:
CREATE TABLE TEST(
    ID NUMBER(10),
    NAME VARCHAR2(50)
);

(2) ALTER (修改表, 索引, 视图等),这里只讲修改表。
修改表名
ALTER TABLE 原表名  RENAME TO 新表名;

在表的后面增加一个字段
ALTER TABLE 表名 ADD 字段名 数据类型(数据大小);

在表中删除一列
ALTER TABLE 表名 DROP COLUMN 列名;
ALTER TABLE 表名 DROP (列名);

修改表里字段的定义描述
ALTER TABLE 表名 MODIFY 字段名 数据类型(数据大小);

给表里的字段加上约束条件
ALTER TABLE 表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);--主键
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);--唯一键

把表放在或取出数据库的内存区
ALTER TABLE 表名 CACHE;
ALTER TABLE 表名 NOCACHE;

(3) DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等),这里只讲删除表。
DROP TABLE 表名;
DROP TABLE 表名 PURGE;--删除表,不进入回收站。
DROP TABLE 表名 CASCADE CONSTRAINTS;--删除表和它所有的约束条件

5、数据控制语句 (DML) 部分

(1) INSERT 往数据表里插入记录的语句

INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);
INSERT INTO 表名(字段名1, 字段名2, ……)  SELECT (字段名1, 字段名2, ……) FROM 另外的表名;

注意:

字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY'。

如果字段值里包含单引号需要进行字符串转换, 我们把它替换成两个单引号。

例如:INSERT INTO TEST(ID, NAME) VALUES(10001, 'ABC''');

字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验。

日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒;或者用字符串转换成日期型函数TO_DATE('2001-08-01','YYYY-MM-DD')。

INSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型, 方法借用ORACLE里自带的DBMS_LOB程序包。

INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号:

CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1  START  WITH  1 MAXVALUE  99999  CYCLE  NOCACHE;

其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999

INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
(2) DELETE 删除数据表里记录的语句

DELETE FROM表名 WHERE 条件;

注意:
删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成UNUSED, 如果确实要删除一个大表里的全部记录, 可以用 TRUNCATE 命令, 它可以释放占用的数据块表空间。
TRUNCATE TABLE 表名; --清除表里的所有记录,释放表空间,保留表结构。

(3) UPDATE 修改数据表里记录的语句
UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, …… WHERE 条件;

注意:

如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验。

值N超过定义的长度会出错, 最好在插入前进行长度校验。
6、事务控制 (TCL) 语句

COMMIT;--提交
ROLLBACK;--回滚

注意事项:

(1) DML语句对表都加上了行级锁,确认完成后,必须加上事物处理结束的命令COMMIT才能正式生效,否则改变不一定写入数据库里。如果想撤回这些操作, 可以用命令 ROLLBACK 复原。

(2) 在运行INSERT,DELETE和UPDATE语句前最好估算一下可能操作的记录范围,应该把它限定在较小范围内,例如一万条记录,否则ORACLE处理这个事物用到很大的回退段。程序响应慢甚至失去响应。如果记录数上十万以上这些操作。可以把这些SQL语句分段分次完成。其间加上COMMIT确认事物处理。

以上就介绍了Oracle常用SQL语句之二:表操作语句(DDL, DML, TCL),包括了方面的内容,希望对Oracle有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_102532.html

相关图片

相关文章