ORACLE数据库表和字段常用操作

本文详细介绍了如何在Oracle数据库中创建、修改和管理表格,包括添加表注释、新增和修改字段、更改数据类型、重命名以及删除表和字段。还涵盖了数据插入、更新、删除和备份的方法,以及时间格式化和循环执行SQL语句等高级操作。此外,文章提到了Oracle的一些内置函数,如SYS_GUID()和SYSDATE,用于生成唯一标识符和获取当前日期时间。
摘要由CSDN通过智能技术生成

表和字段常用

新增表

CREATE TABLE TABLE_NAME
(
    --数据主键
    ID VARCHAR2(32) NOT NULL,
    --姓名
    USER_NAME VARCHAR2(32),
    --年龄
    AGE NUMBER(10,0),
    --生日
    BIRTHDAY DATE,
    --创建时间
    CREATE_TIME TIMESTAMP,
		--指定主键
  	PRIMARY KEY (ID)
);

添加表注释

COMMENT ON TABLE TABLE_NAME IS '用户信息表';

新增字段

ALTER TABLE TABLE_NAME ADD NEW_FIELD_NAME VARCHAR2(32);

添加字段注释

COMMENT ON COLUMN TABLE_NAME.FIELD_NAME IS '字段注释';

修改字段数据类型

--修改字段数据类型
ALTER TABLE TABLE_NAME MODIFY FIELD_NAME VARCHAR2(64);
--修改字段数据类型+默认值+非空
ALTER TABLE TABLE_NAME MODIFY FIELD_NAME VARCHAR2(64) DEFAULT '默认值' NOT NULL;

重命名表名

ALTER TABLE TABLE_NAME RENAME TO NEW_TABLE_NAME;

重命名字段名

ALTER TABLE TABLE_NAME RENAME COLUMN FIELD_NAME TO NEW_FIELD_NAME;

删除字段

ALTER TABLE TABLE_NAME DROP COLUMN FIELD_NAME;

删除表

DROP TABLE TABLE_NAME;

插入表数据

--给表中所有列插入数据
INSERT INTO TABLE_NAME VALUES('字段值1','字段值2','字段值3');

所有列插入数据时,数据值要按列的顺序插入。

--给表中指定列插入数据
INSERT INTO TABLE_NAME (FIELD_NAME1,FIELD_NAME3) VALUES('字段值1','字段值3');

修改表数据

UPDATE TABLE_NAME SET FIELD_NAME1='字段值1',FIELD_NAME3='字段值3' WHERE ID = '';

删除表数据

DELETE FROM TABLE_NAME WHERE ID = '';

DELETE,意思为删除,占用资源。

优点:能够快速恢复,可以选择性删除。

缺点:删除慢,大批量的删除不建议使用。

清空表数据

TRUNCATE TABLE TABLE_NAME;

TRUNCATE,意思为截断表,能够不占用资源的全部删除表。

优点:速度快。

缺点:删除后不能恢复,也不能按条件删除。

备份表数据

CREATE TABLE TABLE_NAME_BACKUP AS SELECT * FROM TABLE_NAME;

相当于把查询的结果单独存一份。

常用SQL场景

查询是否有重复的数据

--根据身份证号查询是否有重复的数据(2条及以上)
SELECT ID_NO FROM TABLE_NAME GROUP BY ID_NO HAVING COUNT(ID_NO) > 1;

时间格式化

查询条件时间格式化

SELECT * FROM TABLE_NAME WHERE TO_CHAR(CREATE_TIME,'yyyy-mm-dd') = '2023-03-02';

查询结果时间格式化

SELECT TO_CHAR(C.CREATE_TIME,'yyyy-mm-dd hh24:mi:ss') FROM TABLE_NAME C;

修改时间格式化

UPDATE TABLE_NAME C SET C.CREATE_TIME = TO_DATE('2023-03-02','yyyy-mm-dd') WHERE C.ID = '';

高级操作

循环执行SQL语句

--有时候需要大量的数据,就可以使用循环执行的方式,快速插入多条数据。

BEGIN
	FOR i IN 1..1000
  	LOOP
    	INSERT INTO TABLE_NAME(ID,NAME,AGE,REGISTER_DATE) VALUES (SYS_GUID(),'张三',18,SYSDATE);
  	END LOOP;
END;

--在FOR中控制执行的次数,1000表示执行1000次。

ORACLE内置函数

产生唯一标识符SYS_GUID()

SELECT SYS_GUID() FROM DUAL();

返回长度为32位的字符串,包括0-9和大写A-F。

执行效果:

应用场景:SQL插入数据时,自动生成32位的数据主键
 

INSERT INTO TABLE_NAME(ID,NAME,AGE) VALUES (SYS_GUID(),'张三',18);

问题解决:如果出现乱码,则使用RAWTOHEX()函数

SELECT RAWTOHEX(SYS_GUID()) FROM DUAL();

执行效果:

获取当前日期时间SYSDATE

SELECT SYSDATE FROM DUAL();

执行效果:

INSERT INTO TABLE_NAME(ID,NAME,AGE,REGISTER_DATE) VALUES (SYS_GUID(),'张三',18,SYSDATE);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值