Oracle常用sql语句(一)

  • Sql的分类
    • DDL操作数据库表列等
      • 表基本的操作
      • 主键
      • 索引
      • 视图
    • 常用数据类型
      • 字符串类型
      • 数字类型
      • 日期类型
      • LOB类型
      • LONG类型
      • 数据转换
        • character date
        • numbercharacter
      • 通用函数
      • 条件表达式

Sql的分类


DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
SELECT
*注意:sql语句以 ; 结尾
这些都是数据库的SQL的基础知识(也是常识),一定要记住。

DDL:操作数据库、表、列等


使用的关键字:CREATEALTERDROP

表基本的操作

  • 创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表:

select * into table_new from table_old (使用旧表创建新表)

create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>

  • 删除表

drop table tablename

  • 修改表

rename 旧表名 to 新表名 修改表名

alert table tabname rename column oldColumn to newColumn 修改列名

alter table tabname add column col type 添加一列

alter table tabname drop column colname 删除一列

alter table tabname modify( ) 修改表中列的值

主键

添加主键:

Alter table tabname add primary key(col)

删除主键:
Alter table tabname drop primary key(col)

索引

创建索引:

create [unique] index idxname on tabname(col….)

删除索引:

drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

视图

创建视图:

create view viewname as select statement

删除视图:

drop view viewname

常用数据类型

字符串类型

CHAR类型 CHAR(size [BYTE | CHAR])

  CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。

VARCHAR类型

  不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。

* VARCHAR2类型*

  变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

NVARCHAR2类型

  这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。


函数:


这里写图片描述

  • 连接符||及CONCAT函数

可以连接两个列名或者常量。

注:如果姓名为中文还好,但是如果是英文的,这样连接会导致读起来比较困难,所以可以在中间加上常量“空格”;CONCAT函数符合ANSI SQL标准,所以适合更多不同的数据库,||是Oracle专有的,使用起来更简洁。

  • 格式统一:RPAD和LPAD

RPAD允许在列的右边填充一组字符,填充的字符可以为任何字符。LPAD从左边添加。

使用方式:

RPAD(string,length[,’set’])

LPAD(string,length[,’set’])

这里的string是数据库中的字符串列或常量,length是填充后的长度,set是用来填充的字符串。如果方括号中的内容省略了,会默认使用空格填充。

  • 修剪:LTRIM,RTRIM,TRIM

LTRIM和RTRIM从串的左边或右边删除不需要的字符。

使用方式:

RTRIM(string[,’set’])

LTRIM(string[,’set’])

如果没有设置要删除的值,默认删除空格。

  • 大小写转换:LOWER、UPPER和INITCAP

LOWER把串或列种的任意字母转换为小写。

UPPER与LOWER相反。

INITCAP将串或列中每个单词的首字母转换成大写。

它们经常一起使用。

使用格式:

LOWER(string)

UPPER(string)

INITCAP(string)

  • 子串:SUBSTR

使用SUBSTR函数可以提取出串的一部分。

使用格式:

SUBSTR(string,start[,count])

这个函数告诉Oracle提取string的一个子串,从start位置开始,长度为count个字符。如果不指定count,将从start开始一直到这个串结束。

  • 索引位置:INSTR

INSTR可以告诉你要搜索的字符(串)在串种的位置。

使用格式:

INSTR(string,set[,start[,occurrence]])

string为要寻找的列或常量;set为要指定的要寻找的值;start可选,默认为从串的第一个位置开始搜索;occurrence可选,为指定字符串出现的第occurrence次的位置。

  • like

    查询含下划线的名字

SELECT * FROM emp
where ename LIKE '%/_%'  escape '/';

数字类型

NUMBER类型

  NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

  P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

  S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

INTEGER类型

  INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

浮点数

BINARY_FLOAT

  BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE

  BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

  在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

FLOAT类型

  FLOAT类型也是NUMBER的子类型。

  Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。


函数:


函数说明
ROUND(date, fmt)四舍五入
TRUNC(date, fmt)截断
MOD(n1, n2)求余
CEIL(n)向上取整
FLOOR(n)向下取整
GREATEST(expr1, … exprn)返回参数中最大的数
LEAST(expr1, … exprn)返回参数中最小的数

随机数

SELECT TRUNC(dbms_random.value(a,b)) FROM dual

产生 [a,b)之间的数

日期类型

  日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

DATE类型

  DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

TIMESTAMP类型

  这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

TIMESTAMP WITH TIME ZONE类型

  这是TIMESTAMP类型的变种,它包含了时区偏移量的值


函数:


函数说明
MONTHS_BETWEEN(date1, date2)两个日期相差的月数
ADD_MONTHS(date, int)向指定日期中加上若干月数
NEXT_DAY(date, ch)指定日期的下一个日期(从星期日和1开始计算)
LAST_DAY(date)本月的最后一天
ROUND(date, fmt)日期四舍五入 fmt的值(’YEAR’,’MONTH’)
TRUNC(date, fmt)日期截断 fmt的值(’YEAR’,’MONTH’)
EXTRACT(time_unit FROM date)从date中提取time_unit指定格式的日期数据

