--TO_CHAR(N,F):将数字类型N根据模板F转换为字符类型的值。
SELECT TO_CHAR(2546.9974,'999999.99'),
TO_CHAR(2546.9874,'999'),
TO_CHAR(2546.9974,'000000.00'),
TO_CHAR(2546.9974,'999,999.00'),
TO_CHAR(2546.9974,'FM$999,999.00'),
TO_CHAR(2546.9974,'FML999,999.00')
FROM DUAL;

--TO_DATE(C,F):根据模板F将字符类型C转换为日期类型
SELECT TO_DATE('1999-1-1','YYYY-MM-DD')
FROM DUAL;

SELECT TO_DATE('2016-10-1','YYYY-MM-DD') - SYSDATE
FROM DUAL;

--TO_NUMBER(C,F):根据模板F将字符类型C转换为数字类型
SELECT TO_NUMBER('1,000.00','9,999.99')
FROM DUAL;

--通用的单行函数
--NVL():当第一个参数不为NULL,返回第一个参数。当第一个参数为NULL,返回第二个参数。两个参数的类型必须一致。
SELECT LAST_NAME,NVL(TO_CHAR(COMMISSION_PCT,'FM0.00'),'没有佣金')
FROM EMPLOYEES;

--当算术运算中出现NULL时,结果一定为NULL。
--查询employees表中所有员工的last_name,salary,commission_pct,年薪,年收入(年薪+年薪*佣金)
SELECT LAST_NAME,SALARY,COMMISSION_PCT,SALARY*12 AS 年薪,(SALARY*12) + (SALARY*12*NVL(COMMISSION_PCT,0)) AS 年收入
FROM EMPLOYEES;

--NVL2():当第一个参数不为NULL,返回第二个参数。当第一个参数为NULL,返回第三个参数。
SELECT LAST_NAME,NVL2(COMMISSION_PCT,'有佣金','没有佣金')
FROM EMPLOYEES;

--CASE表达式与DECODE()函数:分支选择
--查询employees表中所有员工的last_name,job_id,salary,新工资。当job_id为IT_PROG时,工资增加10%。当job_id为ST_CLERK时,工资增加15%。当job_id为SA_REP时,工资增加20%,其它job_id工资不变。
SELECT LAST_NAME,JOB_ID,SALARY,
CASE
WHEN JOB_ID='IT_PROG' THEN SALARY*1.10
WHEN JOB_ID='ST_CLERK' THEN SALARY*1.15
WHEN JOB_ID='SA_REP' THEN SALARY*1.20
ELSE SALARY
END AS 新工资
FROM EMPLOYEES;

--只能判断是否相等
SELECT LAST_NAME,JOB_ID,SALARY,
CASE JOB_ID
WHEN 'IT_PROG' THEN SALARY*1.10
WHEN 'ST_CLERK' THEN SALARY*1.15
WHEN 'SA_REP' THEN SALARY*1.20
ELSE SALARY
END AS 新工资
FROM EMPLOYEES;

--只能判断是否相等
SELECT LAST_NAME,JOB_ID,SALARY,
DECODE(
JOB_ID,
'IT_PROG',SALARY*1.10,
'ST_CLERK',SALARY*1.15,
'SA_REP',SALARY*1.20,
SALARY) AS 新工资
FROM EMPLOYEES;

--表
--创建表
CREATE TABLE 表名(
列名 数据类型[长度] [约束],
列名 数据类型[长度] [约束],
……
列名 数据类型[长度] [约束]
);

--Oracle常用的数据类型
/*
数字类型:NUMBER
1.整数:NUMBER(5),长度可以省略,如果省略长度默认为38位的数字。
2.浮点数:NUMBER(8,2),表示整个数字为8位,其中有两位小数。

字符类型:长度不能省略
1.CHAR:保存固定长度的字符串,当内容长度不够时,使用空格在内容的右面补齐长度。
2.VARCHAR2:保存可变长度的字符串,不会使用空格补齐长度。

日期类型:不能指定长度。
DATE:日期+时间
*/

CREATE TABLE STUDENTS(
STU_ID NUMBER(5),
STU_NAME VARCHAR2(10 CHAR),
STU_SEX CHAR(1 CHAR),
STU_BIRTHDAY DATE
);

--查看表结构:DESC 表名;

/*
数据操作
一、添加数据:INSERT INTO语句
1.向表中添加一行新的数据,并向新行中所有的列赋值。
格式:INSERT INTO 表名 VALUES(值,值,……);
例:INSERT INTO STUDENTS VALUES(1,'Tom','男',TO_DATE('1995-1-20','YYYY-MM-DD'));

2.向表中添加一行新的数据,并向新行中指定的列赋值。
格式:INSERT INTO 表名(列名,列名,……) VALUES(值,值,……);
例:INSERT INTO STUDENTS(STU_NAME,STU_ID,STU_SEX) VALUES('张三',2,'女');

3.将其它表中的数据复制到指定的表中
格式:INSERT INTO 表名[(列名,列名,……)] SELECT语句;
例:INSERT INTO STUDENTS(STU_ID,STU_NAME) SELECT EMPLOYEE_ID,LAST_NAME FROM EMPLOYEES;

二、修改数据:UPDATE语句
格式:UPDATE 表名 SET 列名=值[,列名=值,……] [WHERE 条件];
例:
UPDATE STUDENTS SET STU_BIRTHDAY=SYSDATE WHERE STU_ID=2;
UPDATE STUDENTS SET STU_SEX='男',STU_BIRTHDAY=TO_DATE('1990-2-14','YYYY-MM-DD') WHERE STU_ID=100;
UPDATE EMPLOYEES SET SALARY=SALARY+300 WHERE SALARY=2500;

三、删除数据:DELETE语句
格式:DELETE [FROM] 表名 [WHERE条件];
例:
DELETE FROM STUDENTS WHERE STU_BIRTHDAY IS NULL;

--删除STUDENTS表中STU_BIRTHDAY列中所有的数据。
UPDATE STUDENTS SET STU_BIRTHDAY=NULL;
*/

