Oracle常规操作
Oracle常规操作
创建表
CREATE TABLE t_user( id NUMBER(4), username VARCHAR2(20) NOT NULL, gender CHAR(1) DEFAULT 'M', birth DATE );
插入数据
-- 插入指定的列 INSERT INTO t_user (id,username,gender) VALUES(1,'pp0419','M'); -- 使用默认日期格式插入记录 INSERT INTO t_user (id,username,gender,birth) VALUES(2,'pp0419','M','01-SEP-89'); -- 自定义日期格式插入数据 INSERT INTO t_user (id,username,gender,birth) VALUES(1001,'盼盼','M',TO_DATE('1999-04-19','YYYY-MM-DD'));
更新数据
-- 更改id为2的username为UPDATE_panpan UPDATE t_user SET username = 'UPDATE_panpan' WHERE id = 2; -- 查看更新结果 SELECT * FROM T_USER;
删除数据
-- 删除id为1的用户 DELETE FROM T_USER WHERE id = 1; -- 删除用户表中birth为空的记录 DELETE T_USER WHERE birth IS NULL; -- 查看更新结果 SELECT * FROM T_USER;
创建Account表
表结构如下:
sql如下:
CREATE TABLE Account ( id NUMBER, -- 账户ID recommender_id NUMBER, -- 推荐人ID login_name VARCHAR2(100), -- 登录名 login_password VARCHAR2(100), -- 登录密码 status VARCHAR2(20), -- 账户状态 create_date DATE, -- 创建日期 pause_date DATE, -- 暂停日期 close_date DATE, -- 关闭日期 real_name VARCHAR2(100), -- 真实姓名 idcard_no VARCHAR2(20), -- 身份证号码 birthdate DATE, -- 出生日期 gender VARCHAR2(10), -- 性别 occupation VARCHAR2(100), -- 职业 telephone VARCHAR2(20), -- 电话号码 email VARCHAR2(100), -- 电子邮件 mailaddress VARCHAR2(200), -- 邮寄地址 zipcode VARCHAR2(10), -- 邮政编码 qq VARCHAR2(20), -- QQ号码 last_login_time DATE, -- 最后登录时间 last_login_ip VARCHAR2(50) -- 最后登录IP );
修改账务账户表:
1、修改account表的表名为t_account;
RENAME ACCOUNT TO t_account;
2、向t_account表增加一列bak,其数据类型为varchar2,长度为50;
ALTER TABLE t_account ADD bak VARCHAR2(50);
3、修改t_account表中bak列的长度为40,并增加默认值的设置,默认为“login”
4、删除t_account表中的bak列
ALTER TABLE t_account DROP COLUMN bak ;
常用日期转换
TO_CAHR()
-- 按格式显示系统时间 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM DUAL; -- 按指定格式显示时间 SELECT TO_CHAR(hiredate,'fmDD "of" MONTH YYYY') "Date Hired" FROM emp; -- 按指定格式显示时间 SELECT ename,TO_CHAR(hiredate,''yyyy-mm-dd') as "HIREDATE", TO_CHAR(hiredate,'yyyy"年"mm"月"dd') as "REVIRE" FROM emp;
常用日期函数
案例:查询一个订单从下单开始到启运需要多长时间,以月为单位
以下是本案例sql:
-- 查询一个订单从下单开始到启运需要多长时间,以月为单位 CREATE TABLE ord( custid NUMBER(4), orderdate DATE, shipdate DATE ); RENAME ord to t_ord; INSERT INTO t_ord(custid,orderdate,shipdate) VALUES(1001,'12-APR-98','10-JUN-98'); INSERT INTO t_ord(custid,orderdate,shipdate) VALUES(1001,'1-APR-98','2-JUN-98'); INSERT INTO t_ord(custid,orderdate,shipdate) VALUES(1001,'3-APR-98','4-JUN-98'); -- 查询一个订单,从开始下单到启运需要多长时间 SELECT custid,orderdate,shipdate,ROUND(MONTHS_BETWEEN(shipdate, orderdate)) as "TIME TAKEN" FROM T_ORD;
常用空值函数
-- 创建cutomer CREATE TABLE t_cutomer( cust_id NUMBER(4), -- 客户编码 cname VARCHAR2(25), -- 客户姓名 birthdate DATE,-- 客户生日 account NUMBER-- 客户账单余额 ); -- 列出客户信息,当birthdate为null时,将birthdate列的数据显示为"not available",to_chat()转换的时候出现null也进行转换 SELECT cust_id,cname, NVL(TO_CHAR(birthdate,'yyyy-mm-dd'), 'not available'), NVL(TO_CHAR(account), 'no account') FROM t_cutomer; -- 列出生日在指定年份的客户 SELECT * FROM t_cutomer WHERE TO_CHAR(birthdate,'yyyy') = '1999';
posted on 2023-08-09 16:52 JavaCoderPan 阅读(16) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南