日期格式

格式说明举例
YYYY年份的数字格式全称2017
YEAR年的英文全称twenty seventeen
MM月份(数字格式)10
MONTH月得全称10月
DY星期几星期四
DAY星期几星期四
DD一个月的第几天05
HH12小时(12)1
HH24小时(24)13
MI分钟12
SS12
  • 当前时间
SELECT SYSDATE 
FROMdual;
SELECTSYSTIMESTAMP 
FROMdual;-- 精确到毫秒
SELECTTO_CHAR( SYSDATE, 'yyyy-mm-dd hh24:mi:ss' ) 
FROMdual;
-- 昨天 今天   明天
SELECT( SYSDATE - 1 ) 昨天,SYSDATE 今天,( SYSDATE + 1 ) 明天 
FROMdual;

修改日期格式
(默认格式为’DD-MON-RR’)

SELECT * FROM v$nls_parameters;

ALTER SESSION SET nls_date_format=’yyyy-mm-dd’;
– 改回默认
ALTER SESSION SET nls_date_format=’DD-MON-RR’;

LOB类型

  内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型

CLOB 数据类型

它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符

NCLOB 数据类型

它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。

BLOB 数据类型

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。

BFILE 数据类型

二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理

LONG类型

  它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:

  • 一个表中只有一列可以为LONG型。

  • LONG列不能定义为主键或唯一约束,

  • 不能建立索引.

  • LONG数据不能指定正则表达式。

  • 函数或存储过程不能接受LONG数据类型的参数。

  • LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

数据转换

数据转换分为

  • 隐式转换 varchar《==》number oracle数据库自动转换

  • 显示转换 number《==》character《==》date

character 《==》 date

  • TO_CHAR(date[,fmt])

  • TO_DATE(ch[, fmt])

例:

SELECTTO_CHAR( SYSDATE, 'dy' ) 
FROMdual;

number《==》character

  • TO_CHAR(NUMBER[,fmt])

  • TO_NUMBER(expr[, fmt])

数字转换格式

格式说明
9数字
0
$美元符号
.小数点
,千位符

例子:

-- 查询员工的薪水:两位小数,千位符,本地货币
SELECTTO_CHAR( sal, 'L9,999.99' ) 
FROMemp;
-- ¥7,000.00

通用函数

函数说明
NVL(expr1, expr2)把列expr1的null值修改为expr2
NVL2(expr1, expr2, expr3)把列expr1的null值修改为expr2,不为null修改为expr3
NULLIF(expr1, expr2)判断expr1和expr2是否相等,相等返回null,反之返回expr2
COALESCE(expr1, … exprn)从左到右找到第一个不为null的值

条件表达式

通用的

CAST expr WHEN comparison_expr1 THEN return_expr1[WHEN comparison_expr1 THEN return_expr1ELSE else_expr]
END

例子

SELECTename,job,sal 涨前,
CASEjob WHEN '学生' THENsal + 100 WHEN '教师' THENsal + 800 ELSE sal + 50 END 张后 
FROMemp;

oracle自己的

DECODE(COLUMN,search, result [[,search, result]*, default]) oracle自己的

例子:

SELECTename,job,sal 涨前,DECODE( JOB, '学生', sal + 100, '教师', sal + 800, sal + 50 ) 张后 
FROM
emp;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Web API 实现客户端Basic(基本)认证 之简单实现

优点是逻辑简单明了、设置简单。 缺点显而易见&#xff0c;即使是BASE64后也是可见的明文&#xff0c;很容易被破解、非法利用&#xff0c;使用HTTPS是一个解决方案。 还有就是HTTP是无状态的&#xff0c;同一客户端每次都需要验证。 实现&#xff1a; 客户端在用户输入用户名及…

WPF|分享一个登录界面设计

分享一个登录界面&#xff0c;先看效果图&#xff1a;准备文中使用到了一些图标&#xff1a;我们可以从 iconfont[1]免费下载&#xff1a;代码简单说明请随手创建一个WPF项目&#xff08;.NET Framework、.NET 5\6\7皆可&#xff09;&#xff0c;使用tree /f命令看看最终的文件…

《零基础看得懂的C++入门教程 》——(6)自己动手写个函数

一、学习目标 了解C语言的自定义函数的使用方法了解C语言自定义函数的传参了解C语言自定义函数的返回值 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点…

【计算机图形学】实验:C#语言采用GDI+定义笔刷并填充图形完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对笔刷的定义,并可用定义好的笔刷填充多边形。 二、实验准备: 学习在.net环境下GDI+所提供的5种笔刷类型,掌握定义笔刷的方法和填充图形的函数,如FillRectange ( )、FillEllipse ( )等。 三、实验内容: 在.net环境中设计一个窗体…

管道模式 pipe

先放一个图&#xff0c;预则立嘛 PipelinePattern.rar 这里是 不完整的码转载于:https://www.cnblogs.com/ganmk--jy/p/5525897.html

《零基础看得懂的C++入门教程 》——(7)小数组玩起来