--约束
1.主键约束:PRIMARY KEY。主键不能为NULL,不能重复。通过主键可以在表中找到唯一的一行数据。
2.非空约束:NOT NULL。列不能为NULL。
3.检查约束:CHECK。向列中添加与修改数据时,检查值是否合法。

--数据库中不能出现同名的元素。

--删除表:DROP TABLE 表名;
DROP TABLE USERS;

CREATE TABLE USERS(
USER_ID NUMBER(6) PRIMARY KEY,
USER_NAME VARCHAR2(20) NOT NULL,
USER_AGE NUMBER(2) CHECK(USER_AGE BETWEEN 20 AND 50)
);

INSERT INTO USERS VALUES(1,'AA',19);

转载于:https://www.cnblogs.com/yzyqqhr/p/5716303.html

第三天20160728相关推荐

  1. Python数据分析numpy入门(三)-------numpy100题练习

    Python数据分析基础 二.numpy100题练习 二.numpy100题练习 1.Import the numpy package under the name np (★☆☆). 导入numpy ...

  2. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

  3. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    随心所意 博客园  :: 首页  :: 新随笔  :: 联系  :: 订阅   :: 管理 posts - 437, comments - 52, trackbacks - 0 公告 昵称:higir ...

  4. 伍六七带你学算法 进阶篇-三数之和

    三数之和 难度-中等 题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...

  5. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

  6. 2022-2028年中国三轴陀螺仪行业市场深度分析及投资前景分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了三轴陀螺仪行业相关概述.中国三轴陀螺仪行业运行环境.分析了中国三轴陀 ...

  7. TCP三次握手和四次挥手的解释

    基础知识 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN ...

  8. python实现简单的用户密码登录控制(输入三次就锁定用户)

    问题描述 我们经常在登录一些网站的时候,发现我们如果连续的输错好几次密码,我们的帐号就被锁定起来了,那这个过程是如何实现的呢?本程序主要就是解决以下3件事情 1.输入用户名密码 2.认证成功并显示欢迎 ...

  9. 难忘的一天——装操作系统(三)

    谈我此次装机的曲折过程,本来我是打算win7,win8.1,win10这三个系统都装个遍,这样多装几次差不多就会了.刚开始装win7.我就卡壳了. 开始装了,进入了老毛桃的界面,浏览文件选中自己优盘里 ...

最新文章

  1. [转载] 变形金刚1
  2. ios 使用gcd 显示倒计时
  3. Hadoop For Windows
  4. html css js调用dll,js调用Activex的dll
  5. 前端应该掌握的网络知识(1)
  6. 文章中嵌入代码块_如何在您的文章中嵌入多项选择测验问题
  7. C++新特性探究(三):=default、=delete
  8. 统计学习方法(—)——统计学习方法概念
  9. 深入理解虚拟机之虚拟机类加载机制
  10. 开始gentoo之旅
  11. java web宿舍管理系统源码_JavaWeb宿舍管理系统(附 演示、源码下载地址)
  12. 做品牌 在男人和女人之间玩转巧妙和平衡
  13. Atitit uke各大事业部规划 约365个事业部
  14. 若依框架使用总结说明
  15. oracle数据库答辩,数据库课程设计答辩.ppt
  16. 我对TCP协议的一点形而上的看法
  17. RTK模块性能测试分析对比-GNSS实测- RTK板卡100赫兹延迟实测及分析
  18. 如何使用Microsoft PowerPoint制作海报
  19. 算法——动态规划(DP)
  20. WAS下Sanp、heapdump、javacore

热门文章

  1. 点到直线的投影公式_2021高考复习资料:高中数学必备公式与知识点汇总
  2. linux挂载wondiws目录,linux cifs自动挂载windows硬盘或文件夹
  3. 计算机网络管理员中级理论知识试卷06,计算机网络管理员中级理论+技能完整题库及答案...
  4. 使用Socket模拟聊天室
  5. 框架 go_go异步任务框架machinery,嗖嗖的[视频]
  6. micropython esp32手册_使用ESP32控制板(二):燒錄MicroPython韌體
  7. react 组件连动效果_React组件开发中常见的陷阱
  8. 计算机网络-思维导图(4)网络层
  9. sed 删除windows下的CR/LF
  10. 钱穆的中学读书事(作者王国华)