一、学习目标 了解数组的使用方法了解一维数组的使用方法了解一维数组与循环的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点这篇&#xff0c…

SSO 方案演进

1背景介绍 随着业务与技术的发展&#xff0c;现今比以往任何时候都更需要单点登录 SSO 身份验证。现在几乎每个网站都需要某种形式的身份验证才能访问其功能和内容。随着网站和服务数量的增加&#xff0c;集中登录系统已成为一种必要。在本文中&#xff0c;我们将讨论下 …

《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套

一、学习目标 了解二维数组的使用方法了解循环嵌套的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点这篇&#xff0c;学习方法和一些原理C与C都…

常见的Ubuntu命令30条(一)

Ubuntu命令是指在Ubuntu操作系统中用于执行各种任务和操作的命令行指令。这些命令可以用于管理系统、配置网络、安装软件、浏览文件等。Ubuntu命令通常在终端&#xff08;Terminal&#xff09;应用程序中输入并执行。 在Ubuntu中&#xff0c;有许多常用的命令和指令。以下是一…

【计算机图形学】实验:C#.net环境下的图形变换完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对图形的变换方法。 二、实验准备: 学习图形变换的基本算法,如平移、旋转、缩放等,以及在.net环境下变换图形的基本方法。 三、实验内容: 在.net环境中利用变换图形的基本方法对图形进行变换,包括平移、旋转、缩放、对称、复合变…

《零基础看得懂的C++入门教程 》——(9)结构体原来如此

一、学习目标 了解C语言的结构体的使用方法了解C语言结构体的结构的赋值了解多种C语言结构体变量的赋值方法和取值方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原…

微信小程序python token验证_微信小程序python 用户认证

按流程图来先通过wx.login()获取code,再通过我们后台配置的接口获取openid和session_key// 登录wx.login({success: res > {console.log(res)// 发送 res.code 到后台换取 openId, sessionKey, unionIdwx.request({url: api.GET_OPENID, //data: {js_code: res.code},succes…

C#实用技巧之:将图标打包进DLL并读取

概述个人的项目界面有时候需要用到很多图标&#xff0c;这些图片可以建立一个文件夹单独存放&#xff0c;但有时涉及到多台设备部署的话&#xff0c;每台设备都需要随项目一起拷贝过去&#xff0c;如果忘记了界面显示就会出问题&#xff0c;有没有更好的办法解决&#xff1f;有…

【计算机图形学】实验:VB.net环境下的绘制贝赛尔(Bezier)自由曲线完整实验操作步骤

一、实验目的 熟练掌握在.net环境下绘制贝赛尔自由曲线。 二、实验准备 学习生成贝赛尔自由曲线的基本算法,以及在.net环境下绘制贝赛尔自由曲线的基本方法(DrawBezier和DrawBeziers)。 三、实验内容 在.net环境中绘制二次、三次贝赛尔曲线。 四、实验过程及步骤 (包…

《零基础看得懂的C++入门教程 》——(10)面向对象

一、学习目标 了解C类是什么了解类对象与类型修饰一样进行创建了解了类的属性如何使用了解了类方法的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习…

浅谈JSONP

这是我在13年初写的文章&#xff0c;当时懵懵懂懂写下了自己对JSONP的理解。 文章原文 博客 欢迎订阅 提到JSONP&#xff0c;我当时在网上找了无数帖子也没有看懂它。那些文章大同小异&#xff0c;都是讲到JSONP原理以后就戛然而止&#xff0c;把我们这些初学者搞得云里雾里。所…

Asp.Net Core 7 preview 4 重磅新特性--限流

前言限流是应对流量暴增或某些用户恶意攻击等场景的重要手段之一&#xff0c;然而微软官方从未支持这一重要特性&#xff0c;AspNetCoreRateLimit这一第三方库限流库一般作为首选使用&#xff0c;然而其配置参数过于繁多&#xff0c;对使用者造成较大的学习成本。令人高兴的是&…

【计算机图形学】实验:C#.net环境下采用GDI+图形特技处理案例教程

一、实验目的 掌握在.net环境下对图形特技的处理方法。 二、实验准备 学习在.net环境下读取图像文件、改变颜色等基本知识。 三、实验内容 在.net环境中实现对图像的灰度化处理、柔化和锐化、底片滤镜、淡入淡出以及浮雕、油画和木刻等艺术效果。 四、实验过程及步骤 (…

Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分

如果开发的应用用户较多&#xff0c;那么必须保证应用在多个版本不同的设备上能够正确的运行。这就要求对各个版本比较熟悉&#xff0c;知道在什么版本中加入了什么新的功能或特性。但是Android的版本太多了&#xff0c;是个令人头疼的问题。如果想了解Android的版本差异&#…

[python opencv 计算机视觉零基础到实战] 一 opencv的helloworld

前置条件 说明&#xff1a;本系列opencv实战教程将从基础到实战&#xff0c;若只是简单学习完python也可以通过该教程完成一般的机器学习编程&#xff1b;文中将会对很多python的基础内容进行讲解&#xff0c;但由于文章定位的原因将不会赘述过多的基础内容&#xff0c;基础内…